diff --git a/example-config.yaml b/example-config.yaml
index 05332b0..c57d535 100644
--- a/example-config.yaml
+++ b/example-config.yaml
@@ -14,3 +14,4 @@ config:
log_user_joins: false
log_user_adds: true
log_reports: true
+ log_forwards: true
diff --git a/sukuinote/plugins/log_forwards.py b/sukuinote/plugins/log_forwards.py
new file mode 100644
index 0000000..21674d1
--- /dev/null
+++ b/sukuinote/plugins/log_forwards.py
@@ -0,0 +1,75 @@
+import html
+import asyncio
+from pyrogram import Client, filters
+from .. import config, slave, log_errors, app_user_ids
+
+logged = set()
+lock = asyncio.Lock()
+
+@Client.on_message(filters.forwarded & (filters.chat | filters.channel))
+@log_errors
+async def log_reports(client, message):
+ if not config['config'].get('log_forwards'):
+ return
+ if message.from_user.id in app_user_ids:
+ return
+ for i in app_user_ids:
+ if message.forward_from:
+ if i == message.forward_from.id:
+ forwardee = app_user_ids[i]
+ break
+ j = app_user_ids[i].first_name
+ if app_user_ids[i].last_name:
+ j += f' {app_user_ids[i].last_name}'
+ if j == message.forward_sender_name:
+ forwardee = app_user_ids[i]
+ break
+ else:
+ return
+ identifier = (message.chat.id, message.message_id)
+ async with lock:
+ if identifier in logged:
+ return
+ chat_text = html.escape(message.chat.title)
+ if message.chat.username:
+ chat_text = f'{chat_text}'
+ text = f'Forwarded Event\n- Chat: {chat_text} '
+ if message.chat.is_verified:
+ chat_text += '[VERIFIED]
'
+ if message.chat.is_support:
+ chat_text += '[SUPPORT]
'
+ if message.chat.is_scam:
+ chat_text += '[SCAM]
'
+ text += f'[{message.chat.id}
]\n- Forwarder: '
+ user_text = message.from_user.first_name
+ if message.from_user.last_name:
+ user_text += f' {message.from_user.last_name}'
+ user_text = '[DELETED]
' if message.from_user.is_deleted else html.escape(user_text or 'Empty???')
+ if message.from_user.is_verified:
+ user_text += ' [VERIFIED]
'
+ if message.from_user.is_support:
+ user_text += ' [SUPPORT]
'
+ if message.from_user.is_scam:
+ user_text += ' [SCAM]
'
+ text += f'{user_text} [{message.from_user.id}
]\n'
+ text += f'- Message'
+ mtext = (message.text or message.caption or '').strip()
+ if mtext:
+ text += ':'
+ text += ''
+ if mtext:
+ text += f' {html.escape(mtext.strip()[:2000])}'
+ text += '- Forwardee: '
+ user_text = forwardee.first_name
+ if forwardee.last_name:
+ user_text += f' {forwardee.last_name}'
+ user_text = '[DELETED]
' if forwardee.is_deleted else html.escape(user_text or 'Empty???')
+ if forwardee.is_verified:
+ user_text += ' [VERIFIED]
'
+ if forwardee.is_support:
+ user_text += ' [SUPPORT]
'
+ if forwardee.is_scam:
+ user_text += ' [SCAM]
'
+ text += f'{user_text} [{forwardee.id}
]'
+ await slave.send_message(config['config']['log_chat'], text, disable_web_page_preview=True)
+ logged.add(identifier)