diff --git a/sukuinote/plugins/log_forwards.py b/sukuinote/plugins/log_forwards.py index f10fe4c..6cf0f50 100644 --- a/sukuinote/plugins/log_forwards.py +++ b/sukuinote/plugins/log_forwards.py @@ -1,10 +1,11 @@ import html import asyncio +from collections import defaultdict from pyrogram import Client, filters from pyrogram.errors.exceptions.flood_420 import FloodWait from .. import config, slave, log_errors, app_user_ids -logged = set() +logged = defaultdict(set) lock = asyncio.Lock() @Client.on_message(~filters.forwarded & ~filters.chat(config['config']['log_chat']) & filters.incoming & filters.forwarded & (filters.group | filters.channel)) @@ -27,9 +28,8 @@ async def log_forwards(client, message): break else: return - identifier = (message.chat.id, message.message_id) async with lock: - if identifier in logged: + if message.message_id not in logged[message.chat.id]: return chat_text = html.escape(message.chat.title) if message.chat.username: @@ -94,4 +94,4 @@ async def log_forwards(client, message): await asyncio.sleep(ex.x + 1) else: break - logged.add(identifier) + logged[message.chat.id].add(message.message_id) diff --git a/sukuinote/plugins/log_reports.py b/sukuinote/plugins/log_reports.py index 6eb1d80..7053632 100644 --- a/sukuinote/plugins/log_reports.py +++ b/sukuinote/plugins/log_reports.py @@ -1,10 +1,11 @@ import html import asyncio +from collections import defaultdict from pyrogram import Client, filters from pyrogram.errors.exceptions.flood_420 import FloodWait from .. import config, slave, log_errors -reported = set() +reported = defaultdict(set) lock = asyncio.Lock() @Client.on_message(~filters.forwarded & ~filters.chat(config['config']['log_chat']) & filters.regex(r'(?:^|\s+)@admins?(?:$|\W+)|^[/!](?:report|admins?)(?:$|\W+)') & filters.group) @@ -12,9 +13,8 @@ lock = asyncio.Lock() async def log_reports(client, message): if not config['config']['log_reports']: return - identifier = (message.chat.id, message.message_id) async with lock: - if identifier in reported: + if message.message_id in reported[message.chat.id]: return chat_text = html.escape(message.chat.title) if message.chat.username: @@ -99,5 +99,5 @@ async def log_reports(client, message): await asyncio.sleep(ex.x + 1) else: break - reported.add(identifier) - reported.add((reply.chat.id, reply.message_id)) + reported[message.chat.id].add(message.message_id) + reported[reply.chat.id].add(reply.message_id) diff --git a/sukuinote/plugins/log_user_joins.py b/sukuinote/plugins/log_user_joins.py index 5363641..f760201 100644 --- a/sukuinote/plugins/log_user_joins.py +++ b/sukuinote/plugins/log_user_joins.py @@ -1,5 +1,6 @@ import html import asyncio +from collections import defaultdict from pyrogram import Client, ContinuePropagation from pyrogram.errors.exceptions.flood_420 import FloodWait from pyrogram.raw.types import UpdateNewChannelMessage, UpdateNewMessage, MessageService, PeerChat, PeerChannel, MessageActionChatAddUser, MessageActionChatJoinedByLink, PeerUser @@ -11,7 +12,7 @@ def sexy_user_name(user): text += ' ' + user.last_name return f'{"[DELETED]" if user.deleted else html.escape(text or "Empty???")} [{user.id}]' -handled = set() +handled = defaultdict(set) lock = asyncio.Lock() @Client.on_raw_update() @log_errors @@ -45,7 +46,7 @@ async def log_user_joins(client, update, users, chats): atext = f'{atext}' text += f"{atext} [{sexy_chat_id}]\n" async with lock: - if (sexy_chat_id, message.id) not in handled: + if message.id not in handled[sexy_chat_id]: if isinstance(message.from_id, PeerUser): adder = sexy_user_name(users[message.from_id.user_id]) else: @@ -65,6 +66,6 @@ async def log_user_joins(client, update, users, chats): await asyncio.sleep(ex.x + 1) else: break - handled.add((sexy_chat_id, message.id)) + handled[sexy_chat_id].add(message.id) return raise ContinuePropagation