mirror of
https://github.com/yasirarism/MissKatyPyro.git
synced 2025-12-29 17:44:50 +00:00
Try fix some error
This commit is contained in:
parent
b6d5f54c18
commit
b9c3852098
24 changed files with 226 additions and 198 deletions
|
|
@ -9,5 +9,14 @@ from motor.motor_asyncio import AsyncIOMotorClient as MongoClient
|
|||
|
||||
from misskaty.vars import DATABASE_URI
|
||||
|
||||
from .afk_db import *
|
||||
from .filters_db import *
|
||||
from .imdb_db import *
|
||||
from .karma_db import *
|
||||
from .notes_db import *
|
||||
from .sangmata_db import *
|
||||
from .users_chats_db import *
|
||||
from .warn_db import *
|
||||
|
||||
mongo = MongoClient(DATABASE_URI)
|
||||
dbname = mongo.MissKatyDB
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ getLogger("pyrogram").setLevel(ERROR)
|
|||
MOD_LOAD = []
|
||||
MOD_NOLOAD = []
|
||||
HELPABLE = {}
|
||||
DL_TASK = {}
|
||||
cleanmode = {}
|
||||
botStartTime = time.time()
|
||||
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ def capture_err(func):
|
|||
try:
|
||||
return await func(client, message, *args, **kwargs)
|
||||
except ChatWriteForbidden:
|
||||
await app.leave_chat(message.chat.id)
|
||||
return
|
||||
return await app.leave_chat(message.chat.id)
|
||||
except Exception as err:
|
||||
exc = traceback.format_exc()
|
||||
error_feedback = split_limits(
|
||||
|
|
|
|||
38
misskaty/core/decorator/pyro_cooldown.py
Normal file
38
misskaty/core/decorator/pyro_cooldown.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
from pyrogram import filters
|
||||
|
||||
from datetime import datetime
|
||||
import datetime as dtime
|
||||
import asyncio, time
|
||||
|
||||
data = {}
|
||||
|
||||
async def task(msg, warn = False, sec = None):
|
||||
try:await msg.delete()
|
||||
except:pass
|
||||
if warn:
|
||||
user = msg.from_user
|
||||
ids = await msg.reply(f"Sorry {user.mention}, you're in cooldown now, wait for {sec}s to use command again..")
|
||||
await asyncio.sleep(sec)
|
||||
await ids.edit(f"Alright {user.mention}, your cooldown is over you can command again.")
|
||||
await asyncio.sleep(1)
|
||||
await ids.delete()
|
||||
|
||||
def wait(sec):
|
||||
async def ___(flt, cli, msg):
|
||||
user_id = msg.from_user.id
|
||||
if user_id in data:
|
||||
if msg.date >= data[user_id]['timestamp'] + flt.data:
|
||||
data[user_id] = {'timestamp' : msg.date, 'warned' : False}
|
||||
return True
|
||||
else:
|
||||
if not data[user_id]['warned']:
|
||||
data[user_id]['warned'] = True
|
||||
asyncio.ensure_future(task(msg, True, flt.data)) # for super accuracy use (future - time.time())
|
||||
return False # cause we dont need delete again
|
||||
|
||||
asyncio.ensure_future(task(msg))
|
||||
return False
|
||||
else:
|
||||
data.update({user_id : {'timestamp' : msg.date, 'warned' : False}})
|
||||
return True
|
||||
return filters.create(___, data=sec)
|
||||
|
|
@ -1,2 +1,13 @@
|
|||
from .misc import paginate_modules
|
||||
from .tools import bot_sys_stats
|
||||
from .ffmpeg_helper import *
|
||||
from .files import *
|
||||
from .functions import *
|
||||
from .http import *
|
||||
from .human_read import *
|
||||
from .kuso_utils import *
|
||||
from .media_helper import *
|
||||
from .misc import *
|
||||
from .pyro_progress import *
|
||||
from .stickerset import *
|
||||
from .time_gap import *
|
||||
from .tools import *
|
||||
from .ytdl_helper import *
|
||||
|
|
@ -2,7 +2,6 @@ import os
|
|||
import random
|
||||
import string
|
||||
import time
|
||||
import json
|
||||
import logging
|
||||
from http.cookies import SimpleCookie
|
||||
from urllib.parse import urlparse
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ async def admin_cache_func(_, cmu):
|
|||
|
||||
|
||||
# Purge CMD
|
||||
@app.on_message(filters.command("purge", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("purge", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_delete_messages")
|
||||
async def purge(_, message):
|
||||
try:
|
||||
|
|
@ -124,7 +124,7 @@ async def purge(_, message):
|
|||
|
||||
|
||||
# Kick members
|
||||
@app.on_message(filters.command(["kick", "dkick"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["kick", "dkick"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def kickFunc(client, message):
|
||||
user_id, reason = await extract_user_and_reason(message)
|
||||
|
|
@ -153,7 +153,7 @@ async def kickFunc(client, message):
|
|||
|
||||
|
||||
# Ban/DBan/TBan User
|
||||
@app.on_message(filters.command(["ban", "dban", "tban"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["ban", "dban", "tban"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def banFunc(client, message):
|
||||
user_id, reason = await extract_user_and_reason(message, sender_chat=True)
|
||||
|
|
@ -203,7 +203,7 @@ async def banFunc(client, message):
|
|||
|
||||
|
||||
# Unban members
|
||||
@app.on_message(filters.command("unban", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("unban", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def unban_func(_, message):
|
||||
# we don't need reasons for unban, also, we
|
||||
|
|
@ -227,7 +227,7 @@ async def unban_func(_, message):
|
|||
|
||||
|
||||
# Ban users listed in a message
|
||||
@app.on_message(filters.user(SUDO) & filters.command("listban", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.user(SUDO) & filters.command("listban", COMMAND_HANDLER) & filters.group)
|
||||
async def list_ban_(c, message):
|
||||
userid, msglink_reason = await extract_user_and_reason(message)
|
||||
if not userid or not msglink_reason:
|
||||
|
|
@ -276,7 +276,7 @@ async def list_ban_(c, message):
|
|||
|
||||
|
||||
# Unban users listed in a message
|
||||
@app.on_message(filters.user(SUDO) & filters.command("listunban", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.user(SUDO) & filters.command("listunban", COMMAND_HANDLER) & filters.group)
|
||||
async def list_unban_(c, message):
|
||||
userid, msglink = await extract_user_and_reason(message)
|
||||
if not userid or not msglink:
|
||||
|
|
@ -317,7 +317,7 @@ async def list_unban_(c, message):
|
|||
|
||||
|
||||
# Delete messages
|
||||
@app.on_message(filters.command("del", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("del", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_delete_messages")
|
||||
async def deleteFunc(_, message):
|
||||
if not message.reply_to_message:
|
||||
|
|
@ -330,7 +330,7 @@ async def deleteFunc(_, message):
|
|||
|
||||
|
||||
# Promote Members
|
||||
@app.on_message(filters.command(["promote", "fullpromote"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["promote", "fullpromote"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_promote_members")
|
||||
async def promoteFunc(client, message):
|
||||
try:
|
||||
|
|
@ -374,7 +374,7 @@ async def promoteFunc(client, message):
|
|||
|
||||
|
||||
# Demote Member
|
||||
@app.on_message(filters.command("demote", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("demote", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_promote_members")
|
||||
async def demote(client, message):
|
||||
user_id = await extract_user(message)
|
||||
|
|
@ -400,7 +400,7 @@ async def demote(client, message):
|
|||
|
||||
|
||||
# Pin Messages
|
||||
@app.on_message(filters.command(["pin", "unpin"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["pin", "unpin"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_pin_messages")
|
||||
async def pin(_, message):
|
||||
if not message.reply_to_message:
|
||||
|
|
@ -426,7 +426,7 @@ async def pin(_, message):
|
|||
|
||||
|
||||
# Mute members
|
||||
@app.on_message(filters.command(["mute", "tmute"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["mute", "tmute"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def mute(client, message):
|
||||
try:
|
||||
|
|
@ -472,7 +472,7 @@ async def mute(client, message):
|
|||
|
||||
|
||||
# Unmute members
|
||||
@app.on_message(filters.command("unmute", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("unmute", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def unmute(_, message):
|
||||
user_id = await extract_user(message)
|
||||
|
|
@ -484,7 +484,7 @@ async def unmute(_, message):
|
|||
|
||||
|
||||
# Ban deleted accounts
|
||||
@app.on_message(filters.command("ban_ghosts", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("ban_ghosts", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def ban_deleted_accounts(_, message):
|
||||
chat_id = message.chat.id
|
||||
|
|
@ -507,7 +507,7 @@ async def ban_deleted_accounts(_, message):
|
|||
await m.edit("There are no deleted accounts in this chat")
|
||||
|
||||
|
||||
@app.on_message(filters.command(["warn", "dwarn"], COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command(["warn", "dwarn"], COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def warn_user(client, message):
|
||||
user_id, reason = await extract_user_and_reason(message)
|
||||
|
|
@ -609,7 +609,7 @@ async def unban_user(_, cq):
|
|||
|
||||
|
||||
# Remove Warn
|
||||
@app.on_message(filters.command("rmwarn", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("rmwarn", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_restrict_members")
|
||||
async def remove_warnings(_, message):
|
||||
if not message.reply_to_message:
|
||||
|
|
@ -628,7 +628,7 @@ async def remove_warnings(_, message):
|
|||
|
||||
|
||||
# Warns
|
||||
@app.on_message(filters.command("warns", COMMAND_HANDLER) & ~filters.private)
|
||||
@app.on_message(filters.command("warns", COMMAND_HANDLER) & filters.group)
|
||||
@capture_err
|
||||
async def check_warns(_, message):
|
||||
user_id = await extract_user(message)
|
||||
|
|
@ -644,7 +644,7 @@ async def check_warns(_, message):
|
|||
|
||||
|
||||
# Report User in Group
|
||||
@app.on_message((filters.command("report", COMMAND_HANDLER) | filters.command(["admins", "admin"], prefixes="@")) & ~filters.private)
|
||||
@app.on_message((filters.command("report", COMMAND_HANDLER) | filters.command(["admins", "admin"], prefixes="@")) & filters.group)
|
||||
@capture_err
|
||||
async def report_user(_, message):
|
||||
if not message.reply_to_message:
|
||||
|
|
|
|||
|
|
@ -13,11 +13,13 @@ import time
|
|||
|
||||
from pyrogram import filters
|
||||
|
||||
from database.afk_db import add_afk, cleanmode_off, cleanmode_on, is_afk, remove_afk
|
||||
from database.afk_db import (add_afk, cleanmode_off, cleanmode_on, is_afk,
|
||||
remove_afk)
|
||||
from misskaty import app
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.core.decorator.permissions import adminsOnly
|
||||
from misskaty.helper.human_read import get_readable_time2
|
||||
from misskaty.core.message_utils import kirimPesan
|
||||
from misskaty.helper import get_readable_time2
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
from utils import put_cleanmode
|
||||
|
||||
|
|
@ -33,7 +35,7 @@ Just type something in group to remove AFK Status."""
|
|||
@app.on_message(filters.command(["afk"], COMMAND_HANDLER))
|
||||
async def active_afk(_, message):
|
||||
if message.sender_chat:
|
||||
return
|
||||
return await kirimPesan(message, "This feature not supported for channel.")
|
||||
user_id = message.from_user.id
|
||||
verifier, reasondb = await is_afk(user_id)
|
||||
if verifier:
|
||||
|
|
@ -176,24 +178,24 @@ async def active_afk(_, message):
|
|||
}
|
||||
|
||||
await add_afk(user_id, details)
|
||||
send = await message.reply_text(f"{message.from_user.mention} [<code>{message.from_user.id}</code>] is now AFK!.")
|
||||
send = await kirimPesan(message, f"{message.from_user.mention} [<code>{message.from_user.id}</code>] is now AFK!.")
|
||||
await put_cleanmode(message.chat.id, send.id)
|
||||
|
||||
|
||||
@app.on_message(filters.command("afkdel") & ~filters.private)
|
||||
@app.on_message(filters.command("afkdel", COMMAND_HANDLER) & filters.group)
|
||||
@adminsOnly("can_change_info")
|
||||
async def afk_state(_, message):
|
||||
usage = "**Usage:**\n/afkdel [ENABLE|DISABLE]"
|
||||
usage = "**Usage:**\n/afkdel [ENABLE|DISABLE] to enable or disable auto delete message."
|
||||
if len(message.command) == 1:
|
||||
return await message.reply_text(usage)
|
||||
return await kirimPesan(message, usage)
|
||||
chat_id = message.chat.id
|
||||
state = message.text.split(None, 1)[1].strip()
|
||||
state = state.lower()
|
||||
if state == "enable":
|
||||
await cleanmode_on(chat_id)
|
||||
await message.reply_text("Enabled auto delete AFK message.")
|
||||
await kirimPesan(message, "Enabled auto delete AFK message in this chat.")
|
||||
elif state == "disable":
|
||||
await cleanmode_off(chat_id)
|
||||
await message.reply_text("Disabled auto delete AFK message.")
|
||||
await kirimPesan(message, "Disabled auto delete AFK message.")
|
||||
else:
|
||||
await message.reply_text(usage)
|
||||
await kirimPesan(message, usage)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ from misskaty import app
|
|||
from misskaty.core.decorator.errors import capture_err
|
||||
|
||||
|
||||
# Filters Approve User by bot in channel @YMovieZNew
|
||||
@capture_err
|
||||
@app.on_chat_join_request(filters.chat(-1001686184174))
|
||||
async def approve_join_chat(c, m):
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
|||
|
||||
from database.users_chats_db import db
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import kirimPesan
|
||||
from misskaty.vars import SUPPORT_CHAT
|
||||
from utils import temp
|
||||
|
||||
|
|
@ -24,7 +25,7 @@ disabled_group = filters.create(disabled_chat)
|
|||
@app.on_message(filters.private & banned_user & filters.incoming)
|
||||
async def ban_reply(bot, message):
|
||||
ban = await db.get_ban_status(message.from_user.id)
|
||||
await message.reply(f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}')
|
||||
await kirimPesan(message, f'Sorry Dude, You are Banned to use Me. \nBan Reason: {ban["ban_reason"]}')
|
||||
|
||||
|
||||
@app.on_message(filters.group & disabled_group & filters.incoming)
|
||||
|
|
@ -32,8 +33,9 @@ async def grp_bd(bot, message):
|
|||
buttons = [[InlineKeyboardButton("Support", url=f"https://t.me/{SUPPORT_CHAT}")]]
|
||||
reply_markup = InlineKeyboardMarkup(buttons)
|
||||
vazha = await db.get_chat(message.chat.id)
|
||||
k = await message.reply(
|
||||
text=f"CHAT NOT ALLOWED 🐞\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..\nReason : <code>{vazha['reason']}</code>.",
|
||||
k = await kirimPesan(
|
||||
message,
|
||||
f"CHAT NOT ALLOWED 🐞\n\nMy admins has restricted me from working here ! If you want to know more about it contact support..\nReason : <code>{vazha['reason']}</code>.",
|
||||
reply_markup=reply_markup,
|
||||
)
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from pyrogram import filters
|
|||
|
||||
from database.users_chats_db import db
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.vars import SUDO
|
||||
from utils import broadcast_messages
|
||||
|
||||
|
|
@ -14,7 +15,7 @@ from utils import broadcast_messages
|
|||
async def broadcast(bot, message):
|
||||
users = await db.get_all_users()
|
||||
b_msg = message.reply_to_message
|
||||
sts = await message.reply_text(text="Broadcasting your messages...")
|
||||
sts = await kirimPesan(message, "Broadcasting your messages...")
|
||||
start_time = time.time()
|
||||
total_users = await db.total_users_count()
|
||||
done = 0
|
||||
|
|
@ -28,7 +29,7 @@ async def broadcast(bot, message):
|
|||
if pti:
|
||||
success += 1
|
||||
elif pti is False:
|
||||
if sh == "Bocked":
|
||||
if sh == "Blocked":
|
||||
blocked += 1
|
||||
elif sh == "Deleted":
|
||||
deleted += 1
|
||||
|
|
@ -37,6 +38,6 @@ async def broadcast(bot, message):
|
|||
done += 1
|
||||
await asyncio.sleep(2)
|
||||
if not done % 20:
|
||||
await sts.edit(f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}")
|
||||
await editPesan(sts, f"Broadcast in progress:\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}")
|
||||
time_taken = datetime.timedelta(seconds=int(time.time() - start_time))
|
||||
await sts.edit(f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}")
|
||||
await editPesan(sts, f"Broadcast Completed:\nCompleted in {time_taken} seconds.\n\nTotal Users {total_users}\nCompleted: {done} / {total_users}\nSuccess: {success}\nBlocked: {blocked}\nDeleted: {deleted}")
|
||||
|
|
|
|||
|
|
@ -15,10 +15,9 @@ from pyrogram.errors import EntitiesTooLong, MessageTooLong
|
|||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.helper.http import http
|
||||
from misskaty.helper.human_read import get_readable_file_size
|
||||
from misskaty.helper.tools import rentry
|
||||
from misskaty.helper import http, get_readable_file_size, rentry
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
||||
LIST_LINK = """
|
||||
|
|
@ -89,15 +88,15 @@ def wetransfer_bypass(url: str) -> str:
|
|||
@capture_err
|
||||
async def bypass(_, message):
|
||||
if len(message.command) == 1:
|
||||
return await message.reply(f"Gunakan perintah /{message.command[0]} untuk bypass url")
|
||||
return await kirimPesan(message, f"Gunakan perintah /{message.command[0]} untuk bypass url")
|
||||
url = message.command[1]
|
||||
urllib.parse.urlparse(url).netloc
|
||||
msg = await message.reply("Bypassing URL..", quote=True)
|
||||
msg = await kirimPesan(message, "Bypassing URL..", quote=True)
|
||||
mention = f"**Bypasser:** {message.from_user.mention} ({message.from_user.id})"
|
||||
if re.match(r"https?://(store.kde.org|www.pling.com)\/p\/(\d+)", url):
|
||||
data = await pling_bypass(url)
|
||||
try:
|
||||
await msg.edit(f"{data}\n\n{mention}")
|
||||
await editPesan(msg, f"{data}\n\n{mention}")
|
||||
except (MessageTooLong, EntitiesTooLong):
|
||||
result = await rentry(data)
|
||||
markup = InlineKeyboardMarkup(
|
||||
|
|
@ -108,13 +107,14 @@ async def bypass(_, message):
|
|||
]
|
||||
]
|
||||
)
|
||||
await msg.edit(
|
||||
await editPesan(
|
||||
msg,
|
||||
f"{result}\n\nBecause your bypassed url is too long, so your link will be pasted to rentry.\n{mention}",
|
||||
reply_markup=markup,
|
||||
disable_web_page_preview=True,
|
||||
)
|
||||
elif "we.tl" or "wetransfer.com" in url:
|
||||
data = wetransfer_bypass(url)
|
||||
await msg.edit(f"{data}\n\n{mention}")
|
||||
await editPesan(msg, f"{data}\n\n{mention}")
|
||||
else:
|
||||
await msg.edit("Unsupported URL..")
|
||||
await editPesan(msg, "Unsupported URL..")
|
||||
|
|
@ -3,13 +3,14 @@ from pyrogram.errors import MessageNotModified
|
|||
|
||||
from misskaty import app
|
||||
from misskaty.helper.http import http
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.vars import COMMAND_HANDLER, OPENAI_API
|
||||
|
||||
|
||||
@app.on_message(filters.command("ask", COMMAND_HANDLER))
|
||||
async def chatbot(c, m):
|
||||
if len(m.command) == 1:
|
||||
return await m.reply(f"Gunakan perintah <code>/{m.command[0]} [pertanyaan]</code> untuk menanyakan pertanyaan menggunakan AI.")
|
||||
return await kirimPesan(m, f"Gunakan perintah <code>/{m.command[0]} [pertanyaan]</code> untuk menanyakan pertanyaan menggunakan AI.")
|
||||
pertanyaan = m.text.split(" ", maxsplit=1)[1]
|
||||
headers = {
|
||||
"Content-Type": "application/json",
|
||||
|
|
@ -22,11 +23,11 @@ async def chatbot(c, m):
|
|||
"max_tokens": 200,
|
||||
"temperature": 0,
|
||||
}
|
||||
msg = await m.reply("Wait a moment looking for your answer..")
|
||||
msg = await kirimPesan(m, "Wait a moment looking for your answer..")
|
||||
try:
|
||||
response = (await http.post("https://api.openai.com/v1/completions", headers=headers, json=json_data)).json()
|
||||
await msg.edit(response["choices"][0]["text"])
|
||||
await editPesan(msg, response["choices"][0]["text"])
|
||||
except MessageNotModified:
|
||||
pass
|
||||
except Exception:
|
||||
await msg.edit("Yahh, sorry i can't get your answer.")
|
||||
await editPesan(msg, "Yahh, sorry i can't get your answer.")
|
||||
|
|
@ -27,7 +27,7 @@ from utils import put_cleanmode
|
|||
)
|
||||
async def chat_watcher_func(_, message):
|
||||
if message.sender_chat:
|
||||
return
|
||||
return await message.reply("This feature not supported for channel.")
|
||||
userid = message.from_user.id
|
||||
user_name = message.from_user.first_name
|
||||
if message.entities:
|
||||
|
|
|
|||
|
|
@ -25,22 +25,19 @@ import re
|
|||
|
||||
from pyrogram import filters
|
||||
|
||||
from database.filters_db import (
|
||||
delete_filter,
|
||||
get_filter,
|
||||
get_filters_names,
|
||||
save_filter,
|
||||
)
|
||||
from database.filters_db import (delete_filter, get_filter, get_filters_names,
|
||||
save_filter)
|
||||
from misskaty import app
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.core.decorator.permissions import adminsOnly
|
||||
from misskaty.core.keyboard import ikb
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.helper.functions import extract_text_and_keyb
|
||||
|
||||
__MODULE__ = "Filters"
|
||||
__HELP__ = """/filters To Get All The Filters In The Chat.
|
||||
/addfilter [FILTER_NAME] To Save A Filter (Can be a sticker or text).
|
||||
/stopfilter [FILTER_NAME] To Stop A Filter.
|
||||
/addfilter [FILTER_NAME] : To Save A Filter (Can be a sticker or text).
|
||||
/stopfilter [FILTER_NAME] : To Stop A Filter.
|
||||
|
||||
You can use markdown or html to save text too.
|
||||
"""
|
||||
|
|
@ -48,51 +45,51 @@ You can use markdown or html to save text too.
|
|||
|
||||
@app.on_message(filters.command("addfilter") & ~filters.private)
|
||||
@adminsOnly("can_change_info")
|
||||
async def save_filters(_, message):
|
||||
if len(message.command) == 1 or not message.reply_to_message:
|
||||
return await message.reply_text("**Usage:**\nReply to a text or sticker with /filter [FILTER_NAME] to save it.")
|
||||
if not message.reply_to_message.text and not message.reply_to_message.sticker:
|
||||
return await message.reply_text("__**You can only save text or stickers in filters for now.**__")
|
||||
name = message.text.split(None, 1)[1].strip()
|
||||
async def save_filters(_, m):
|
||||
if len(m.command) == 1 or not m.reply_to_message:
|
||||
return await kirimPesan(m, "**Usage:**\nReply to a text or sticker with /filter [FILTER_NAME] to save it.")
|
||||
if not m.reply_to_message.text and not m.reply_to_message.sticker:
|
||||
return await kirimPesan(m, "__**You can only save text or stickers in filters for now.**__")
|
||||
name = m.text.split(None, 1)[1].strip()
|
||||
if not name:
|
||||
return await message.reply_text("**Usage:**\n__/filter [FILTER_NAME]__")
|
||||
chat_id = message.chat.id
|
||||
_type = "text" if message.reply_to_message.text else "sticker"
|
||||
return await kirimPesan(m, "**Usage:**\n__/filter [FILTER_NAME]__")
|
||||
chat_id = m.chat.id
|
||||
_type = "text" if m.reply_to_message.text else "sticker"
|
||||
_filter = {
|
||||
"type": _type,
|
||||
"data": message.reply_to_message.text.markdown if _type == "text" else message.reply_to_message.sticker.file_id,
|
||||
"data": m.reply_to_message.text.markdown if _type == "text" else m.reply_to_message.sticker.file_id,
|
||||
}
|
||||
await save_filter(chat_id, name, _filter)
|
||||
await message.reply(f"__**Saved filter {name}.**__")
|
||||
await kirimPesan(m, f"__**Saved filter {name}.**__")
|
||||
|
||||
|
||||
@app.on_message(filters.command("filters") & ~filters.private)
|
||||
@capture_err
|
||||
async def get_filterss(_, message):
|
||||
_filters = await get_filters_names(message.chat.id)
|
||||
async def get_filterss(_, m):
|
||||
_filters = await get_filters_names(m.chat.id)
|
||||
if not _filters:
|
||||
return await message.reply_text("**No filters in this chat.**")
|
||||
return await kirimPesan(m, "**No filters in this chat.**")
|
||||
_filters.sort()
|
||||
msg = f"List of filters in {message.chat.title} - {message.chat.id}\n"
|
||||
msg = f"List of filters in {m.chat.title} - {m.chat.id}\n"
|
||||
for _filter in _filters:
|
||||
msg += f"**-** `{_filter}`\n"
|
||||
await message.reply_text(msg)
|
||||
await kirimPesan(m, msg)
|
||||
|
||||
|
||||
@app.on_message(filters.command("stopfilter") & ~filters.private)
|
||||
@adminsOnly("can_change_info")
|
||||
async def del_filter(_, message):
|
||||
if len(message.command) < 2:
|
||||
return await message.reply_text("**Usage:**\n__/stop [FILTER_NAME]__")
|
||||
name = message.text.split(None, 1)[1].strip()
|
||||
async def del_filter(_, m):
|
||||
if len(m.command) < 2:
|
||||
return await kirimPesan(m, "**Usage:**\n__/stop [FILTER_NAME]__")
|
||||
name = m.text.split(None, 1)[1].strip()
|
||||
if not name:
|
||||
return await message.reply_text("**Usage:**\n__/stop [FILTER_NAME]__")
|
||||
chat_id = message.chat.id
|
||||
return await kirimPesan(m, "**Usage:**\n__/stop [FILTER_NAME]__")
|
||||
chat_id = m.chat.id
|
||||
deleted = await delete_filter(chat_id, name)
|
||||
if deleted:
|
||||
await message.reply_text(f"**Deleted filter {name}.**")
|
||||
await kirimPesan(m, f"**Deleted filter {name}.**")
|
||||
else:
|
||||
await message.reply_text("**No such filter.**")
|
||||
await kirimPesan(m, "**No such filter.**")
|
||||
|
||||
|
||||
@app.on_message(
|
||||
|
|
|
|||
|
|
@ -15,10 +15,11 @@ from shutil import rmtree
|
|||
from pyrogram import enums, filters
|
||||
from pyrogram.errors import FloodWait
|
||||
|
||||
from misskaty import BOT_USERNAME, DL_TASK, app
|
||||
from misskaty import BOT_USERNAME, app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.core.decorator.pyro_cooldown import wait
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.helper.ffmpeg_helper import genss_link, take_ss
|
||||
from misskaty.helper.pyro_progress import progress_for_pyrogram
|
||||
from misskaty.helper import genss_link, progress_for_pyrogram, take_ss
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
||||
LOGGER = getLogger(__name__)
|
||||
|
|
@ -31,21 +32,16 @@ __HELP__ = """"
|
|||
"""
|
||||
|
||||
|
||||
@app.on_message(filters.command(["genss"], COMMAND_HANDLER))
|
||||
@app.on_message(filters.command(["genss"], COMMAND_HANDLER) & wait(30))
|
||||
@capture_err
|
||||
async def genss(client, message):
|
||||
replied = message.reply_to_message
|
||||
async def genss(client, m):
|
||||
replied = m.reply_to_message
|
||||
if replied is not None:
|
||||
vid = [replied.video, replied.document]
|
||||
media = next((v for v in vid if v is not None), None)
|
||||
if media is None:
|
||||
return await message.reply("Reply to a Telegram Video or document as video to generate screenshoot!")
|
||||
process = await message.reply_text("`Processing, please wait..`")
|
||||
|
||||
if DL_TASK.get(message.from_user.id):
|
||||
return await process.edit("Sorry to avoid flood and error, bot only process one task per user at a time.")
|
||||
if not DL_TASK.get(message.from_user.id):
|
||||
DL_TASK[message.from_user.id] = True
|
||||
return await kirimPesan(m, "Reply to a Telegram Video or document as video to generate screenshoot!")
|
||||
process = await kirimPesan(m, "`Processing, please wait..`")
|
||||
|
||||
c_time = time.time()
|
||||
the_real_download_location = await replied.download(
|
||||
|
|
@ -54,40 +50,31 @@ async def genss(client, message):
|
|||
)
|
||||
if the_real_download_location is not None:
|
||||
try:
|
||||
await client.edit_message_text(
|
||||
text=f"File video berhasil didownload dengan path <code>{the_real_download_location}</code>.",
|
||||
chat_id=message.chat.id,
|
||||
message_id=process.id,
|
||||
)
|
||||
await editPesan(process, f"File video berhasil didownload dengan path <code>{the_real_download_location}</code>.")
|
||||
await sleep(2)
|
||||
images = await take_ss(the_real_download_location)
|
||||
await client.edit_message_text(
|
||||
text="Mencoba mengupload, hasil generate screenshot..",
|
||||
chat_id=message.chat.id,
|
||||
message_id=process.id,
|
||||
)
|
||||
await client.send_chat_action(chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO)
|
||||
await editPesan(process, "Mencoba mengupload, hasil generate screenshot..")
|
||||
await client.send_chat_action(chat_id=m.chat.id, action=enums.ChatAction.UPLOAD_PHOTO)
|
||||
|
||||
try:
|
||||
await gather(
|
||||
*[
|
||||
message.reply_document(images, reply_to_message_id=message.id),
|
||||
message.reply_photo(images, reply_to_message_id=message.id),
|
||||
m.reply_document(images, reply_to_message_id=m.id),
|
||||
m.reply_photo(images, reply_to_message_id=m.id),
|
||||
]
|
||||
)
|
||||
except FloodWait as e:
|
||||
await sleep(e.value)
|
||||
await gather(
|
||||
*[
|
||||
message.reply_document(images, reply_to_message_id=message.id),
|
||||
message.reply_photo(images, reply_to_message_id=message.id),
|
||||
m.reply_document(images, reply_to_message_id=m.id),
|
||||
m.reply_photo(images, reply_to_message_id=m.id),
|
||||
]
|
||||
)
|
||||
await message.reply(
|
||||
f"☑️ Uploaded [1] screenshoot.\n\n{message.from_user.first_name} (<code>{message.from_user.id}</code>)\n#️⃣ #ssgen #id{message.from_user.id}\n\nSS Generate by @{BOT_USERNAME}",
|
||||
reply_to_message_id=message.id,
|
||||
await kirimPesan(
|
||||
m, f"☑️ Uploaded [1] screenshoot.\n\n{m.from_user.first_name} (<code>{m.from_user.id}</code>)\n#️⃣ #ssgen #id{message.from_user.id}\n\nSS Generate by @{BOT_USERNAME}",
|
||||
reply_to_message_id=m.id,
|
||||
)
|
||||
del DL_TASK[message.from_user.id]
|
||||
await process.delete()
|
||||
try:
|
||||
os.remove(images)
|
||||
|
|
@ -96,46 +83,40 @@ async def genss(client, message):
|
|||
pass
|
||||
except Exception:
|
||||
exc = traceback.format_exc()
|
||||
await message.reply(f"Gagal generate screenshot.\n\n{exc}")
|
||||
del DL_TASK[message.from_user.id]
|
||||
await kirimPesan(m, f"Gagal generate screenshot.\n\n{exc}")
|
||||
try:
|
||||
os.remove(images)
|
||||
os.remove(the_real_download_location)
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
await message.reply("Reply to a Telegram media to get screenshots from media..")
|
||||
await kirimPesan(m, "Reply to a Telegram media to get screenshots from media..")
|
||||
|
||||
|
||||
@app.on_message(filters.command(["genss_link"], COMMAND_HANDLER))
|
||||
@capture_err
|
||||
async def genss_link(client, message):
|
||||
async def genss_link(client, m):
|
||||
if len(m.command) == 1:
|
||||
return await kirimPesan(m, f"Use <code>/{m.command[0]} link</code> to generate screenshot from URL.")
|
||||
try:
|
||||
link = message.text.split(" ")[1]
|
||||
if link.startswith("https://file.yasirweb.my.id"):
|
||||
link = link.replace("https://file.yasirweb.my.id", "https://file.yasiraris.workers.dev")
|
||||
if link.startswith("https://link.yasirweb.my.id"):
|
||||
link = link.replace("https://link.yasirweb.my.id", "https://yasirrobot.herokuapp.com")
|
||||
process = await message.reply_text("`Processing, please wait..`")
|
||||
tmp_directory_for_each_user = f"./MissKaty_Genss/{str(message.from_user.id)}"
|
||||
link = m.text.split(" ")[1]
|
||||
process = await kirimPesan(m, "`Processing, please wait..`")
|
||||
tmp_directory_for_each_user = f"./MissKaty_Genss/{str(m.from_user.id)}"
|
||||
if not os.path.isdir(tmp_directory_for_each_user):
|
||||
os.makedirs(tmp_directory_for_each_user)
|
||||
images = await genss_link(process, link, tmp_directory_for_each_user, 5, 8)
|
||||
await sleep(2)
|
||||
await client.edit_message_text(
|
||||
text="Mencoba mengupload, hasil generate screenshot..",
|
||||
chat_id=message.chat.id,
|
||||
message_id=process.id,
|
||||
)
|
||||
await client.send_chat_action(chat_id=message.chat.id, action=enums.ChatAction.UPLOAD_PHOTO)
|
||||
await editPesan(process, "Mencoba mengupload, hasil generate screenshot..")
|
||||
await client.send_chat_action(chat_id=m.chat.id, action=enums.ChatAction.UPLOAD_PHOTO)
|
||||
try:
|
||||
await message.reply_media_group(images, reply_to_message_id=message.id)
|
||||
await m.reply_media_group(images, reply_to_message_id=m.id)
|
||||
except FloodWait as e:
|
||||
await sleep(e.value)
|
||||
await message.reply_media_group(images, reply_to_message_id=message.id)
|
||||
await message.reply(
|
||||
await m.reply_media_group(images, reply_to_message_id=m.id)
|
||||
await kirimPesan(
|
||||
m,
|
||||
f"☑️ Uploaded [8] screenshoot.\n\nGenerated by @{BOT_USERNAME}.",
|
||||
reply_to_message_id=message.id,
|
||||
reply_to_message_id=m.id,
|
||||
)
|
||||
await process.delete()
|
||||
try:
|
||||
|
|
@ -144,7 +125,7 @@ async def genss_link(client, message):
|
|||
pass
|
||||
except Exception:
|
||||
exc = traceback.format_exc()
|
||||
await message.reply(f"Gagal generate screenshot.\n\n{exc}")
|
||||
await kirimPesan(m, f"Gagal generate screenshot.\n\n{exc}")
|
||||
try:
|
||||
rmtree(tmp_directory_for_each_user)
|
||||
except:
|
||||
|
|
|
|||
|
|
@ -326,7 +326,7 @@ async def kickme(_, message):
|
|||
try:
|
||||
await message.chat.ban_member(message.from_user.id)
|
||||
txt = f"Pengguna {message.from_user.mention} menendang dirinya sendiri. Mungkin dia sedang frustasi 😕"
|
||||
txt += f"\n<b>Alasan</b>: {reason}" if reason else ""
|
||||
txt += f"\n<b>Alasan</b>: {reason}" if reason else "-"
|
||||
await message.reply_text(txt)
|
||||
await message.chat.unban_member(message.from_user.id)
|
||||
except RPCError as ef:
|
||||
|
|
|
|||
|
|
@ -12,28 +12,23 @@ import time
|
|||
from os import remove as osremove
|
||||
|
||||
from pyrogram import filters
|
||||
from pyrogram.errors import FloodWait
|
||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
|
||||
from misskaty import app, DL_TASK
|
||||
from misskaty.helper.media_helper import post_to_telegraph, runcmd
|
||||
from misskaty.helper.pyro_progress import progress_for_pyrogram
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.core.decorator.pyro_cooldown import wait
|
||||
from misskaty.helper import post_to_telegraph, runcmd, progress_for_pyrogram
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
from utils import get_file_id
|
||||
|
||||
|
||||
@app.on_message(filters.command(["mediainfo"], COMMAND_HANDLER))
|
||||
@app.on_message(filters.command(["mediainfo"], COMMAND_HANDLER) & wait(30))
|
||||
async def mediainfo(client, message):
|
||||
if message.reply_to_message and message.reply_to_message.media:
|
||||
process = await message.reply_text("`Sedang memproses, lama waktu tergantung ukuran file kamu...`", quote=True)
|
||||
process = await kirimPesan(message, "`Sedang memproses, lama waktu tergantung ukuran file kamu...`", quote=True)
|
||||
file_info = get_file_id(message.reply_to_message)
|
||||
if file_info is None:
|
||||
return await process.edit_text("Balas ke format media yang valid")
|
||||
|
||||
if DL_TASK.get(message.from_user.id):
|
||||
return await process.edit("Sorry to avoid flood and error, bot only process one task per user at a time.")
|
||||
if not DL_TASK.get(message.from_user.id):
|
||||
DL_TASK[message.from_user.id] = 1
|
||||
return await editPesan(process, "Balas ke format media yang valid")
|
||||
|
||||
c_time = time.time()
|
||||
file_path = await message.reply_to_message.download(
|
||||
|
|
@ -54,11 +49,7 @@ async def mediainfo(client, message):
|
|||
text_ = file_info.message_type
|
||||
link = post_to_telegraph(title, body_text)
|
||||
markup = InlineKeyboardMarkup([[InlineKeyboardButton(text=text_, url=link)]])
|
||||
try:
|
||||
await message.reply("ℹ️ <b>MEDIA INFO</b>", reply_markup=markup, quote=True)
|
||||
except FloodWait as f:
|
||||
await asyncio.sleep(f.value)
|
||||
del DL_TASK[message.from_user.id]
|
||||
await kirimPesan(message, "ℹ️ <b>MEDIA INFO</b>", reply_markup=markup, quote=True)
|
||||
await process.delete()
|
||||
try:
|
||||
osremove(file_path)
|
||||
|
|
@ -67,11 +58,11 @@ async def mediainfo(client, message):
|
|||
else:
|
||||
try:
|
||||
link = message.text.split(" ", maxsplit=1)[1]
|
||||
process = await message.reply_text("`Mohon tunggu sejenak...`")
|
||||
process = await kirimPesan(message, "`Mohon tunggu sejenak...`")
|
||||
try:
|
||||
output = subprocess.check_output(["mediainfo", f"{link}"]).decode("utf-8")
|
||||
except Exception:
|
||||
return await process.edit("Sepertinya link yang kamu kirim tidak valid, pastikan direct link dan bisa di download.")
|
||||
return await editPesan(process, "Sepertinya link yang kamu kirim tidak valid, pastikan direct link dan bisa di download.")
|
||||
title = "MissKaty Bot Mediainfo"
|
||||
body_text = f"""
|
||||
<pre>{output}</pre>
|
||||
|
|
@ -92,4 +83,4 @@ async def mediainfo(client, message):
|
|||
)
|
||||
await process.delete()
|
||||
except IndexError:
|
||||
return await message.reply_text("Gunakan command /mediainfo [link], atau reply telegram media dengan /mediainfo.")
|
||||
return await kirimPesan(message, "Gunakan command /mediainfo [link], atau reply telegram media dengan /mediainfo.")
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ async def job_open_ymoviez():
|
|||
|
||||
|
||||
@app.on_callback_query(filters.regex(r"^nightmd$"))
|
||||
async def _callbackanightmd(c: Client, q: CallbackQuery):
|
||||
async def callbackanightmd(c: Client, q: CallbackQuery):
|
||||
await q.answer(
|
||||
f"🔖 Hai, Aku {BOT_USERNAME} dibuat menggunakan Framework Pyrogram v{__version__} dan Python 3.10.\n\nMau buat bot seperti ini? Yuuk belajar di @botindonesia\nOwner: @YasirArisM",
|
||||
show_alert=True,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ from pyrogram import filters
|
|||
from telegraph import upload_file
|
||||
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.helper.http import http
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
|
@ -21,15 +22,15 @@ __HELP__ = "/ocr [reply to photo] - Read Text From Image"
|
|||
|
||||
@app.on_message(filters.command(["ocr"], COMMAND_HANDLER))
|
||||
@capture_err
|
||||
async def ocr(_, message):
|
||||
reply = message.reply_to_message
|
||||
async def ocr(_, m):
|
||||
reply = m.reply_to_message
|
||||
if not reply or not reply.photo and not reply.sticker:
|
||||
return await message.reply_text(f"Reply photo with /{message.command[0]} command")
|
||||
msg = await message.reply("Reading image...")
|
||||
return await kirimPesan(m, f"Reply photo with /{m.command[0]} command")
|
||||
msg = await kirimPesan(m, "Reading image...")
|
||||
try:
|
||||
file_path = await reply.download()
|
||||
if reply.sticker:
|
||||
file_path = await reply.download(f"ocr{message.from_user.id}.jpg")
|
||||
file_path = await reply.download(f"ocr_{m.from_user.id}.jpg")
|
||||
response = upload_file(file_path)
|
||||
url = f"https://telegra.ph{response[0]}"
|
||||
req = (
|
||||
|
|
@ -38,8 +39,8 @@ async def ocr(_, message):
|
|||
follow_redirects=True,
|
||||
)
|
||||
).json()
|
||||
await msg.edit(f"Hasil OCR:\n<code>{req['text']}</code>")
|
||||
await editPesan(msg, f"Hasil OCR:\n<code>{req['text']}</code>")
|
||||
os.remove(file_path)
|
||||
except Exception as e:
|
||||
await msg.edit(str(e))
|
||||
await editPesan(msg, str(e))
|
||||
os.remove(file_path)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
from misskaty import app
|
||||
from pyrogram import filters
|
||||
|
||||
from database.sangmata_db import *
|
||||
from misskaty import app
|
||||
from misskaty.core.decorator.permissions import adminsOnly
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
||||
__MODULE__ = "SangMata"
|
||||
|
|
@ -37,6 +39,7 @@ async def cek_mataa(_, m):
|
|||
@app.on_message(
|
||||
filters.group & filters.command("sangmata_set", COMMAND_HANDLER) & ~filters.bot & ~filters.via_bot
|
||||
)
|
||||
@adminsOnly("can_change_info")
|
||||
async def set_mataa(_, m):
|
||||
if len(m.command) == 1:
|
||||
return await m.reply(f"Use <code>/{m.command[0]} on</code>, to enable sangmata. If you want disable, you can use off parameter.")
|
||||
|
|
|
|||
|
|
@ -6,13 +6,12 @@ import html
|
|||
import regex
|
||||
from pyrogram import filters
|
||||
from pyrogram.errors import MessageEmpty
|
||||
from pyrogram.types import Message
|
||||
|
||||
from misskaty import app
|
||||
|
||||
|
||||
@app.on_message(filters.regex(r"^s/(.+)?/(.+)?(/.+)?") & filters.reply)
|
||||
async def sed(c: app, m: Message):
|
||||
async def sed(c, m):
|
||||
exp = regex.split(r"(?<![^\\]\\)/", m.text)
|
||||
pattern = exp[1]
|
||||
replace_with = exp[2].replace(r"\/", "/")
|
||||
|
|
|
|||
|
|
@ -5,22 +5,15 @@ import shutil
|
|||
import tempfile
|
||||
|
||||
from PIL import Image
|
||||
from pyrogram import emoji, filters
|
||||
from pyrogram import emoji, filters, enums
|
||||
from pyrogram.errors import BadRequest, PeerIdInvalid, StickersetInvalid
|
||||
from pyrogram.file_id import FileId
|
||||
from pyrogram.raw.functions.messages import GetStickerSet, SendMedia
|
||||
from pyrogram.raw.functions.stickers import (
|
||||
AddStickerToSet,
|
||||
CreateStickerSet,
|
||||
RemoveStickerFromSet,
|
||||
)
|
||||
from pyrogram.raw.types import (
|
||||
DocumentAttributeFilename,
|
||||
InputDocument,
|
||||
InputMediaUploadedDocument,
|
||||
InputStickerSetItem,
|
||||
InputStickerSetShortName,
|
||||
)
|
||||
from pyrogram.raw.functions.stickers import (AddStickerToSet, CreateStickerSet,
|
||||
RemoveStickerFromSet)
|
||||
from pyrogram.raw.types import (DocumentAttributeFilename, InputDocument,
|
||||
InputMediaUploadedDocument,
|
||||
InputStickerSetItem, InputStickerSetShortName)
|
||||
from pyrogram.types import InlineKeyboardButton, InlineKeyboardMarkup
|
||||
|
||||
from misskaty import BOT_USERNAME, app
|
||||
|
|
@ -30,7 +23,7 @@ from misskaty.vars import COMMAND_HANDLER, LOG_CHANNEL
|
|||
__MODULE__ = "Stickers"
|
||||
__HELP__ = """
|
||||
/kang [Reply to sticker] - Add sticker to your pack.
|
||||
/unkang [Reply to sticker] - Remove sticker from your pack.
|
||||
/unkang [Reply to sticker] - Remove sticker from your pack (Only can remove sticker that added by this bot.).
|
||||
/getsticker - Convert sticker to png.
|
||||
/stickerid - View sticker ID
|
||||
"""
|
||||
|
|
@ -125,8 +118,8 @@ async def kang_sticker(c, m):
|
|||
# mime_type: image/webp
|
||||
resize = True
|
||||
elif reply.document.mime_type in (
|
||||
MessageMediaType.VIDEO,
|
||||
MessageMediaType.ANIMATION,
|
||||
enums.MessageMediaType.VIDEO,
|
||||
enums.MessageMediaType.ANIMATION,
|
||||
):
|
||||
# mime_type: application/video
|
||||
videos = True
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from PIL import Image
|
|||
from pyrogram import filters
|
||||
|
||||
from misskaty import app
|
||||
from misskaty.core.message_utils import *
|
||||
from misskaty.core.decorator.errors import capture_err
|
||||
from misskaty.helper.http import http
|
||||
from misskaty.vars import COMMAND_HANDLER
|
||||
|
|
@ -19,19 +20,19 @@ __HELP__ = """
|
|||
|
||||
@app.on_message(filters.command(["webss"], COMMAND_HANDLER))
|
||||
@capture_err
|
||||
async def take_ss(_, message):
|
||||
if len(message.command) == 1:
|
||||
return await message.reply("Give A Url To Fetch Screenshot.")
|
||||
url = message.command[1] if message.command[1].startswith("http") else f"https://{message.command[1]}"
|
||||
filename = f"imageToSave_{message.from_user.id}.png"
|
||||
m = await message.reply("Capturing screenshot...")
|
||||
async def take_ss(_, m):
|
||||
if len(m.command) == 1:
|
||||
return await kirimPesan(m, "Give A Url To Fetch Screenshot.")
|
||||
url = m.command[1] if m.command[1].startswith("http") else f"https://{m.command[1]}"
|
||||
filename = f"webSS_{m.from_user.id}.jpg"
|
||||
msg = await m.reply("Capturing screenshot...")
|
||||
try:
|
||||
photo = (await http.get(f"https://yasirapi.eu.org/webss?url={url}")).json()
|
||||
img = Image.open(BytesIO(base64.decodebytes(bytes(photo["result"], "utf-8"))))
|
||||
img.save(filename)
|
||||
m = await m.edit("Uploading...")
|
||||
await gather(*[message.reply_document(filename), message.reply_photo(filename)])
|
||||
await m.delete()
|
||||
await editPesan(msg, "Uploading...")
|
||||
await gather(*[m.reply_document(filename), m.reply_photo(filename)])
|
||||
await hapusPesan(m)
|
||||
os.remove(filename)
|
||||
except Exception as e:
|
||||
await m.edit(f"Failed To Take Screenshot. {str(e)}")
|
||||
await editPesan(msg, f"Failed To Take Screenshot. {str(e)}")
|
||||
|
|
|
|||
Loading…
Reference in a new issue