diff --git a/misskaty/__init__.py b/misskaty/__init__.py index 881601ee..87889fea 100644 --- a/misskaty/__init__.py +++ b/misskaty/__init__.py @@ -1,5 +1,5 @@ import time -import pyromod +import pyromod.listen from logging import ERROR, INFO, FileHandler, StreamHandler, basicConfig, getLogger from pyrogram import Client diff --git a/misskaty/__main__.py b/misskaty/__main__.py index 407d7e62..42302c57 100644 --- a/misskaty/__main__.py +++ b/misskaty/__main__.py @@ -121,6 +121,7 @@ keyboard = InlineKeyboardMarkup( @app.on_message(filters.command("start", COMMAND_HANDLER)) async def start(_, message): + if not message.from_user: return if message.chat.type.value != "private": if not await db.get_chat(message.chat.id): total = await app.get_chat_members_count(message.chat.id) @@ -191,6 +192,7 @@ async def stats_callbacc(_, CallbackQuery): @app.on_message(filters.command("help", COMMAND_HANDLER)) async def help_command(_, message): + if not message.from_user: return if message.chat.type.value != "private": if not await db.get_chat(message.chat.id): total = await app.get_chat_members_count(message.chat.id) diff --git a/misskaty/plugins/admin.py b/misskaty/plugins/admin.py index fda4e1bb..d33a70de 100644 --- a/misskaty/plugins/admin.py +++ b/misskaty/plugins/admin.py @@ -74,6 +74,7 @@ async def admin_cache_func(_, cmu): @app.on_message(filters.command("purge", COMMAND_HANDLER) & filters.group) @adminsOnly("can_delete_messages") async def purge(_, message): + if not message.from_user: return try: repliedmsg = message.reply_to_message await message.delete() @@ -127,6 +128,7 @@ async def purge(_, message): @app.on_message(filters.command(["kick", "dkick"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def kickFunc(client, message): + if not message.from_user: return user_id, reason = await extract_user_and_reason(message) if not user_id: return await message.reply_text("I can't find that user.") @@ -156,6 +158,7 @@ async def kickFunc(client, message): @app.on_message(filters.command(["ban", "dban", "tban"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def banFunc(client, message): + if not message.from_user: return user_id, reason = await extract_user_and_reason(message, sender_chat=True) if not user_id: @@ -206,6 +209,7 @@ async def banFunc(client, message): @app.on_message(filters.command("unban", COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def unban_func(_, message): + if not message.from_user: return # we don't need reasons for unban, also, we # don't need to get "text_mention" entity, because # normal users won't get text_mention if the user @@ -229,6 +233,7 @@ async def unban_func(_, message): # Ban users listed in a message @app.on_message(filters.user(SUDO) & filters.command("listban", COMMAND_HANDLER) & filters.group) async def list_ban_(c, message): + if not message.from_user: return userid, msglink_reason = await extract_user_and_reason(message) if not userid or not msglink_reason: return await message.reply_text("Provide a userid/username along with message link and reason to list-ban") @@ -278,6 +283,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.group) async def list_unban_(c, message): + if not message.from_user: return userid, msglink = await extract_user_and_reason(message) if not userid or not msglink: return await message.reply_text("Provide a userid/username along with message link to list-unban") @@ -320,6 +326,7 @@ async def list_unban_(c, message): @app.on_message(filters.command("del", COMMAND_HANDLER) & filters.group) @adminsOnly("can_delete_messages") async def deleteFunc(_, message): + if not message.from_user: return if not message.reply_to_message: return await message.reply_text("Reply To A Message To Delete It") try: @@ -333,6 +340,7 @@ async def deleteFunc(_, message): @app.on_message(filters.command(["promote", "fullpromote"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_promote_members") async def promoteFunc(client, message): + if not message.from_user: return try: user_id = await extract_user(message) umention = (await app.get_users(user_id)).mention @@ -377,6 +385,7 @@ async def promoteFunc(client, message): @app.on_message(filters.command("demote", COMMAND_HANDLER) & filters.group) @adminsOnly("can_promote_members") async def demote(client, message): + if not message.from_user: return user_id = await extract_user(message) if not user_id: return await message.reply_text("I can't find that user.") @@ -403,6 +412,7 @@ async def demote(client, message): @app.on_message(filters.command(["pin", "unpin"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_pin_messages") async def pin(_, message): + if not message.from_user: return if not message.reply_to_message: return await message.reply_text("Reply to a message to pin/unpin it.") r = message.reply_to_message @@ -429,6 +439,7 @@ async def pin(_, message): @app.on_message(filters.command(["mute", "tmute"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def mute(client, message): + if not message.from_user: return try: user_id, reason = await extract_user_and_reason(message) except Exception as err: @@ -475,6 +486,7 @@ async def mute(client, message): @app.on_message(filters.command("unmute", COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def unmute(_, message): + if not message.from_user: return user_id = await extract_user(message) if not user_id: return await message.reply_text("I can't find that user.") @@ -487,6 +499,7 @@ async def unmute(_, message): @app.on_message(filters.command("ban_ghosts", COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def ban_deleted_accounts(_, message): + if not message.from_user: return chat_id = message.chat.id deleted_users = [] m = await message.reply("Finding ghosts...") @@ -510,6 +523,7 @@ async def ban_deleted_accounts(_, message): @app.on_message(filters.command(["warn", "dwarn"], COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def warn_user(client, message): + if not message.from_user: return user_id, reason = await extract_user_and_reason(message) chat_id = message.chat.id if not user_id: @@ -612,6 +626,7 @@ async def unban_user(_, cq): @app.on_message(filters.command("rmwarn", COMMAND_HANDLER) & filters.group) @adminsOnly("can_restrict_members") async def remove_warnings(_, message): + if not message.from_user: return if not message.reply_to_message: return await message.reply_text("Reply to a message to remove a user's warnings.") user_id = message.reply_to_message.from_user.id @@ -631,6 +646,7 @@ async def remove_warnings(_, message): @app.on_message(filters.command("warns", COMMAND_HANDLER) & filters.group) @capture_err async def check_warns(_, message): + if not message.from_user: return user_id = await extract_user(message) if not user_id: return await message.reply_text("I can't find that user.") @@ -647,6 +663,7 @@ async def check_warns(_, message): @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.from_user: return if not message.reply_to_message: return await message.reply_text("Reply to a message to report that user.") reply = message.reply_to_message diff --git a/misskaty/plugins/afk.py b/misskaty/plugins/afk.py index 677aec7c..ba98043c 100644 --- a/misskaty/plugins/afk.py +++ b/misskaty/plugins/afk.py @@ -185,6 +185,7 @@ async def active_afk(_, message): @app.on_message(filters.command("afkdel", COMMAND_HANDLER) & filters.group) @adminsOnly("can_change_info") async def afk_state(_, message): + if not message.from_user: return usage = "**Usage:**\n/afkdel [ENABLE|DISABLE] to enable or disable auto delete message." if len(message.command) == 1: return await kirimPesan(message, usage) diff --git a/misskaty/plugins/ytdl_download_new.py b/misskaty/plugins/ytdl_download_new.py index 9204b0e5..cc8a72ab 100644 --- a/misskaty/plugins/ytdl_download_new.py +++ b/misskaty/plugins/ytdl_download_new.py @@ -59,9 +59,10 @@ async def ytsearch(_, message): await message.reply_photo(img, caption=caption, reply_markup=markup, quote=True) -@app.on_message(filters.command(["ytdown"], COMMAND_HANDLER) & ~filters.channel) +@app.on_message(filters.command(["ytdown"], COMMAND_HANDLER)) @capture_err async def ytdownv2(_, message): + if not message.from_user: return if len(message.command) == 1: return await message.reply("Please input a valid YT-DLP Supported URL") url = message.text.split(" ", maxsplit=1)[1]