ANDHEKA/Stringtest
0
1import base642import struct3import asyncio4import ipaddress5import requests as r6 7from Hack import bot8from logger import LOGGER9from traceback import format_exc10from env import HOLOG_GROUP_ID, MUST_JOIN, DISABLED11 12from telethon import errors, Button13from telethon.events import CallbackQuery14from telethon.tl.functions.channels import GetParticipantRequest15from telethon.sessions.string import _STRUCT_PREFORMAT, CURRENT_VERSION, StringSession16from telethon.errors.rpcerrorlist import UserNotParticipantError, UserIsBlockedError17 18 19MENU1 = '''20๐ - ๐๐ต๐ฒ๐ฐ๐ธ ๐๐๐ฒ๐ฟ ๐ผ๐๐ป ๐ด๐ฟ๐ผ๐๐ฝ๐ ๐ฎ๐ป๐ฑ ๐ฐ๐ต๐ฎ๐ป๐ป๐ฒ๐น๐(๐ฃ๐จ๐๐๐๐ ๐ข๐ก๐๐ฌ)21 22๐ - ๐๐ต๐ฒ๐ฐ๐ธ ๐๐๐ฒ๐ฟ ๐ฎ๐น๐น ๐ถ๐ป๐ณ๐ผ๐ฟ๐บ๐ฎ๐๐ถ๐ผ๐ป ๐น๐ถ๐ธ๐ฒ ๐ฝ๐ต๐ผ๐ป๐ฒ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ, ๐๐๐ฟ๐ป๐ฎ๐บ๐ฒ... ๐ฒ๐๐ฐ23 24๐ - ๐๐ฎ๐ป ๐ฎ๐น๐น ๐๐ต๐ฒ ๐บ๐ฒ๐บ๐ฏ๐ฒ๐ฟ๐ ๐ณ๐ฟ๐ผ๐บ ๐๐ต๐ฒ ๐ด๐ฟ๐ผ๐๐ฝ25 26๐ - ๐๐ป๐ผ๐ ๐๐๐ฒ๐ฟ ๐น๐ฎ๐๐ ๐ผ๐๐ฝ, ๐จ๐๐ฒ ๐ผ๐ฝ๐๐ถ๐ผ๐ป ๐ ๐ณ๐ถ๐ฟ๐๐ ๐๐ผ ๐๐ฎ๐ธ๐ฒ ๐ป๐๐บ๐ฏ๐ฒ๐ฟ ๐๐ต๐ฒ๐ป ๐น๐ผ๐ด๐ถ๐ป27 28๐ - ๐๐ผ๐ถ๐ป ๐ ๐๐ฟ๐ผ๐๐ฝ/๐๐ต๐ฎ๐ป๐ป๐ฒ๐น/๐๐ถ๐ป๐ธ ๐๐ถ๐ฎ ๐ฆ๐๐ฟ๐ถ๐ป๐ด๐ฆ๐ฒ๐๐๐ถ๐ผ๐ป29 30๐ - ๐๐ฒ๐ฎ๐๐ฒ ๐ ๐๐ฟ๐ผ๐๐ฝ/๐๐ต๐ฎ๐ป๐ป๐ฒ๐น ๐๐ถ๐ฎ ๐ฆ๐๐ฟ๐ถ๐ป๐ด๐ฆ๐ฒ๐๐๐ถ๐ผ๐ป31 32๐ - ๐๐ฒ๐น๐ฒ๐๐ฒ ๐ ๐๐ฟ๐ผ๐๐ฝ/๐๐ต๐ฎ๐ป๐ป๐ฒ๐น33 34๐ - ๐๐ต๐ฒ๐ฐ๐ธ ๐๐๐ฒ๐ฟ ๐๐๐ผ ๐๐๐ฒ๐ฝ ๐ถ๐ ๐ฒ๐ป๐ฒ๐ฎ๐ฏ๐น๐ฒ ๐ผ๐ฟ ๐ฑ๐ถ๐๐ฎ๐ฏ๐น๐ฒ35'''36 37MENU2 = '''38๐ - ๐ง๐ฒ๐ฟ๐บ๐ถ๐ป๐ฎ๐๐ฒ ๐๐น๐น ๐ฐ๐๐ฟ๐ฟ๐ฒ๐ป๐ ๐ฎ๐ฐ๐๐ถ๐๐ฒ ๐๐ฒ๐๐๐ถ๐ผ๐ป๐ ๐ฒ๐
๐ฐ๐ฒ๐ฝ๐ ๐ฌ๐ผ๐๐ฟ ๐ฆ๐๐ฟ๐ถ๐ป๐ด๐ฆ๐ฒ๐๐๐ถ๐ผ๐ป39 40๐ - ๐๐ฒ๐น๐ฒ๐๐ฒ ๐๐ฐ๐ฐ๐ผ๐๐ป๐41 42๐ - ๐๐ฒ๐ฎ๐๐ฒ ๐๐น๐น ๐๐ฟ๐ผ๐๐ฝ๐/๐๐ต๐ฎ๐ป๐ป๐ฒ๐น๐43 44๐ - ๐๐ฟ๐ผ๐ฎ๐ฑ๐ฐ๐ฎ๐๐ ๐๐๐๐๐ผ๐ป๐45 46๐ - ๐ง๐ฒ๐ฟ๐บ๐ถ๐ป๐ฎ๐๐ฒ ๐๐๐ฟ๐ฟ๐ฒ๐ป๐ ๐ฆ๐ฒ๐๐๐ถ๐ผ๐ป47 48๐ก - ๐๐ป๐๐ถ๐๐ฒ ๐๐น๐น49 50๐ข - ๐๐ฒ๐บ๐ผ๐๐ฒ ๐ฎ ๐บ๐ฒ๐บ๐ฏ๐ฒ๐ฟ51 52๐ฃ - ๐ฃ๐ฟ๐ผ๐บ๐ผ๐๐ฒ ๐ฎ ๐บ๐ฒ๐บ๐ฏ๐ฒ๐ฟ53'''54 55BROADCAST_BUTTONS = [[56 Button.inline("Group", data="1"),57 Button.inline("User", data="2"),58], [59 Button.inline("All", data="3"),60]]61 62BROADCAST_OPTION = {63 b"1": {64 "group": True65 },66 b"2": {67 "user": True68 },69 b"3": {70 "group": True,71 "user": True72 }73}74 75KEYBOARD1 = [76 [77 Button.inline("A", data="A"),78 Button.inline("B", data="B"),79 Button.inline("C", data="C"),80 Button.inline("D", data="D")81 ],82 [83 Button.inline("E", data="E"),84 Button.inline("F", data="F"),85 Button.inline("G", data="G"),86 Button.inline("H", data="H")87 ],88 [89 Button.inline("๐ก๐๐ซ๐ง โญ๏ธ", data="next")90 ]91]92 93KEYBOARD2 = [94 [95 Button.inline("I", data="I"),96 Button.inline("J", data="J"),97 Button.inline("K", data="K"),98 Button.inline("L", data="L")99 ],100 [101 Button.inline("M", data="M"),102 Button.inline("N", data="N"),103 Button.inline("O", data="O"),104 Button.inline("P", data="P")105 ],106 [107 Button.inline(" ๐๐๐๐ โฎ๏ธ", data="back")108 ]109]110 111 112async def join_checker(e):113 if not MUST_JOIN:114 return True115 chat = await bot.get_entity(MUST_JOIN)116 try:117 await bot(GetParticipantRequest(chat, e.sender_id))118 return True119 except UserNotParticipantError:120 join_chat = f"https://t.me/{chat.username}"121 button = [[122 Button.url(text="Join", url=join_chat),123 ]]124 125 TEXT = "Hey looks like you haven't join our chat yet, Please join first!"126 127 await bot.send_message(e.sender_id, TEXT, buttons=button)128 129 return False130 except Exception as err:131 LOGGER(__name__).error(err)132 return True133 134 135def paste(text):136 link = 'https://spaceb.in/'137 url = 'https://spaceb.in/api/v1/documents'138 payload = {"content": text, "extension": "txt"}139 headers = {140 "Content-Type": "application/json"141 }142 143 response = r.post(url, json=payload, headers=headers)144 hash = response.json().get('payload').get('id')145 146 return link + hash147 148 149def on_callback(data=None):150 def dec(func):151 async def wrap(e):152 check = await join_checker(e)153 if not check:154 return155 156 if func.__name__ in DISABLED:157 await e.answer("This function is currently disabled", alert=True)158 return159 try:160 await func(e)161 except errors.common.AlreadyInConversationError:162 pass163 except (asyncio.CancelledError, UserIsBlockedError):164 return165 except Exception as err:166 ERROR_TXT = f'ERROR MESSAGE:- {err}'167 ERROR_TXT += f'\n\nERROR TRACEBACK:- {format_exc()}'168 if HOLOG_GROUP_ID:169 try:170 link = paste(ERROR_TXT)171 await bot.send_message(HOLOG_GROUP_ID, link, link_preview=False)172 except:173 pass174 else:175 LOGGER(__name__).error(ERROR_TXT)176 await e.reply('Some Error occur from bot side. Please report it to @MASTIWITHFRIENDSXD')177 178 bot.add_event_handler(wrap, CallbackQuery(data=data))179 180 return dec181 182 183 184# https://github.com/TeamUltroid/Ultroid/blob/main/pyUltroid/startup/connections.py185 186_PYRO_FORM = {351: ">B?256sI?", 356: ">B?256sQ?", 362: ">BI?256sQ?"}187 188DC_IPV4 = {189 1: "149.154.175.53",190 2: "149.154.167.51",191 3: "149.154.175.100",192 4: "149.154.167.91",193 5: "91.108.56.130",194}195 196 197def validate_session(session):198 # Telethon Session199 if session.startswith(CURRENT_VERSION):200 if len(session.strip()) != 353:201 return False202 return StringSession(session)203 204 # Pyrogram Session205 elif len(session) in _PYRO_FORM.keys():206 if len(session) in [351, 356]:207 dc_id, _, auth_key, _, _ = struct.unpack(208 _PYRO_FORM[len(session)],209 base64.urlsafe_b64decode(session + "=" *210 (-len(session) % 4)),211 )212 else:213 dc_id, _, _, auth_key, _, _ = struct.unpack(214 _PYRO_FORM[len(session)],215 base64.urlsafe_b64decode(session + "=" *216 (-len(session) % 4)),217 )218 return StringSession(CURRENT_VERSION + base64.urlsafe_b64encode(219 struct.pack(220 _STRUCT_PREFORMAT.format(4),221 dc_id,222 ipaddress.ip_address(DC_IPV4[dc_id]).packed,223 443,224 auth_key,225 )).decode("ascii"))226 else:227 return False228 