Guest User

Python Telegram code

a guest
Oct 29th, 2025
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 41.89 KB | None | 0 0
  1. import asyncio
  2. import re
  3. import random
  4. from telethon import TelegramClient, events, errors, functions, types
  5. from asyncio import sleep
  6.  
  7. API_ID = 29593383
  8. API_HASH = '1c9eb4e8d4e24039f501f553c0cd3f22'
  9. PHONE_NUMBER = '+'
  10.  
  11. ADMIN_ID = 6092051746
  12.  
  13. RESPONSES = {
  14. r"(?i)^(salom|assalomu alaykum)$": "Va alaykum assalom! ๐Ÿคฒ",
  15. r"(?i).*omg.*": "Hey! ๐Ÿ˜„ Qalaysiz?",
  16. r"(?i).*hi.*": "Hello! ๐ŸŒธ",
  17. r"(?i).*sayonara.*": "Xayr! Yaxshi kunlar tilayman ๐ŸŒž",
  18. r"(?i).*qalesa.*": "Good morning! โ˜€๏ธ",
  19. r"(?i).*qalesa.*": "Good night! ๐ŸŒ™",
  20. r"(?i).*konichiwa.*": "Bonjour! ๐ŸŒธ",
  21. r"(?i).*nima\?*": "Yaxshi, rahmat! Sizchi? ๐Ÿ˜Š",
  22. r"(?i).*qancha\sbemalol\?*": "Hali ham yaxshi, rahmat! ๐ŸŒฟ",
  23. r"(?i).*yaxshimisa\?*": "Ha, rahmat! Sizchi? ๐Ÿ˜‡",
  24. r"(?i).*qalesan\?*": "Zoโ€˜r, rahmat! Sizchi? ๐Ÿ˜„",
  25. r"(?i).*abdulo\?*": "Ha, hammasi joyida! ๐Ÿ’ผ",
  26. r"(?i).*ok\?*": "Yoโ€˜q, hammasi joyida ๐Ÿ˜Š",
  27. r"(?i).*xafama\?*": "Ha, juda xursandman! ๐Ÿ˜„ Sizchi?",
  28. r"(?i).*what\?*": "Hm... ozgina, lekin yaxshilashga harakat qilayapman ๐Ÿ˜Œ",
  29. r"(?i).*qatasa\?*": "MAN Oโ€˜zbekistondanman, sizchi? ๐Ÿ‡บ๐Ÿ‡ฟ",
  30. r"(?i).*qatasan\?*": "MAN Toshkentdanman ๐Ÿ™",
  31. r"(?i).*qata turasan\?*": "Hozir Toshkentda yashayapman ๐ŸŒ†",
  32. r"(?i).*nima qvosa\?*": "Hozir biroz ishlayapman, sizchi? ๐Ÿ’ผ",
  33. r"(?i).*zerkdm\?*": "Ha, biroz ishlayapman, dam olishga ham vaqt topaman ๐Ÿ˜Œ",
  34. r"(?i).*mazzami\?*": "Ha, oโ€˜qiyman, bilim olishni yaxshi koโ€˜raman ๐Ÿ“š",
  35. r"(?i).*nma ish qlasa\?*": "Kitob oโ€˜qish, musiqa tinglash fikr o'qish va kod yozish ๐Ÿ“–๐ŸŽต๐Ÿ’ป",
  36. r"(?i).*kino\?*": "Ha, kino yaxshi! ng tavsiyalaringiz bormi? ๐ŸŽฌ",
  37. r"(?i).*go mk\?*": "ok san kiyinib tur xozr caqraman",
  38. r"(?i)^(abdullo|abdulloh)$": "Hn",
  39. r"(?i).*umarov.*": "โœจ Umarov hozir band, pulin bosa 200k kokida โœจ๐Ÿ’ธ",
  40. r"(?i).*qilasan\?*": "Hozir shu ish bilan bandman ๐Ÿ˜Ž",
  41. r"(?i).*keldinmi\?*": "Ha, endi biroz dam olaman ๐Ÿฝ",
  42. r"(?i).*charchadm\?*": "Ha, dam olaman, rahmat! ๐ŸŒฟ",
  43. r"(?i).*dars\?*": "Ha, soโ€˜nggi oโ€˜qigan kitobim juda qiziqarli ๐Ÿ“š",
  44. r"(?i).*futbol\?*": "Ha, yugurish va yoga bilan shugโ€˜ullanaman ๐Ÿƒโ€โ™‚๏ธ๐Ÿง˜โ€โ™‚๏ธ",
  45. r"(?i).*musiqa\?*": "Ha, turli janrlarni tinglayman ๐ŸŽต๐ŸŽง",
  46. r"(?i).*ok\?*": "ok bopti ๐ŸŽต๐ŸŽง",
  47. r"(?i).*Abdulo\?*": "nma? ๐ŸŽต๐ŸŽง",
  48. r"(?i).*ok\?*": "ok boldi uxla endi ๐ŸŽต๐Ÿง ",
  49. r"(?i).*sps.*": "Doimo mamnunman, xabar qilganingiz uchun โค๏ธ",
  50. r"(?i).*turdinmi.*": "Sizga ham xayrli kun! ๐ŸŒž",
  51. r"(?i).*pzds.*": "Thank you! ๐Ÿ™",
  52. r"(?i).*uxlama.*": "Rahmat! ๐ŸŽ‰ ham tabriklayman ๐Ÿฅณ",
  53. r"(?i).*hazil qil.*": "Haha ๐Ÿ˜„ Haqiqatan ham qiziq! ๐Ÿ˜‚",
  54. r"(?i).*manmi? | mami?.*": "Haha da san ukam .!. ๐Ÿ˜‚",
  55. r"(?i).*pick.*": "Haha, pick me juda kulgili ๐Ÿ˜‚๐Ÿ“ธ",
  56. r"(?i).*jonm.*": "dnx gey bla ๐Ÿ˜‚๐Ÿ“ธ",
  57. r"(?i).*Ezoza|ezow.*": "babr bochkasande๐Ÿฆ๐Ÿ’€",
  58. r"(?i).*Bibisora|bibisora.*": "bibisi๐Ÿธ๐Ÿ’€",
  59. r"(?i).*Mirjalol|mrjalol.*": "mirjii๐Ÿฏ๐Ÿ’€",
  60. r"(?i).*sunnat|sunat.*": "allemi๐Ÿ•Œ๐Ÿ’€",
  61. r"(?i).*Abdulaziz|laylo sanmi.*": "lamaaa๐Ÿฆ™๐Ÿ’€",
  62. r"(?i).*Dilshod|dlshhod.*": "dilshodjgar๐ŸŽฉ๐Ÿ’€",
  63. r"(?i).*ismoil|ismoil.*": "pidr๐Ÿ‘น๐Ÿ’€",
  64. r"(?i).*hadiw|hadicha.*": "aesthetic xomudjooon๐Ÿ’ƒ๐Ÿ—ฟ ||5baxo shablonga||",
  65. r"(?i).*Abdulaziz|abdlaziz.*": "lamaaa๐Ÿฆ™๐Ÿ’€",
  66. r"(?i).*umraov|umarof.*": "mani bossim boshligim boladi umarof๐ŸŽป๐ŸŽฏ",
  67. r"(?i).*Mohirjon|moxir.*": "koti kotta qoy๐Ÿ˜ผ๐Ÿ’€",
  68. r"(?i).*munisa|munis.*": "argentinali rizzayeva๐Ÿ’ƒ๐Ÿ’€",
  69. r"(?i).*Nodira|nodra.*": "aa qodir dr dr dr matasiklku u๐Ÿซ€๐Ÿ’€",
  70. r"(?i).*samir|Samir.*": "axaxaxa makaron kalla๐Ÿ๐Ÿ’€",
  71. r"(?i).*Akbar|akbar.*": "arooo qite qite bomj vodka๐Ÿธ๐Ÿ’€",
  72. r"(?i).*soli|Soliha.*": "dilshodni kal rapunseli๐Ÿ‘ธ๐Ÿ’€",
  73. r"(?i).*xy?|xy.*": "da nx qando chundin xy pilot๐Ÿ‘ธ๐Ÿ’€",
  74. r"(?i).*Alyo?|H.*": "nma๐Ÿ‘ธ๐Ÿ’€"
  75. }OFFENSIVE_PATTERNS = {
  76. r"(?i).*jonm.*": "dnx gey bla ๐Ÿ˜‚๐Ÿ“ธ",
  77. r"(?i).*Ezoza|ezow.*": "babr bochkasande๐Ÿฆ๐Ÿ’€",
  78. r"(?i).*Bibisora|bibisora.*": "bibisi๐Ÿธ๐Ÿ’€",
  79. r"(?i).*Mirjalol|mrjalol.*": "mirjii๐Ÿฏ๐Ÿ’€",
  80. r"(?i).*sunnat|sunat.*": "allemi๐Ÿ•Œ๐Ÿ’€",
  81. r"(?i).*Abdulaziz|laylo sanmi.*": "lamaaa๐Ÿฆ™๐Ÿ’€",
  82. r"(?i).*Dilshod|dlshhod.*": "dilshodjgar๐ŸŽฉ๐Ÿ’€",
  83. r"(?i).*ismoil|ismoil.*": "pidr๐Ÿ‘น๐Ÿ’€",
  84. r"(?i).*hadiw|hadicha.*": "aesthetic xomudjooon๐Ÿ’ƒ๐Ÿ—ฟ ||5baxo shablonga||",
  85. r"(?i).*Abdulaziz|abdlaziz.*": "lamaaa๐Ÿฆ™๐Ÿ’€",
  86. r"(?i).*umraov|umarof.*": "mani bossim boshligim boladi umarof๐ŸŽป๐ŸŽฏ",
  87. r"(?i).*Mohirjon|moxir.*": "koti kotta qoy๐Ÿ˜ผ๐Ÿ’€",
  88. r"(?i).*munisa|munis.*": "argentinali rizzayeva๐Ÿ’ƒ๐Ÿ’€",
  89. r"(?i).*Nodira|nodra.*": "aa qodir dr dr dr matasiklku u๐Ÿซ€๐Ÿ’€",
  90. r"(?i).*samir|Samir.*": "axaxaxa makaron kalla๐Ÿ๐Ÿ’€",
  91. r"(?i).*Akbar|akbar.*": "arooo qite qite bomj vodka๐Ÿธ๐Ÿ’€",
  92. r"(?i).*soli|Soliha.*": "dilshodni kal rapunseli๐Ÿ‘ธ๐Ÿ’€",
  93. r"(?i).*xy?|xy.*": "da nx qando chundin xy pilot๐Ÿ‘ธ๐Ÿ’€",
  94. r"(?i).*Alyo?|H.*": "nma๐Ÿ‘ธ๐Ÿ’€"
  95. }
  96.  
  97. OFFENSIVE_PATTERNS = [
  98. r"\b(sex|porn|jinsiy|amorat|badword1|sh\*t|f\*ck)\b|dabba|dnx|wtf|skaman|skama|yba|๐Ÿฆ’|๐Ÿ“ฎ|๐Ÿ“ฌ|๐Ÿ–•|hentai|qoto|tasho|yban|abl|Abl|nx|soska|pashol|wth|seks|am|bruh",
  99. ]
  100.  
  101. FALLBACKS = [
  102. "vay kuk",
  103. "ha, eshitdim",
  104. "qiziq, davom et",
  105. "gapir, tinglayman",
  106. "rahmat, xabar qilganing uchun",
  107. "hm... qanday fikrdasiz",
  108. "ajoyib, shunday davom eting",
  109. "ha, tushundim",
  110. "qiziq, batafsilroq aytib bera olasizmi",
  111. "hmmโ€ฆ MANimcha bu juda muhim",
  112. "rahmat, eshitib quvonib ketdim",
  113. "ha, shuni oldindan bilganim yaxshi boโ€˜lar edi",
  114. "haqiqatdan ham? qanday qilib",
  115. "toโ€˜gโ€˜ri, bu fikr juda qiziq",
  116. "MANimcha, davom etishimiz kerak",
  117. "wow, shuni eshitib hayron boโ€˜ldim",
  118. "ajoyib fikr, boshqalar bilan ham boโ€˜lishsak boโ€˜ladi",
  119. "ha, tushundim, rahmat tushuntirgani uchun",
  120. "tilin chiqib qopdimi",
  121. "haha, bu juda kulgili"
  122. "mani oldimda sokish sangamas"
  123. "nma gap bratishka"
  124. "gapni qisqart bratishka"
  125. "ismin nma?"
  126. ]
  127.  
  128. ROUGH_REPLIES = [
  129. "Nima gap? Keraksiz gaplarni yozma! ๐Ÿ˜’",
  130. "Bezota qma mani endi, gapingni qisqart! ๐Ÿคจ",
  131. "Ha, tushundim. Endi xotirjam boโ€˜lgin! ๐Ÿ˜ค",
  132. "Nma, mazgi qildin? ๐Ÿ˜‘",
  133. "Zb nma kere ๐Ÿ—ฟ",
  134. "Pashol ket Yoqolโœ…๐Ÿคทโ€โ™‚๏ธ",
  135. "Yana nechi marta etaman, bezota qma! ๐Ÿ˜ ",
  136. "Gapni qisqart, vaqtim qimmat! โณ",
  137. "Mana endi tinch boโ€˜lgin! ๐Ÿ˜ค",
  138. "Dnx ket endi! ๐Ÿฆ’",
  139. "gapni chunasanmi o'zi, yoki yana takrorlaymi?๐Ÿ˜‘",
  140. "krc mazgi dnx okey",
  141. "Agar yana shunaqa yozsang, bloklanishing mumkin. ๐Ÿ˜‘"
  142. "man gapni qaytarishga majbur qmaโ˜ ๏ธ๐Ÿฆ’"
  143. ]
  144.  
  145. POLITE_REPLIES = [
  146. "Rahmat, hurmat bilan yozing ๐Ÿ˜Š",
  147. "MAN tinglayapman ๐ŸŒธ",
  148. "Muloyimroq gapiring ๐Ÿ™",
  149. "Rahmat, davom eting ๐ŸŒผ",
  150. "Yoqimli suhbat ๐Ÿค",
  151. "Samimiy yozing ๐ŸŒฟ",
  152. "Gaplaringizni qadrlayman โœจ",
  153. "Muloqot chiroyli ๐ŸŒธ",
  154. "Rahmat, tushundim ๐Ÿ•Š",
  155. "Doโ€˜stona davom etamiz ๐Ÿ€",
  156. "Hurmatli soโ€˜zlar ๐ŸŒŸ",
  157. "Mehribon ohangda ๐ŸŒท",
  158. " tinglash yaxshi ๐Ÿค",
  159. "Qadrli soโ€˜zlar โœจ",
  160. "Rahmat xabaringiz uchun ๐Ÿ™",
  161. "Yaxshi kayfiyat ๐ŸŒธ",
  162. "Samimiyatni qadrlayman ๐ŸŒผ",
  163. "Ajoyib suhbat ๐ŸŒบ",
  164. "Har bir soโ€˜z qimmatli ๐Ÿ’ซ",
  165. "Rahmat, davom eting ๐ŸŒŸ"
  166. ]
  167.  
  168. ACTIVE_MODES = {}
  169.  
  170. def format_reply(text: str) -> str:
  171. decorations = [
  172. "๐Ÿ’ฌ", "๐ŸŒฟ", "๐Ÿซง", "๐Ÿ•Š", "๐Ÿซถ", "๐Ÿซ€", "๐Ÿ˜‡",
  173. "โœจ", "๐ŸŒธ", "๐ŸŒˆ", "๐Ÿ“", "๐ŸŒท", "๐ŸŒน", "๐ŸŒบ",
  174. "๐ŸŒผ", "๐ŸŒป", "๐ŸŒŠ", "๐Ÿƒ", "๐Ÿชท", "๐Ÿ’", "๐Ÿ„",
  175. "๐Ÿ—ฟ", "๐Ÿ’€", "๐Ÿง ", "๐Ÿ’Ž", "โญ๏ธ", "๐ŸŒ™", "โ˜€๏ธ",
  176. "๐Ÿ•ฏ", "๐ŸŽถ", "๐Ÿงฟ", "๐Ÿ”ฅ", "โœ…", "๐Ÿ˜Œ", "๐Ÿค",
  177. "๐Ÿช", "๐ŸŒŸ", "๐ŸŒŒ", "๐Ÿš€", "๐ŸŒ ", "๐ŸŒ‘", "๐ŸŒ™",
  178. "๐Ÿ‡", "๐Ÿฐ", "๐Ÿฅ•", "๐Ÿงธ", "๐ŸŽˆ", "๐ŸŽ‰", "๐Ÿฅฐ",
  179. ]
  180. return f"{random.choice(decorations)} {text} {random.choice(decorations)}"
  181.  
  182. def is_offensive(text: str) -> bool:
  183. txt = (text or "").lower()
  184. for pattern in OFFENSIVE_PATTERNS:
  185. if re.search(pattern, txt):
  186. return True
  187. return False
  188.  
  189. async def human_delay(min_s=0.5, max_s=3.0):
  190. await asyncio.sleep(random.uniform(min_s, max_s))
  191.  
  192. client = TelegramClient('autoreply_session', API_ID, API_HASH)ADMIN_CMD_RE = re.compile(r"^/(start|stop|rough|polite)\s+(@?[A-Za-z0-9_]+)$", re.I)
  193. CLEAR_CMD_RE = re.compile(r"^/clear\s*$", re.I)
  194. AUTO_CMD_RE = re.compile(r'^/auto\s+(?:"([^"]+)"|\'([^\']+)\')\s*\*\s*(\d+)\s*$', re.I | re.DOTALL)
  195. TIME_CMD_RE = re.compile(r'^/time\s+(\d+)\s*$', re.I)
  196.  
  197. @client.on(events.NewMessage(outgoing=True))
  198. async def admin_commands(event):
  199. try:
  200. sender = await event.get_sender()
  201. sender_id = getattr(sender, "id", None)
  202. if sender_id != ADMIN_ID:
  203. return
  204. except Exception:
  205. return
  206.  
  207. text = event.raw_text or ""
  208. text_stripped = text.strip()
  209.  
  210. if CLEAR_CMD_RE.match(text_stripped):
  211. print(f"[ADMIN] /clear triggered by admin (chat_id={event.chat_id})")
  212. try:
  213. for i in range(5, -1, -1):
  214. await event.reply(str(i))
  215. await asyncio.sleep(0.8)
  216. except Exception as e:
  217. print(f"[ERROR] Failed during countdown: {e}")
  218.  
  219. chat = event.chat_id
  220. print(f"[ADMIN] Attempting to delete all messages in chat {chat} ...")
  221. try:
  222. ids_batch = []
  223. batch_size = 100
  224. async for msg in client.iter_messages(chat, limit=None):
  225. ids_batch.append(msg.id)
  226. if len(ids_batch) >= batch_size:
  227. try:
  228. await client.delete_messages(chat, ids_batch, revoke=True)
  229. print(f"[ADMIN] Deleted batch of {len(ids_batch)} messages in chat {chat}")
  230. except Exception as de:
  231. print(f"[WARN] Could not delete batch: {de}")
  232. ids_batch = []
  233. if ids_batch:
  234. try:
  235. await client.delete_messages(chat, ids_batch, revoke=True)
  236. print(f"[ADMIN] Deleted final batch of {len(ids_batch)} messages in chat {chat}")
  237. except Exception as de:
  238. print(f"[WARN] Could not delete final batch: {de}")
  239.  
  240. try:
  241. await client.delete_dialog(chat)
  242. print(f"[ADMIN] Deleted dialog for chat {chat}")
  243. except Exception as de:
  244. print(f"[WARN] delete_dialog failed: {de}")
  245.  
  246. await asyncio.sleep(0.3)
  247. await event.reply(format_reply("Oโ€˜z-oโ€˜zini yoโ€˜q qilish tugallandi."))
  248. print(f"[ADMIN] /clear completed for chat {chat}")
  249. except Exception as e:
  250. print(f"[ERROR] Error while clearing chat {chat}: {e}")
  251. try:
  252. await event.reply(format_reply(f"โš ๏ธ Xato yuz berdi: {e}"))
  253. except Exception:
  254. pass
  255.  
  256. return
  257.  
  258. m_auto = AUTO_CMD_RE.match(text_stripped)
  259. if m_auto:
  260. msg_text = m_auto.group(1) or m_auto.group(2) or ""
  261. count = int(m_auto.group(3) or 0)
  262. MAX_COUNT = 10000000000000000000
  263. if count <= 0:
  264. await event.reply(format_reply("โš ๏ธ Iltimos, nusxalash sonini musbat butun son sifatida kiriting."))
  265. return
  266. if count > MAX_COUNT:
  267. await event.reply(format_reply(f"โš ๏ธ So'rov juda katta (>{MAX_COUNT}). Iltimos, kichikroq son kiriting."))
  268. print(f"[ADMIN] /auto refused: requested {count} > {MAX_COUNT}")
  269. return
  270. chat = event.chat_id
  271. print(f"[ADMIN] /auto triggered by admin in chat {chat}: sending {count} copies of message: {repr(msg_text)}")
  272. try:
  273. for i in range(1, count + 1):
  274. suffix = f"{i:03d}%"
  275. send_text = f"{msg_text} {suffix}"
  276. await human_delay(0.2, 1.0)
  277. await client.send_message(chat, send_text)
  278. print(f"[ADMIN][AUTO] Sent ({i}/{count}) -> {send_text}")
  279. await event.reply(format_reply(f"Sucsesfullโœ… Boshliq @umarov_py"))
  280. print(f"[ADMIN] /auto completed in chat {chat}")
  281. except Exception as e:
  282. print(f"[ERROR] /auto failed in chat {chat}: {e}")
  283. try:
  284. await event.reply(format_reply(f"โš ๏ธ /auto bajarishda xato: {e}"))
  285. except Exception:
  286. pass
  287. return
  288.  
  289. m_time = TIME_CMD_RE.match(text_stripped)
  290. if m_time:
  291. seconds = int(m_time.group(1))
  292. if seconds <= 0:
  293. await event.reply(format_reply("โš ๏ธ Iltimos, musbat son kiriting."))
  294. return
  295.  
  296. chat = event.chat_id
  297. me = await client.get_me()
  298. print(f"[ADMIN] /time triggered by admin in chat {chat}: timer={seconds}s")
  299.  
  300. try:
  301. progress_msg = await event.reply(format_reply(f"โณ Boshlanmoqda... 0%"))
  302. bar_length = 20
  303. interval = 1.0
  304. steps = max(1, int(seconds / interval))
  305. for elapsed in range(1, seconds + 1):
  306. pct = int((elapsed / seconds) * 100)
  307. filled = int((pct / 100) * bar_length)
  308. bar = "โ–ˆ" * filled + "โ€”" * (bar_length - filled)
  309. new_text = format_reply(f"โณ {pct}% |{bar}| {elapsed}/{seconds}s")
  310. await asyncio.sleep(0.8 + random.uniform(0.0, 0.4))
  311. try:
  312. await progress_msg.edit(new_text)
  313. except Exception as ee:
  314. try:
  315. await client.edit_message(chat, progress_msg.id, new_text)
  316. except Exception as eee:
  317. print(f"[WARN] Could not edit progress message: {eee} / {eee}")
  318. print(f"[ADMIN][TIMER] {pct}% ({elapsed}/{seconds}s) in chat {chat}")
  319.  
  320. final_text = format_reply("โœ… 100% - vaqti tugadi. Sayonara")
  321. try:
  322. await progress_msg.edit(final_text)
  323. except Exception:
  324. try:
  325. await client.edit_message(chat, progress_msg.id, final_text)
  326. except Exception:
  327. pass
  328. await asyncio.sleep(0.8)
  329.  
  330. print(f"[ADMIN] /time completed: attempting to delete all messages in chat {chat} ...")
  331. try:
  332. ids_batch = []
  333. batch_size = 100
  334. async for msg in client.iter_messages(chat, limit=None):
  335. ids_batch.append(msg.id)
  336. if len(ids_batch) >= batch_size:
  337. try:
  338. await client.delete_messages(chat, ids_batch, revoke=True)
  339. print(f"[ADMIN] Deleted batch of {len(ids_batch)} messages in chat {chat}")
  340. except Exception as de:
  341. print(f"[WARN] Could not delete batch: {de}")
  342. ids_batch = []
  343. if ids_batch:
  344. try:
  345. await client.delete_messages(chat, ids_batch, revoke=True)
  346. print(f"[ADMIN] Deleted final batch of {len(ids_batch)} messages in chat {chat}")
  347. except Exception as de:
  348. print(f"[WARN] Could not delete final batch: {de}")
  349. try:
  350. await client.delete_dialog(chat)
  351. print(f"[ADMIN] Deleted dialog for chat {chat}")
  352. except Exception as de:
  353. print(f"[WARN] delete_dialog failed (non-critical): {de}")
  354. except Exception as e:
  355. print(f"[ERROR] Error while clearing chat {chat} after /time: {e}")
  356.  
  357. try:
  358. entity = await client.get_entity(chat)
  359. if isinstance(entity, types.User) and getattr(entity, 'id', None) != me.id:
  360. await client(functions.contacts.BlockRequest(id=entity.id))
  361. print(f"[ADMIN] Blocked user id={entity.id} (@{getattr(entity, 'username', None)}) after /time")
  362. else:
  363. print(f"[ADMIN] Not blocking: entity is not a user or is self (chat={chat})")
  364. except Exception as e:
  365. print(f"[WARN] Could not block entity for chat {chat}: {e}")
  366.  
  367. print(f"[ADMIN] /time sequence finished for chat {chat}")
  368. except Exception as e:
  369. print(f"[ERROR] /time failed in chat {chat}: {e}")
  370. try:
  371. await event.reply(format_reply(f"โš ๏ธ /time buyruqda xato yuz berdi: {e}"))
  372. except Exception:
  373. pass
  374. return
  375.  
  376. m = ADMIN_CMD_RE.match(text_stripped)
  377. if not m:
  378. return
  379.  
  380. cmd = m.group(1).lower()
  381. username = m.group(2)
  382.  
  383. if username.startswith("@"):
  384. username = username[1:]
  385.  
  386. try:
  387. target = await client.get_entity(username)
  388. except errors.UsernameInvalidError as e:
  389. await event.reply(format_reply(f"โš ๏ธ Username @{username} noto'g'ri yoki topilmadi."))
  390. print(f"[ADMIN] {cmd} failed - cannot resolve @{username}: {e}")
  391. return
  392. except Exception as e:
  393. await event.reply(format_reply(f"โš ๏ธ Foydalanuvchi aniqlashda xato: {e}"))
  394. print(f"[ADMIN] {cmd} failed - error resolving @{username}: {e}")
  395. return
  396.  
  397. try:
  398. target_id = target.id
  399. except Exception as e:
  400. await event.reply(format_reply("โš ๏ธ Maqsadli foydalanuvchi haqida ma'lumot olinmadi."))
  401. print(f"[ADMIN] {cmd} failed - entity has no id (@{username}): {e}")
  402. return
  403.  
  404. if cmd == "start":
  405. mode = "normal"
  406. elif cmd == "stop":
  407. mode = "Turn Off"
  408. elif cmd == "rough":
  409. mode = "Mazgi qildin"
  410. elif cmd == "polite":
  411. mode = "friendly"
  412. else:
  413. await event.reply(format_reply("โš ๏ธ Noma'lum buyruq."))
  414. return
  415.  
  416. ACTIVE_MODES[target_id] = mode
  417. await asyncio.sleep(0.25)
  418. await event.reply(format_reply(f"Rejim: @{getattr(target, 'username', str(target_id))} uchun ** __ โœ… {mode} โœ… __ ** ga o'zgartirildi."))
  419. print(f"[ADMIN] Set mode for user_id={target_id} (@{getattr(target, 'username', None)}) -> {mode}")
  420.  
  421. @client.on(events.NewMessage(incoming=True))
  422. async def incoming_handler(event):
  423. if not event.is_private:
  424. return
  425.  
  426. sender = await event.get_sender()
  427. if not sender:
  428. return
  429.  
  430. sender_id = getattr(sender, "id", None)
  431. if getattr(sender, "bot", False):
  432. return
  433.  
  434. text = event.raw_text or ""
  435. if sender_id != ADMIN_ID and is_offensive(text):
  436. try:
  437. await client.delete_messages(event.chat_id, [event.id], revoke=True)
  438. print(f"[๐Ÿ›ก Deleted offensive message] from user_id={sender_id} chat={event.chat_id} msg_id={event.id}")
  439. except Exception as e:
  440. print(f"[WARN] Could not delete offensive message from {sender_id}: {e}")
  441. return
  442.  
  443. if sender_id == ADMIN_ID:
  444. return
  445.  
  446. mode = ACTIVE_MODES.get(sender_id, "off")
  447. print(f"[๐Ÿ“ฅ Incoming] from {getattr(sender,'first_name',None)} (id={sender_id}) mode={mode} text={repr(text)})")
  448.  
  449. if mode == "off":
  450. return
  451.  
  452. await human_delay(0.5, 3.0)
  453.  
  454. try:
  455. if mode == "rough":
  456. reply_txt = random.choice(ROUGH_REPLIES)
  457. formatted = format_reply(reply_txt)
  458. await event.reply(formatted)
  459. print(f"[๐Ÿ“ฉ Replied (rough)] to user_id={sender_id}: {formatted}")
  460. return
  461. if mode == "polite":
  462. reply_txt = random.choice(POLITE_REPLIES)
  463. formatted = format_reply(reply_txt)
  464. await event.reply(formatted)
  465. print(f"[๐Ÿ“ฉ Replied (polite)] to user_id={sender_id}: {formatted}")
  466. return
  467.  
  468. for pattern, reply in RESPONSES.items():
  469. if re.search(pattern, text):
  470. formatted = format_reply(reply)
  471. await event.reply(formatted)
  472. print(f"[๐Ÿ“ฉ Replied (normal-match)] to user_id={sender_id}: {formatted}")
  473. return
  474.  
  475. if random.random() < 0.7:
  476. fallback = random.choice(FALLBACKS)
  477. formatted = format_reply(fallback)
  478. await event.reply(formatted)
  479. print(f"[๐Ÿ“ฉ Replied (normal-fallback)] to user_id={sender_id}: {formatted}")
  480. else:
  481. print(f"[๐Ÿคซ No reply sent to user_id={sender_id} (normal fallback skipped)]")
  482. except Exception as e:
  483. print(f"[ERROR] Failed to send reply to user_id={sender_id}: {e}")
  484.  
  485. @client.on(events.MessageEdited(incoming=True))
  486. async def edited_handler(event):
  487. if not event.is_private:
  488. return
  489.  
  490. sender = await event.get_sender()
  491. if not sender:
  492. return
  493.  
  494. sender_id = getattr(sender, "id", None)
  495. if getattr(sender, "bot", False):
  496. return
  497.  
  498. new_text = event.text or ""
  499.  
  500. if sender_id != ADMIN_ID and is_offensive(new_text):
  501. try:
  502. await client.delete_messages(event.chat_id, [event.id], revoke=True)
  503. print(f"[๐Ÿ›ก Deleted offensive edited message] from user_id={sender_id} chat={event.chat_id} msg_id={event.id}")
  504. except Exception as e:
  505. print(f"[WARN] Could not delete offensive edited message from {sender_id}: {e}")
  506. return
  507.  
  508. print(f"[โœ๏ธ Edited message] from user_id={sender_id} - not offensive; no reply.")
  509.  
  510. letters = {
  511. " ": "000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000",
  512. "a": "000000000000\n000001100000\n000011110000\n000111111000\n001110011100\n001100001100\n001100001100\n001111111100\n001111111100\n001100001100\n001100001100\n000000000000",
  513. "b": "000000000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111000\n001111111000\n001100001100\n001100001100\n001111111100\n001111111000\n000000000000",
  514. "c": "000000000000\n000111111000\n001111111100\n001100001100\n001100000000\n001100000000\n001100000000\n001100000000\n001100001100\n001111111100\n000111111000\n000000000000",
  515. "d": "000000000000\n001111111000\n001111111100\n000110001100\n000110001100\n000110001100\n000110001100\n000110001100\n000110001100\n001111111100\n001111111000\n000000000000",
  516. "e": "000000000000\n001111111000\n001111111000\n001100000000\n001100000000\n001111110000\n001111110000\n001100000000\n001100000000\n001111111000\n001111111000\n000000000000",
  517. "f": "000000000000\n000111111000\n001111111000\n001100000000\n001100000000\n001111110000\n001111110000\n001100000000\n001100000000\n001100000000\n001100000000\n000000000000",
  518. "g": "000000000000\n000111111000\n001111111100\n001100000000\n001100000000\n001100111100\n001100111100\n001100001100\n001100001100\n001111111100\n000111111000\n000000000000",
  519. "h": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n001111111100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  520. "i": "000000000000\n001111111100\n001111111100\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n001111111100\n001111111100\n000000000000",
  521. "j": "000000000000\n000111111100\n000111111100\n000000011000\n000000011000\n000000011000\n000000011000\n001100011000\n001100011000\n001111111000\n000111110000\n000000000000",
  522. "k": "000000000000\n001100001100\n001100011100\n001100111000\n001101110000\n001111100000\n001111100000\n001101110000\n001100111000\n001100011100\n001100001100\n000000000000",
  523. "l": "000000000000\n001100000000\n001100000000\n001100000000\n001100000000\n001100000000\n001100000000\n001100000000\n001100000000\n001111111100\n001111111100\n000000000000",
  524. "m": "000000000000\n001100001100\n001110011100\n001111111100\n001111111100\n001101101100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  525. "n": "000000000000\n001100001100\n001110001100\n001111001100\n001111101100\n001101111100\n001100111100\n001100011100\n001100001100\n001100001100\n001100001100\n000000000000",
  526. "o": "000000000000\n000111111000\n001111111100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111000\n000000000000",
  527. "p": "000000000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n001100000000\n001100000000\n001100000000\n001100000000\n000000000000",
  528. "q": "000000000000\n000111111000\n001111111100\n001100001100\n001100001100\n001100001100\n001101101100\n001101111100\n001100111000\n001111111100\n000111101100\n000000000000",
  529. "r": "000000000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n001100011100\n001100001100\n001100001100\n001100001100\n000000000000",
  530. "s": "000000000000\n000111111000\n001111111100\n001100001100\n001100000000\n001111111000\n000111111100\n000000001100\n001100001100\n001111111100\n000111111000\n000000000000",
  531. "t": "000000000000\n001111111100\n001111111100\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000000000000",
  532. "u": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111000\n000000000000",
  533. "v": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001110011100\n000111111000\n000011110000\n000001100000\n000000000000",
  534. "w": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001101101100\n001111111100\n001111111100\n001110011100\n001100001100\n000000000000",
  535. "x": "000000000000\n001100001100\n001100001100\n001110011100\n000111011000\n000011110000\n000011110000\n000110111000\n001110011100\n001100001100\n001100001100\n000000000000",
  536. "y": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111100\n000000001100\n000000001100\n001111111100\n001111111000\n000000000000",
  537. "z": "000000000000\n001111111100\n001111111100\n000000011100\n000000111000\n000001110000\n000011100000\n000111000000\n001110000000\n001111111100\n001111111100\n000000000000",
  538. "ะฐ": "000000000000\n000001100000\n000011110000\n000111111000\n001110011100\n001100001100\n001100001100\n001111111100\n001111111100\n001100001100\n001100001100\n000000000000",
  539. "ะฑ": "000000000000\n001111111000\n001111111000\n001100000000\n001100000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n000000000000",
  540. "ะฒ": "000000000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111000\n001111111000\n001100001100\n001100001100\n001111111100\n001111111000\n000000000000",
  541. "ะณ": "000000000000\n000011111100\n000111111100\n000110000000\n000110000000\n000110000000\n000110000000\n000110000000\n000110000000\n000110000000\n000110000000\n000000000000",
  542. "ะด": "000000000000\n000001111000\n000011111100\n000111001100\n001110001100\n001100001100\n001111111100\n011111111110\n011100001110\n011000000110\n011000000110\n000000000000",
  543. "ะต": "000000000000\n001111111000\n001111111000\n001100000000\n001100000000\n001111110000\n001111110000\n001100000000\n001100000000\n001111111000\n001111111000\n000000000000",
  544. "ั‘": "000000000000\n001111111000\n001111111000\n001100000000\n001100000000\n001111110000\n001111110000\n001100000000\n001100000000\n001111111000\n001111111000\n000000000000",
  545. "ะถ": "000000000000\n001101101100\n001101101100\n001111111100\n000111111000\n000011110000\n000011110000\n000111111000\n001111111100\n001101101100\n001101101100\n000000000000",
  546. "ะท": "000000000000\n000111111000\n001111111100\n001100001100\n000000001100\n000001111000\n000001111000\n000000001100\n001100001100\n001111111100\n000111111000\n000000000000",
  547. "ะธ": "000000000000\n001100001100\n001100001100\n001100011100\n001100111100\n001101111100\n001111101100\n001111001100\n001110001100\n001100001100\n001100001100\n000000000000",
  548. "ะน": "000000000000\n001101101100\n001100001100\n001100011100\n001100111100\n001101111100\n001111101100\n001111001100\n001110001100\n001100001100\n001100001100\n000000000000",
  549. "ะบ": "000000000000\n001100001100\n001100011100\n001100111000\n001101110000\n001111100000\n001111100000\n001101110000\n001100111000\n001100011100\n001100001100\n000000000000",
  550. "ะป": "000000000000\n000001100000\n000011110000\n000111111000\n001110011100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  551. "ะผ": "000000000000\n001100001100\n001110011100\n001111111100\n001111111100\n001101101100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  552. "ะฝ": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n001111111100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  553. "ะพ": "000000000000\n000111111000\n001111111100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111000\n000000000000",
  554. "ะฟ": "000000000000\n001111111100\n001111111100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n000000000000",
  555. "ั€": "000000000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n001100000000\n001100000000\n001100000000\n001100000000\n000000000000",
  556. "ั": "000000000000\n000111111000\n001111111100\n001100001100\n001100000000\n001100000000\n001100000000\n001100000000\n001100001100\n001111111100\n000111111000\n000000000000",
  557. "ั‚": "000000000000\n001111111100\n001111111100\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000000000000",
  558. "ัƒ": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111100\n000000001100\n000000001100\n001111111100\n001111111000\n000000000000",
  559. "ั„": "000000000000\n000111111000\n001111111100\n011001100110\n011001100110\n011001100110\n001111111100\n000111111000\n000001100000\n000001100000\n000001100000\n000000000000",
  560. "ั…": "000000000000\n001100001100\n001100001100\n001110011100\n000111011000\n000011110000\n000011110000\n000110111000\n001110011100\n001100001100\n001100001100\n000000000000",
  561. "ั†": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001111111110\n000111111110\n000000000110\n000000000000",
  562. "ั‡": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001100001100\n001111111100\n000111111100\n000000001100\n000000001100\n000000001100\n000000000000",
  563. "ัˆ": "000000000000\n001100001100\n001100001100\n001100001100\n001101101100\n001101101100\n001101101100\n001101101100\n001101101100\n001111111100\n001111111100\n000000000000",
  564. "ั‰": "000000000000\n001100001100\n001100001100\n001100001100\n001101101100\n001101101100\n001101101100\n001101101100\n001111111110\n001111111110\n000000000110\n000000000000",
  565. "ัŒ": "000000000000\n001100000000\n001100000000\n001100000000\n001100000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n000000000000",
  566. "ัŠ": "000000000000\n011100000000\n011100000000\n001100000000\n001100000000\n001111111000\n001111111100\n001100001100\n001100001100\n001111111100\n001111111000\n000000000000",
  567. "ั‹": "000000000000\n001100001100\n001100001100\n001100001100\n001100001100\n001111101100\n001111111100\n001100011100\n001100011100\n001111111100\n001111101100\n000000000000",
  568. "ั": "000000000000\n000111111000\n001111111100\n001100001100\n000000001100\n000011111100\n000011111100\n000000001100\n001100001100\n001111111100\n000111111000\n000000000000",
  569. "ัŽ": "000000000000\n011001111100\n011011111110\n011011000110\n011011000110\n011111000110\n011111000110\n011011000110\n011011000110\n011011111110\n011001111100\n000000000000",
  570. "ั": "000000000000\n000111111100\n001111111100\n001100001100\n001100001100\n001111111100\n000111111100\n000000111100\n000001111100\n000011101100\n000111001100\n000000000000",
  571. ".": "000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000000000000\n000001100000\n000001100000\n000000000000",
  572. "!": "000000000000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000001100000\n000000000000\n000000000000\n000001100000\n000001100000\n000000000000",
  573. "๐Ÿ’–": "000000000000\n001110011100\n011๐Ÿค11111110\n01๐Ÿค111111110\n011111111110\n011111111110\n011111111110\n001111111100\n000111111000\n000011110000\n000001100000\n000000000000",
  574. }
  575.  
  576. MAGIC_SYMBOLS = ["โœจ", "๐Ÿ’–"]
  577.  
  578. async def do_magic_original(message):
  579. try:
  580. arr = ["๐Ÿ‹", "๐ŸŽถ", "๐ŸŽง", "๐Ÿ˜…", "๐Ÿคซ", "๐Ÿ˜ฎโ€๐Ÿ’จ", "๐Ÿ˜ถโ€๐ŸŒซ๏ธ", "๐Ÿ’€", "๐Ÿง "]
  581. h = "๐Ÿค"
  582. first = ""
  583. pattern_lines = "".join([h*9, "\n", h*2, arr[0]*2, h, arr[0]*2, h*2, "\n",
  584. h, arr[0]*7, h, "\n", h, arr[0]*7, h, "\n",
  585. h, arr[0]*7, h, "\n", h*2, arr[0]*5, h*2, "\n",
  586. h*3, arr[0]*3, h*3, "\n", h*4, arr[0], h*4]).split("\n")
  587. for i in pattern_lines:
  588. first += i + "\n"
  589. try:
  590. await message.edit(first)
  591. except Exception:
  592. pass
  593. await sleep(0.2)
  594. for i in arr:
  595. txt = "".join([h*9, "\n", h*2, i*2, h, i*2, h*2, "\n", h, i*7, h, "\n", h, i*7, h, "\n",
  596. h, i*7, h, "\n", h*2, i*5, h*2, "\n", h*3, i*3, h*3, "\n", h*4, i, h*4, "\n", h*9])
  597. try:
  598. await message.edit(txt)
  599. except Exception:
  600. pass
  601. await sleep(0.3)
  602. for _ in range(8):
  603. rand = random.choices(arr, k=34)
  604. txt = "".join([h*9, "\n", h*2, rand[0], rand[1], h, rand[2], rand[3], h*2, "\n",
  605. h, rand[4], rand[5], rand[6], rand[7], rand[8], rand[9], rand[10], h, "\n",
  606. h, rand[11], rand[12], rand[13], rand[14], rand[15], rand[16], rand[17], h, "\n",
  607. h, rand[18], rand[19], rand[20], rand[21], rand[22], rand[23], rand[24], h, "\n",
  608. h*2, rand[25], rand[26], rand[27], rand[28], rand[29], h*2, "\n",
  609. h*3, rand[30], rand[31], rand[32], h*3, "\n", h*4, rand[33], h*4, "\n", h*9])
  610. try:
  611. await message.edit(txt)
  612. except Exception:
  613. pass
  614. await sleep(0.3)
  615. fourth = "".join([h*9, "\n", h*2, arr[0]*2, h, arr[0]*2, h*2, "\n", h, arr[0]*7, h, "\n", h, arr[0]*7, h, "\n",
  616. h, arr[0]*7, h, "\n", h*2, arr[0]*5, h*2, "\n", h*3, arr[0]*3, h*3, "\n", h*4, arr[0], h*4, "\n", h*9])
  617. try:
  618. await message.edit(fourth)
  619. except Exception:
  620. pass
  621. for _ in range(47):
  622. fourth = fourth.replace("๐Ÿค", "โค๏ธ", 1)
  623. try:
  624. await message.edit(fourth)
  625. except Exception:
  626. pass
  627. await sleep(0.1)
  628. for i in range(8):
  629. try:
  630. await message.edit((arr[0]*(8-i)+"\n")*(8-i))
  631. except Exception:
  632. pass
  633. await sleep(0.4)
  634. for i in ["MAN", "MAN โค๏ธ", "MAN โค๏ธ", "MAN โค๏ธ BOG'B OLDRAMAN๐Ÿ”ฅ๐Ÿ–ค!"]:
  635. try:
  636. await message.edit(f"**{i}**")
  637. except Exception:
  638. pass
  639. await sleep(0.5)
  640. except Exception as e:
  641. print(f"[WARN] do_magic_original error: {e}")
  642.  
  643. async def do_magic_emodji(message):
  644. try:
  645. arr = ["๐Ÿฅฐ", "๐Ÿ˜š", "โ˜บ๏ธ", "๐Ÿ˜˜", "๐Ÿคญ", "๐Ÿ˜", "๐Ÿ˜™", "๐Ÿ™ƒ", "๐Ÿค—"]
  646. h = "โ—ฝ๏ธ"
  647. first = ""
  648. pattern_lines = "".join([h*9, "\n", h*2, arr[0]*2, h, arr[0]*2, h*2, "\n",
  649. h, arr[0]*7, h, "\n", h, arr[0]*7, h, "\n",
  650. h, arr[0]*7, h, "\n", h*2, arr[0]*5, h*2, "\n",
  651. h*3, arr[0]*3, h*3, "\n", h*4, arr[0], h*4]).split("\n")
  652. for i in pattern_lines:
  653. first += i + "\n"
  654. try:
  655. await message.edit(first)
  656. except Exception:
  657. pass
  658. await sleep(0.2)
  659. for i in arr:
  660. txt = "".join([h*9, "\n", h*2, i*2, h, i*2, h*2, "\n", h, i*7, h, "\n", h, i*7, h, "\n",
  661. h, i*7, h, "\n", h*2, i*5, h*2, "\n", h*3, i*3, h*3, "\n", h*4, i, h*4, "\n", h*9])
  662. try:
  663. await message.edit(txt)
  664. except Exception:
  665. pass
  666. await sleep(0.3)
  667. for _ in range(8):
  668. rand = random.choices(arr, k=34)
  669. txt = "".join([h*9, "\n", h*2, rand[0], rand[1], h, rand[2], rand[3], h*2, "\n",
  670. h, rand[4], rand[5], rand[6], rand[7], rand[8], rand[9], rand[10], h, "\n",
  671. h, rand[11], rand[12], rand[13], rand[14], rand[15], rand[16], rand[17], h, "\n",
  672. h, rand[18], rand[19], rand[20], rand[21], rand[22], rand[23], rand[24], h, "\n",
  673. h*2, rand[25], rand[26], rand[27], rand[28], rand[29], h*2, "\n",
  674. h*3, rand[30], rand[31], rand[32], h*3, "\n", h*4, rand[33], h*4, "\n", h*9])
  675. try:
  676. await message.edit(txt)
  677. except Exception:
  678. pass
  679. await sleep(0.3)
  680. fourth = "".join([h*9, "\n", h*2, arr[0]*2, h, arr[0]*2, h*2, "\n", h, arr[0]*7, h, "\n",
  681. h, arr[0]*7, h, "\n", h, arr[0]*7, h, "\n", h*2, arr[0]*5, h*2, "\n",
  682. h*3, arr[0]*3, h*3, "\n", h*4, arr[0], h*4, "\n", h*9])
  683. try:
  684. await message.edit(fourth)
  685. except Exception:
  686. pass
  687. for _ in range(47):
  688. fourth = fourth.replace(arr[0], "๐Ÿฅฐ", 1)
  689. try:
  690. await message.edit(fourth)
  691. except Exception:
  692. pass
  693. await sleep(0.1)
  694. for i in range(8):
  695. try:
  696. await message.edit((arr[0]*(8-i)+"\n")*(8-i))
  697. except Exception:
  698. pass
  699. await sleep(0.4)
  700. for i in ["MAN", "MAN โค๏ธ", "MAN โค๏ธ", "MAN โค๏ธ ABJAGIZNI CHIQARAMAN๐Ÿชจ๐Ÿ˜…!"]:
  701. try:
  702. await message.edit(f"**{i}**")
  703. except Exception:
  704. pass
  705. await sleep(0.5)
  706. except Exception as e:
  707. print(f"[WARN] do_magic_emodji error: {e}")
  708.  
  709. @client.on(events.NewMessage(outgoing=True, pattern=r'^\.(?:mt|mtcmd)\s+(.+)', func=lambda e: True))
  710. async def mt_handler(event):
  711. try:
  712. sender = await event.get_sender()
  713. if not sender or getattr(sender, "id", None) != ADMIN_ID:
  714. return
  715.  
  716. m = event.pattern_match
  717. text = m.group(1).strip()
  718. if not text:
  719. await event.reply(format_reply("โš ๏ธ Iltimos, matn kiriting: .mt ng matningiz"))
  720. return
  721.  
  722. text = text.replace("<3", "๐Ÿ’–")
  723. try:
  724. await event.edit(letters[" "].replace("0", MAGIC_SYMBOLS[0]))
  725. except Exception:
  726. pass
  727.  
  728. _last = ""
  729. for letter in text:
  730. if _last and _last == letter:
  731. await sleep(0.7)
  732. continue
  733.  
  734. if letter not in letters and _last not in letters:
  735. await sleep(0.7)
  736. continue
  737. frame = letters.get(letter.lower(), "**๐Ÿšซ Not supported symbol**")
  738. frame = frame.replace("0", MAGIC_SYMBOLS[0]).replace("1", MAGIC_SYMBOLS[1])
  739. try:
  740. await event.edit(frame)
  741. except Exception:
  742. pass
  743.  
  744. _last = letter
  745. await sleep(0.7)
  746.  
  747. text = text.replace("๐Ÿ’–", "<3")
  748. try:
  749. await event.edit(f"{MAGIC_SYMBOLS[0]}{MAGIC_SYMBOLS[1]}**{text}**{MAGIC_SYMBOLS[1]}{MAGIC_SYMBOLS[0]}")
  750. except Exception:
  751. try:
  752. await event.reply(f"{MAGIC_SYMBOLS[0]}{MAGIC_SYMBOLS[1]}{text}{MAGIC_SYMBOLS[1]}{MAGIC_SYMBOLS[0]}")
  753. except Exception:
  754. pass
  755.  
  756. except Exception as e:
  757. print(f"[ERROR] mt_handler: {e}")
  758.  
  759. @client.on(events.NewMessage(outgoing=True, pattern=r'^\.magic$', func=lambda e: True))
  760. async def magic_handler(event):
  761. try:
  762. sender = await event.get_sender()
  763. if not sender or getattr(sender, "id", None) != ADMIN_ID:
  764. return
  765. await do_magic_original(event)
  766. except Exception as e:
  767. print(f"[ERROR] magic_handler: {e}")
  768.  
  769. @client.on(events.NewMessage(outgoing=True, pattern=r'^\.magic2$', func=lambda e: True))
  770. async def magic2_handler(event):
  771. try:
  772. sender = await event.get_sender()
  773. if not sender or getattr(sender, "id", None) != ADMIN_ID:
  774. return
  775. await do_magic_emodji(event)
  776. except Exception as e:
  777. print(f"[ERROR] magic2_handler: {e}")
  778.  
  779. @client.on(events.NewMessage(outgoing=True, pattern=r'^\.ovoz\s+(.+)', func=lambda e: True))
  780. async def ovoz_handler(event):
  781. try:
  782. sender = await event.get_sender()
  783. if not sender or getattr(sender, "id", None) != ADMIN_ID:
  784. return
  785. m = event.pattern_match
  786. filename = m.group(1).strip()
  787. path = f"voices/{filename}"
  788. await event.respond(file=path)
  789. print(f"[ADMIN] Sent voice {path}")
  790. except Exception as e:
  791. print(f"[ERROR] ovoz_handler: {e}")
  792.  
  793. async def main():
  794. await client.start(PHONE_NUMBER)
  795. me = await client.get_me()
  796. print(f"โœ… Userbot running as {me.first_name} (@{getattr(me,'username',None)}) id={me.id}")
  797. print("Listening for private messages and .magic/.mt/.ovoz commands...")
  798. await client.run_until_disconnected()
  799.  
  800. if __name__ == "__main__":
  801. try:
  802. asyncio.run(main())
  803. except (KeyboardInterrupt, SystemExit):
  804. print("Shutting down userbot.")
Tags: python tg
Add Comment
Please, Sign In to add comment