Update chatbot/plugins/chat.py
Browse files- chatbot/plugins/chat.py +115 -7
chatbot/plugins/chat.py
CHANGED
@@ -29,15 +29,14 @@ import subprocess
|
|
29 |
import sys
|
30 |
import time
|
31 |
import traceback
|
32 |
-
from gpytranslate import SyncTranslator
|
33 |
-
from io import BytesIO
|
34 |
-
from types import ModuleType
|
35 |
-
from typing import Dict, List, Optional, Tuple, Union
|
36 |
-
|
37 |
import requests
|
38 |
-
import time
|
39 |
import json
|
40 |
import io
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
from PIL import Image
|
43 |
from pyrogram import *
|
@@ -282,6 +281,10 @@ async def check_steal_channel_id(client, event: ChatMemberUpdated):
|
|
282 |
user_id = event.new_chat_member.promoted_by.id if event.new_chat_member else None
|
283 |
if not user_id or event.chat.username is None:
|
284 |
return
|
|
|
|
|
|
|
|
|
285 |
keyboard = []
|
286 |
keyboard.append([
|
287 |
InlineKeyboardButton("🔎 View Channel", url=f"https://t.me/{event.chat.username}"),
|
@@ -319,6 +322,11 @@ async def cancel_(client, callback_query):
|
|
319 |
@Client.on_callback_query(filters.regex("^deletemydatagm$"))
|
320 |
async def deletemydata(client, callback):
|
321 |
user_id = callback.from_user.id
|
|
|
|
|
|
|
|
|
|
|
322 |
delm = await db._clear_chatbot_database(user_id)
|
323 |
if delm:
|
324 |
await callback.edit_message_text(delm)
|
@@ -328,6 +336,11 @@ async def deletemydata(client, callback):
|
|
328 |
@Client.on_callback_query(filters.regex("^photo_(\d+)$"))
|
329 |
async def modephoto(client, callback):
|
330 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
331 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
332 |
if not data:
|
333 |
return await callback.answer("Can't found user", True)
|
@@ -356,6 +369,11 @@ async def modephoto(client, callback):
|
|
356 |
@Client.on_callback_query(filters.regex("^menutools_(\d+)$"))
|
357 |
async def menu_tools(client, callback):
|
358 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
359 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
360 |
if not data:
|
361 |
return await callback.answer("Can't found user", True)
|
@@ -382,6 +400,11 @@ async def menu_tools(client, callback):
|
|
382 |
@Client.on_callback_query(filters.regex("^autopost_(\d+)$"))
|
383 |
async def auto_post_channel(client, callback):
|
384 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
385 |
try:
|
386 |
backup_chat = await db._get_chatbot_chat_from_db(user_id)
|
387 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
@@ -428,6 +451,11 @@ async def auto_post_channel(client, callback):
|
|
428 |
@Client.on_callback_query(filters.regex("^genprompt_(\d+)$"))
|
429 |
async def geminigen_prompt(client, callback):
|
430 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
431 |
captions = ""
|
432 |
file_path = "gemini-native-image.png"
|
433 |
try:
|
@@ -511,6 +539,11 @@ async def geminigen_prompt(client, callback):
|
|
511 |
@Client.on_callback_query(filters.regex("^fluxprompt_(\d+)$"))
|
512 |
async def flux_prompt(client, callback):
|
513 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
514 |
file_path = None
|
515 |
file_photo = None
|
516 |
try:
|
@@ -603,6 +636,11 @@ async def flux_prompt(client, callback):
|
|
603 |
@Client.on_callback_query(filters.regex("^removerbg_(\d+)$"))
|
604 |
async def remover_bg(client, callback):
|
605 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
606 |
try:
|
607 |
data = await db.backup_chatbot.find_one({"user_id": int(user_id)})
|
608 |
if not data:
|
@@ -643,6 +681,10 @@ async def closeed(client, callback):
|
|
643 |
@Client.on_callback_query(filters.regex("^memory_(\d+)$"))
|
644 |
async def memory_updated(client, callback):
|
645 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
646 |
|
647 |
if message_memory_state.get(callback.message.id, False):
|
648 |
return await callback.answer("Memory already updated!", show_alert=False)
|
@@ -677,6 +719,11 @@ async def memory_updated(client, callback):
|
|
677 |
@Client.on_callback_query(filters.regex("^tr_(\d+)_(\w+)$"))
|
678 |
async def terjemahkan(client, callback):
|
679 |
user_id, targetlang = callback.matches[0].groups()
|
|
|
|
|
|
|
|
|
|
|
680 |
try:
|
681 |
if user_id == 0:
|
682 |
return await callback.answer("Server busy try again later", True)
|
@@ -708,6 +755,11 @@ async def terjemahkan(client, callback):
|
|
708 |
@Client.on_callback_query(filters.regex("^photomode_(\d+)_(\w+)$"))
|
709 |
async def photo_mode(client, callback):
|
710 |
user_id, mode = callback.matches[0].groups()
|
|
|
|
|
|
|
|
|
|
|
711 |
data = await db.backup_chatbot.find_one({"user_id": int(user_id)})
|
712 |
if not data:
|
713 |
return await callback.answer("Can't found user", True)
|
@@ -731,6 +783,11 @@ async def photo_mode(client, callback):
|
|
731 |
@Client.on_callback_query(filters.regex("^trmulti_(\d+)$"))
|
732 |
async def multiple_langagues(client, callback):
|
733 |
user_id = int(callback.matches[0].group(1))
|
|
|
|
|
|
|
|
|
|
|
734 |
keyboard = []
|
735 |
keyboard.append([
|
736 |
InlineKeyboardButton("🇦🇪", callback_data=f"tr_{user_id}_ar"),
|
@@ -781,6 +838,11 @@ def anonymous_user(user_id: int = None):
|
|
781 |
@Client.on_callback_query(filters.regex("^response_(\d+)_(\w+)$"))
|
782 |
async def response_call(client, callback):
|
783 |
user_id, chat = callback.matches[0].groups()
|
|
|
|
|
|
|
|
|
|
|
784 |
keyboard = InlineKeyboardMarkup(
|
785 |
[
|
786 |
[
|
@@ -848,6 +910,10 @@ async def vote(client, callback_query):
|
|
848 |
unlike_counts[message_id] = set()
|
849 |
|
850 |
if action == "like":
|
|
|
|
|
|
|
|
|
851 |
if user_id in like_counts[message_id]:
|
852 |
like_counts[message_id].remove(user_id)
|
853 |
else:
|
@@ -857,6 +923,10 @@ async def vote(client, callback_query):
|
|
857 |
unlike_counts[message_id].remove(user_id)
|
858 |
|
859 |
elif action == "unlike":
|
|
|
|
|
|
|
|
|
860 |
if user_id in unlike_counts[message_id]:
|
861 |
unlike_counts[message_id].remove(user_id)
|
862 |
else:
|
@@ -876,6 +946,9 @@ async def vote(client, callback_query):
|
|
876 |
& ~filters.forwarded
|
877 |
)
|
878 |
async def startbot(client: Client, message: Message):
|
|
|
|
|
|
|
879 |
buttons = [
|
880 |
[
|
881 |
InlineKeyboardButton(
|
@@ -933,6 +1006,10 @@ async def chatbot_talk(client: Client, message: Message):
|
|
933 |
captions = ""
|
934 |
file_path = "gemini-native-image.png"
|
935 |
try:
|
|
|
|
|
|
|
|
|
936 |
caption = message.caption or "What this?"
|
937 |
await client.send_chat_action(message.chat.id, enums.ChatAction.UPLOAD_PHOTO)
|
938 |
await asyncio.sleep(1.5)
|
@@ -1105,6 +1182,10 @@ async def chatbot_talk(client: Client, message: Message):
|
|
1105 |
if message.video:
|
1106 |
video_file = None
|
1107 |
try:
|
|
|
|
|
|
|
|
|
1108 |
await client.send_chat_action(message.chat.id, enums.ChatAction.UPLOAD_VIDEO)
|
1109 |
await asyncio.sleep(2.0)
|
1110 |
caption = message.caption or "What this?"
|
@@ -1156,6 +1237,10 @@ async def chatbot_talk(client: Client, message: Message):
|
|
1156 |
sticker_file = None
|
1157 |
media = None
|
1158 |
try:
|
|
|
|
|
|
|
|
|
1159 |
f = message.sticker.file_id
|
1160 |
backup_chat = await db._get_chatbot_chat_from_db(message.from_user.id)
|
1161 |
await client.send_chat_action(message.chat.id, enums.ChatAction.CHOOSE_STICKER)
|
@@ -1213,9 +1298,32 @@ async def chatbot_talk(client: Client, message: Message):
|
|
1213 |
captions = ""
|
1214 |
file_path = "gemini-native-image.png"
|
1215 |
try:
|
|
|
|
|
|
|
1216 |
|
1217 |
if regex_all_blacklist(query_base):
|
1218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1219 |
|
1220 |
if query_base in DISABLED_COMMANDS:
|
1221 |
await client.send_chat_action(message.chat.id, enums.ChatAction.CANCEL)
|
|
|
29 |
import sys
|
30 |
import time
|
31 |
import traceback
|
|
|
|
|
|
|
|
|
|
|
32 |
import requests
|
|
|
33 |
import json
|
34 |
import io
|
35 |
+
from datetime import datetime as dt, timedelta
|
36 |
+
|
37 |
+
from gpytranslate import SyncTranslator
|
38 |
+
from io import BytesIO
|
39 |
+
from typing import Dict, List, Optional, Tuple, Union
|
40 |
|
41 |
from PIL import Image
|
42 |
from pyrogram import *
|
|
|
281 |
user_id = event.new_chat_member.promoted_by.id if event.new_chat_member else None
|
282 |
if not user_id or event.chat.username is None:
|
283 |
return
|
284 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
285 |
+
if user_bl and user_bl.get("is_frozen", False):
|
286 |
+
return
|
287 |
+
|
288 |
keyboard = []
|
289 |
keyboard.append([
|
290 |
InlineKeyboardButton("🔎 View Channel", url=f"https://t.me/{event.chat.username}"),
|
|
|
322 |
@Client.on_callback_query(filters.regex("^deletemydatagm$"))
|
323 |
async def deletemydata(client, callback):
|
324 |
user_id = callback.from_user.id
|
325 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
326 |
+
if user_bl and user_bl.get("is_frozen", False):
|
327 |
+
await callback.answer("Sorry your account is disabled", True)
|
328 |
+
return
|
329 |
+
|
330 |
delm = await db._clear_chatbot_database(user_id)
|
331 |
if delm:
|
332 |
await callback.edit_message_text(delm)
|
|
|
336 |
@Client.on_callback_query(filters.regex("^photo_(\d+)$"))
|
337 |
async def modephoto(client, callback):
|
338 |
user_id = int(callback.matches[0].group(1))
|
339 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
340 |
+
if user_bl and user_bl.get("is_frozen", False):
|
341 |
+
await callback.answer("Sorry your account is disabled", True)
|
342 |
+
return
|
343 |
+
|
344 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
345 |
if not data:
|
346 |
return await callback.answer("Can't found user", True)
|
|
|
369 |
@Client.on_callback_query(filters.regex("^menutools_(\d+)$"))
|
370 |
async def menu_tools(client, callback):
|
371 |
user_id = int(callback.matches[0].group(1))
|
372 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
373 |
+
if user_bl and user_bl.get("is_frozen", False):
|
374 |
+
await callback.answer("Sorry your account is disabled", True)
|
375 |
+
return
|
376 |
+
|
377 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
378 |
if not data:
|
379 |
return await callback.answer("Can't found user", True)
|
|
|
400 |
@Client.on_callback_query(filters.regex("^autopost_(\d+)$"))
|
401 |
async def auto_post_channel(client, callback):
|
402 |
user_id = int(callback.matches[0].group(1))
|
403 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
404 |
+
if user_bl and user_bl.get("is_frozen", False):
|
405 |
+
await callback.answer("Sorry your account is disabled", True)
|
406 |
+
return
|
407 |
+
|
408 |
try:
|
409 |
backup_chat = await db._get_chatbot_chat_from_db(user_id)
|
410 |
data = await db.backup_chatbot.find_one({"user_id": user_id})
|
|
|
451 |
@Client.on_callback_query(filters.regex("^genprompt_(\d+)$"))
|
452 |
async def geminigen_prompt(client, callback):
|
453 |
user_id = int(callback.matches[0].group(1))
|
454 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
455 |
+
if user_bl and user_bl.get("is_frozen", False):
|
456 |
+
await callback.answer("Sorry your account is disabled", True)
|
457 |
+
return
|
458 |
+
|
459 |
captions = ""
|
460 |
file_path = "gemini-native-image.png"
|
461 |
try:
|
|
|
539 |
@Client.on_callback_query(filters.regex("^fluxprompt_(\d+)$"))
|
540 |
async def flux_prompt(client, callback):
|
541 |
user_id = int(callback.matches[0].group(1))
|
542 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
543 |
+
if user_bl and user_bl.get("is_frozen", False):
|
544 |
+
await callback.answer("Sorry your account is disabled", True)
|
545 |
+
return
|
546 |
+
|
547 |
file_path = None
|
548 |
file_photo = None
|
549 |
try:
|
|
|
636 |
@Client.on_callback_query(filters.regex("^removerbg_(\d+)$"))
|
637 |
async def remover_bg(client, callback):
|
638 |
user_id = int(callback.matches[0].group(1))
|
639 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
640 |
+
if user_bl and user_bl.get("is_frozen", False):
|
641 |
+
await callback.answer("Sorry your account is disabled", True)
|
642 |
+
return
|
643 |
+
|
644 |
try:
|
645 |
data = await db.backup_chatbot.find_one({"user_id": int(user_id)})
|
646 |
if not data:
|
|
|
681 |
@Client.on_callback_query(filters.regex("^memory_(\d+)$"))
|
682 |
async def memory_updated(client, callback):
|
683 |
user_id = int(callback.matches[0].group(1))
|
684 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
685 |
+
if user_bl and user_bl.get("is_frozen", False):
|
686 |
+
await callback.answer("Sorry your account is disabled", True)
|
687 |
+
return
|
688 |
|
689 |
if message_memory_state.get(callback.message.id, False):
|
690 |
return await callback.answer("Memory already updated!", show_alert=False)
|
|
|
719 |
@Client.on_callback_query(filters.regex("^tr_(\d+)_(\w+)$"))
|
720 |
async def terjemahkan(client, callback):
|
721 |
user_id, targetlang = callback.matches[0].groups()
|
722 |
+
user_bl = await db.user_blacklists.find_one({"user_id": int(user_id)})
|
723 |
+
if user_bl and user_bl.get("is_frozen", False):
|
724 |
+
await callback.answer("Sorry your account is disabled", True)
|
725 |
+
return
|
726 |
+
|
727 |
try:
|
728 |
if user_id == 0:
|
729 |
return await callback.answer("Server busy try again later", True)
|
|
|
755 |
@Client.on_callback_query(filters.regex("^photomode_(\d+)_(\w+)$"))
|
756 |
async def photo_mode(client, callback):
|
757 |
user_id, mode = callback.matches[0].groups()
|
758 |
+
user_bl = await db.user_blacklists.find_one({"user_id": int(user_id)})
|
759 |
+
if user_bl and user_bl.get("is_frozen", False):
|
760 |
+
await callback.answer("Sorry your account is disabled", True)
|
761 |
+
return
|
762 |
+
|
763 |
data = await db.backup_chatbot.find_one({"user_id": int(user_id)})
|
764 |
if not data:
|
765 |
return await callback.answer("Can't found user", True)
|
|
|
783 |
@Client.on_callback_query(filters.regex("^trmulti_(\d+)$"))
|
784 |
async def multiple_langagues(client, callback):
|
785 |
user_id = int(callback.matches[0].group(1))
|
786 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
787 |
+
if user_bl and user_bl.get("is_frozen", False):
|
788 |
+
await callback.answer("Sorry your account is disabled", True)
|
789 |
+
return
|
790 |
+
|
791 |
keyboard = []
|
792 |
keyboard.append([
|
793 |
InlineKeyboardButton("🇦🇪", callback_data=f"tr_{user_id}_ar"),
|
|
|
838 |
@Client.on_callback_query(filters.regex("^response_(\d+)_(\w+)$"))
|
839 |
async def response_call(client, callback):
|
840 |
user_id, chat = callback.matches[0].groups()
|
841 |
+
user_bl = await db.user_blacklists.find_one({"user_id": int(user_id)})
|
842 |
+
if user_bl and user_bl.get("is_frozen", False):
|
843 |
+
await callback.answer("Sorry your account is disabled", True)
|
844 |
+
return
|
845 |
+
|
846 |
keyboard = InlineKeyboardMarkup(
|
847 |
[
|
848 |
[
|
|
|
910 |
unlike_counts[message_id] = set()
|
911 |
|
912 |
if action == "like":
|
913 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
914 |
+
if user_bl and user_bl.get("is_frozen", False):
|
915 |
+
await callback.answer("Sorry your account is disabled", True)
|
916 |
+
return
|
917 |
if user_id in like_counts[message_id]:
|
918 |
like_counts[message_id].remove(user_id)
|
919 |
else:
|
|
|
923 |
unlike_counts[message_id].remove(user_id)
|
924 |
|
925 |
elif action == "unlike":
|
926 |
+
user_bl = await db.user_blacklists.find_one({"user_id": user_id})
|
927 |
+
if user_bl and user_bl.get("is_frozen", False):
|
928 |
+
await callback.answer("Sorry your account is disabled", True)
|
929 |
+
return
|
930 |
if user_id in unlike_counts[message_id]:
|
931 |
unlike_counts[message_id].remove(user_id)
|
932 |
else:
|
|
|
946 |
& ~filters.forwarded
|
947 |
)
|
948 |
async def startbot(client: Client, message: Message):
|
949 |
+
user_bl = await db.user_blacklists.find_one({"user_id": message.from_user.id})
|
950 |
+
if user_bl and user_bl.get("is_frozen", False):
|
951 |
+
return
|
952 |
buttons = [
|
953 |
[
|
954 |
InlineKeyboardButton(
|
|
|
1006 |
captions = ""
|
1007 |
file_path = "gemini-native-image.png"
|
1008 |
try:
|
1009 |
+
user_bl = await db.user_blacklists.find_one({"user_id": message.from_user.id})
|
1010 |
+
if user_bl and user_bl.get("is_frozen", False):
|
1011 |
+
return
|
1012 |
+
|
1013 |
caption = message.caption or "What this?"
|
1014 |
await client.send_chat_action(message.chat.id, enums.ChatAction.UPLOAD_PHOTO)
|
1015 |
await asyncio.sleep(1.5)
|
|
|
1182 |
if message.video:
|
1183 |
video_file = None
|
1184 |
try:
|
1185 |
+
user_bl = await db.user_blacklists.find_one({"user_id": message.from_user.id})
|
1186 |
+
if user_bl and user_bl.get("is_frozen", False):
|
1187 |
+
return
|
1188 |
+
|
1189 |
await client.send_chat_action(message.chat.id, enums.ChatAction.UPLOAD_VIDEO)
|
1190 |
await asyncio.sleep(2.0)
|
1191 |
caption = message.caption or "What this?"
|
|
|
1237 |
sticker_file = None
|
1238 |
media = None
|
1239 |
try:
|
1240 |
+
user_bl = await db.user_blacklists.find_one({"user_id": message.from_user.id})
|
1241 |
+
if user_bl and user_bl.get("is_frozen", False):
|
1242 |
+
return
|
1243 |
+
|
1244 |
f = message.sticker.file_id
|
1245 |
backup_chat = await db._get_chatbot_chat_from_db(message.from_user.id)
|
1246 |
await client.send_chat_action(message.chat.id, enums.ChatAction.CHOOSE_STICKER)
|
|
|
1298 |
captions = ""
|
1299 |
file_path = "gemini-native-image.png"
|
1300 |
try:
|
1301 |
+
user_bl = await db.user_blacklists.find_one({"user_id": message.from_user.id})
|
1302 |
+
if user_bl and user_bl.get("is_frozen", False):
|
1303 |
+
return
|
1304 |
|
1305 |
if regex_all_blacklist(query_base):
|
1306 |
+
unfreeze_at = dt.now() + timedelta(hours=24)
|
1307 |
+
await db.user_blacklists.update_one(
|
1308 |
+
{"user_id": message.from_user.id},
|
1309 |
+
{"$set": {
|
1310 |
+
"is_frozen": True,
|
1311 |
+
"reason": "abusive_language",
|
1312 |
+
"frozen_at": dt.now(),
|
1313 |
+
"unfreeze_at": unfreeze_at
|
1314 |
+
}},
|
1315 |
+
upsert=True
|
1316 |
+
)
|
1317 |
+
await message.reply_text(
|
1318 |
+
"⚠️ You've been restricted for 24 hours\n"
|
1319 |
+
f"Expires: {unfreeze_at.strftime('%Y-%m-%d %H:%M')}",
|
1320 |
+
reply_markup=InlineKeyboardMarkup([[
|
1321 |
+
InlineKeyboardButton(
|
1322 |
+
"⏳ Understood",
|
1323 |
+
callback_data="closedd"
|
1324 |
+
)
|
1325 |
+
]])
|
1326 |
+
)
|
1327 |
|
1328 |
if query_base in DISABLED_COMMANDS:
|
1329 |
await client.send_chat_action(message.chat.id, enums.ChatAction.CANCEL)
|