randydev commited on
Commit
4489883
·
verified ·
1 Parent(s): 12160f5

Update chatbot/plugins/chat.py

Browse files
Files changed (1) hide show
  1. 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
- return await message.reply_text("You been blocked blacklisted")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)