├── requirements.txt ├── Data ├── Fake_Details │ ├── Photos │ │ ├── 1.jpg │ │ ├── 11.jpg │ │ ├── 12.jpg │ │ ├── 13.jpg │ │ ├── 14.jpg │ │ ├── 15.jpg │ │ ├── 16.jpg │ │ ├── 17.jpg │ │ ├── 18.jpg │ │ ├── 19.jpg │ │ ├── 2.jpg │ │ ├── 20.jpg │ │ ├── 21.jpg │ │ ├── 22.jpg │ │ ├── 23.jpg │ │ ├── 24.jpg │ │ ├── 25.jpg │ │ ├── 26.jpg │ │ ├── 27.jpg │ │ ├── 28.jpg │ │ ├── 29.jpg │ │ ├── 3.jpg │ │ ├── 30.jpg │ │ ├── 31.jpg │ │ ├── 32.jpg │ │ ├── 33.jpg │ │ ├── 34.jpg │ │ ├── 37.jpg │ │ ├── 38.jpg │ │ ├── 4.jpg │ │ ├── 40.jpg │ │ ├── 47.jpg │ │ ├── 48.jpg │ │ ├── 49.jpg │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ ├── photo_2022-05-02_12-00-06.jpg │ │ ├── photo_2022-05-02_12-00-22.jpg │ │ ├── photo_2022-05-02_12-00-26.jpg │ │ ├── photo_2022-05-02_12-00-29.jpg │ │ ├── photo_2022-05-02_12-00-32.jpg │ │ ├── photo_2022-05-02_12-00-34.jpg │ │ ├── photo_2022-05-02_12-00-40.jpg │ │ ├── photo_2022-05-02_12-00-42.jpg │ │ ├── photo_2022-05-02_12-00-45.jpg │ │ ├── photo_2022-05-02_12-00-47.jpg │ │ ├── photo_2022-05-02_12-00-50.jpg │ │ ├── photo_2022-05-02_12-00-53.jpg │ │ ├── photo_2022-05-02_12-00-55.jpg │ │ ├── photo_2022-05-02_12-00-57.jpg │ │ ├── photo_2022-05-02_12-00-59.jpg │ │ ├── photo_2022-05-02_12-01-01.jpg │ │ ├── photo_2022-05-02_12-01-03.jpg │ │ ├── photo_2022-05-02_12-01-06.jpg │ │ ├── photo_2022-05-02_12-01-08.jpg │ │ ├── photo_2022-05-02_12-01-10.jpg │ │ ├── photo_2022-05-02_12-01-12.jpg │ │ ├── photo_2022-05-02_12-01-15.jpg │ │ ├── photo_2022-05-02_12-01-17.jpg │ │ ├── photo_2022-05-02_12-01-19.jpg │ │ ├── photo_2022-05-02_12-01-21.jpg │ │ ├── photo_2022-05-02_12-01-23.jpg │ │ ├── photo_2022-05-02_12-01-25.jpg │ │ ├── photo_2022-05-02_12-01-27.jpg │ │ ├── photo_2022-05-02_12-01-29.jpg │ │ ├── photo_2022-05-02_12-01-31.jpg │ │ ├── photo_2022-05-02_12-01-35.jpg │ │ ├── photo_2022-05-02_12-01-37.jpg │ │ ├── photo_2022-05-02_12-01-39.jpg │ │ ├── photo_2022-05-02_12-01-41.jpg │ │ └── photo_2022-05-02_12-01-43.jpg │ ├── Username.txt │ ├── Name.txt │ ├── Messages.txt │ └── Bio.txt └── DataBase.py ├── APIs.txt ├── plugins ├── BOT │ └── __init__.py ├── Api │ ├── step_one.py │ ├── step_two.py │ ├── step_four.py │ ├── step_three.py │ └── helper_steps.py ├── Commands.py ├── Callbacks.py ├── Managing.py ├── Seen.py └── Accounts.py ├── LICENSE ├── __main__.py ├── Funcs.py ├── README.md ├── Classes ├── NumberClass.py └── UserClass.py ├── Config ├── __init__.py ├── BUTTONS.py └── TEXTS.py ├── proxy.txt └── Advertiserbot.py /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | pyrogram 3 | tabulate 4 | bs4 -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/1.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/11.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/12.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/13.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/14.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/15.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/16.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/17.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/18.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/19.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/2.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/20.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/21.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/22.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/23.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/24.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/25.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/26.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/27.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/28.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/29.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/3.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/30.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/31.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/32.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/33.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/34.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/37.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/38.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/4.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/40.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/47.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/48.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/49.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/49.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/5.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/6.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/7.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-06.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-22.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-26.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-29.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-32.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-34.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-40.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-42.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-45.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-47.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-50.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-53.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-53.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-55.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-57.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-00-59.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-00-59.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-01.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-03.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-06.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-08.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-10.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-12.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-15.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-17.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-19.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-21.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-23.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-25.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-27.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-29.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-31.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-35.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-37.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-39.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-41.jpg -------------------------------------------------------------------------------- /Data/Fake_Details/Photos/photo_2022-05-02_12-01-43.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amiralirj/DarkAdvertizer/HEAD/Data/Fake_Details/Photos/photo_2022-05-02_12-01-43.jpg -------------------------------------------------------------------------------- /APIs.txt: -------------------------------------------------------------------------------- 1 | c6f616b42d8c5b6cb36aaa5ee73a02e9:19190990 2 | fe1d58983db8d4ba5c0967531fe53a1c:16872782 3 | 028e2404eac1118f6bc09a2656a6e1f3:10315304 4 | b9ec0a87f0991942e5016e5ba08a0837:2944284 5 | 7545bbd5fc96a6e6bb7d94a3d898aec8:14150783 6 | ea638ebb1554b2a4ef24ff845984f40b:6224961 7 | 617c053a4eac62f93dc3b35eaf7187b8:13737398 8 | 7545bbd5fc96a6e6bb7d94a3d898aec8:14150783 9 | 8372a960e242d6b7cb60e6850b77ac1f:13558964 10 | -------------------------------------------------------------------------------- /plugins/BOT/__init__.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | SCRIPT_DIR = str(os.path.dirname(os.path.abspath(__file__))).strip(r'\plugins\BOT') 4 | sys.path.insert(-1,(SCRIPT_DIR)) 5 | CWD=os.getcwd() 6 | del os , sys 7 | from Advertiserbot import Advertising , Rj 8 | import Config 9 | from Config import TEXTS , BUTTONS 10 | from Classes.NumberClass import Number 11 | from Classes.UserClass import User 12 | RJ=Rj() -------------------------------------------------------------------------------- /Data/Fake_Details/Username.txt: -------------------------------------------------------------------------------- 1 | zahra_mv 2 | Badgirlll_Ix 3 | Priii_XXX 4 | XX_GIRL_XX 5 | Bad_Girl_Nana 6 | Persian_Girl 7 | Call_ME_Fatiiiii 8 | Call_ME_Anna 9 | Anna_Haghdost 10 | Meooow_ir 11 | BadgallNana 12 | Fateme_Ixxx 13 | ix_Aynaz 14 | paria_iii 15 | Hot_Bad_Girl 16 | Cat_Girl 17 | Bat_Girlll 18 | Be_White2020 19 | Bad_Horny_Girlll 20 | Dont_Tag_meee 21 | Dokhi_Badkar 22 | Dookhiii_sheytoon 23 | Devil_Dookhi 24 | Devil_Girll 25 | -------------------------------------------------------------------------------- /plugins/Api/step_one.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """ STEP ONE """ 4 | 5 | import requests 6 | 7 | 8 | def request_tg_code_get_random_hash(input_phone_number,Proxy): 9 | """ requests Login Code 10 | and returns a random_hash 11 | which is used in STEP TWO """ 12 | request_url = "https://my.telegram.org/auth/send_password" 13 | request_data = { 14 | "phone": input_phone_number 15 | } 16 | response_c = requests.post(request_url, data=request_data,proxies=Proxy) 17 | json_response = response_c.json() 18 | return json_response["random_hash"] 19 | -------------------------------------------------------------------------------- /Data/Fake_Details/Name.txt: -------------------------------------------------------------------------------- 1 | Anna 🎀 2 | ᴢᴀʜʀᴀ 3 | MΛЯYΛM 4 | Negin 🍬 5 | 𝓡𝓪𝓱𝓪🥥 6 | Fatima🐣 7 | ♥ goli ♥ 8 | 𝔻𝕖𝕧𝕚𝕝 𝔾𝕚𝕣𝕝👻 9 | ᗷᗩᕼᗩᖇE 10 | Mohadese 11 | -Fati 12 | Baby Girl 13 | ᔕOGᗩᑎᗪ 14 | Rebeca🐣 15 | Moew😾 16 | 𝕸𝖊𝖔𝖜 17 | ℕ𝕒𝕤𝕚𝕞🎈 18 | Ykta 🍓 19 | Nfs 🥥 20 | 𝘌𝘭𝘢𝘩𝘦💋 21 | 𝕸𝖔𝖏𝖆𝖓💎 22 | 𝚖𝚘𝚑𝚊𝚍𝚎𝚜𝚎🍭 23 | Parnaz 💗 24 | 𝚂𝚊𝚍𝚊𝚏 🐚 25 | 𝘋𝘢𝘳𝘺𝘢 26 | ᔕᗩᕼEᒪ 27 | ѕαнєℓ 28 | Sara 🐼 29 | Zinab 🐼 30 | 𝖋𝖆𝖙𝖊𝖒𝖊 31 | 𝐿𝒶𝓁𝑒🕊 32 | ЯΣΛD ΉΣΛЯƬ💜 33 | Helia 🐻 34 | Lale 35 | Setayesh 36 | 𝚜𝚎𝚝𝚊𝚢𝚎𝚜𝚑 37 | ᏁᎥᏦᎥ 38 | 𝚙𝚊𝚛𝚟𝚊𝚗𝚎 39 | PΛЯVΛПΣ 40 | ᑭᗩᖇᐯᗩᑎE 41 | ᖴᗩᖇᑎᗩᘔ 42 | 𝐅𝐚𝐫𝐧𝐚𝐳 43 | 𝑅𝒶𝒽𝑒𝓁𝑒 44 | 𝒶𝓋𝒶 45 | αʋα 46 | 𝚜𝚊𝚑𝚊𝚛 47 | 𝙨𝙖𝙝𝙖𝙧 48 | 𝘴𝘩𝘢𝘣𝘯𝘢𝘮 49 | 𝓼𝓱𝓮𝔂𝓭𝓪 50 | 𝓈𝒽𝑒𝓎𝒹𝒶 -------------------------------------------------------------------------------- /plugins/Api/step_two.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """ STEP TWO """ 5 | 6 | import requests 7 | 8 | 9 | def login_step_get_stel_cookie( 10 | input_phone_number, 11 | tg_random_hash, 12 | tg_cloud_password, 13 | Proxy 14 | ): 15 | """Logins to my.telegram.org and returns the cookie, 16 | or False in case of failure""" 17 | request_url = "https://my.telegram.org/auth/login" 18 | request_data = { 19 | "phone": input_phone_number, 20 | "random_hash": tg_random_hash, 21 | "password": tg_cloud_password 22 | } 23 | response_c = requests.post(request_url, data=request_data,proxies=Proxy) 24 | # 25 | re_val = None 26 | re_status_id = None 27 | if response_c.text == "true": 28 | re_val = response_c.headers.get("Set-Cookie") 29 | re_status_id = True 30 | else: 31 | re_val = response_c.text 32 | re_status_id = False 33 | return re_status_id, re_val 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 amirali rajabi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Data/Fake_Details/Messages.txt: -------------------------------------------------------------------------------- 1 | دلام 2 | خوبی 3 | مرسی من خوبم تو چطوری 4 | قربونت منم خوبم 5 | چه خبر 6 | رل زدم تو چه خبر 7 | :))))))))) رل زدی ؟ 8 | ارع تو سینگلی مگه ؟ 9 | نه من با دارک اتکر تو رابطه ام 10 | وایی چه بد دارک اتکر خیلی جذاب بود 11 | کات کردم 12 | مامانتینا خوبن ؟ 13 | عاشقتم 14 | منم همینطور 15 | حاجی خیلیییی درگیر زندگیمم 16 | وای من خیلی بگایی دارم 17 | salam 18 | khobi ostad 19 | برای دارک اتکر پیوی کی برم ؟ 20 | حاجی حسام چطوره ؟ 21 | خداروشکر 22 | www.github.com/amiralirj 23 | اهوم 24 | بی پولی خیلی سخته واقعا 25 | پشت سر من کسشر گفتی حاجی ؟ 26 | کس میخوام 27 | cos(90) ? 28 | کنکورو ریدممممممممممممممم 29 | ریدمممم 30 | 😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂 31 | 😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭😭 32 | بقورمت 👅 33 | دوستتون دارم من 🫀 34 | میووووووووووو 35 | خسته شدم چقدر کصشر بنویسم اخه 😐😐 36 | وای 😐😐😐😐😐 37 | الیزابت مرد پشمام 😐😐😐 38 | پشمامممممممممممممممممممممممم 39 | جررررررررررررررررررررررررررررر 40 | خخخخخخخخخخخخخخخخخخخخخخخخخخخخخ 41 | تخخخخخخخخخختختختخ ذتریع 42 | خیلی خندیدم 43 | پدرم فوت کرد حاجی 44 | تسلیت 🖤 45 | سگ خریدم خیخی 46 | خداحافظ 47 | پشت فرمونم 48 | حاجی زن گرفتم 49 | خیلی گاوی 50 | 10 تومن دارب دستی بدی ؟ 51 | دارک اتکر چقدر خفنه پشمامممممممم 52 | اره بیناموس خیلی خفنه هعی -------------------------------------------------------------------------------- /plugins/Api/step_four.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # Copyright (c) Shrimadhav U K 4 | 5 | """ STEP FOUR """ 6 | 7 | import random 8 | import requests 9 | 10 | 11 | def create_new_tg_app( 12 | stel_token, 13 | tg_app_hash, 14 | app_title, 15 | app_shortname, 16 | app_url, 17 | app_desc, 18 | Proxy 19 | ): 20 | app_platform = [ 21 | "android", 22 | "ios", 23 | "wp", 24 | "bb", 25 | "desktop", 26 | "web", 27 | "ubp", 28 | "other" 29 | ] 30 | # pylint: disable-msg=too-many-arguments 31 | """ creates a new my.telegram.org/apps 32 | using the provided parameters """ 33 | request_url = "https://my.telegram.org/apps/create" 34 | custom_header = { 35 | "Cookie": stel_token 36 | } 37 | request_data = { 38 | "hash": tg_app_hash, 39 | "app_title": app_title, 40 | "app_shortname": app_shortname, 41 | "app_url": app_url, 42 | "app_platform": random.choice(app_platform), 43 | "app_desc": app_desc 44 | } 45 | response_c = requests.post( 46 | request_url, 47 | data=request_data, 48 | headers=custom_header, 49 | proxies=Proxy 50 | ) 51 | return response_c 52 | -------------------------------------------------------------------------------- /__main__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019-2022 Dan 2 | # Copyright (c) 2022 3 | # 4 | # Permission is hereby granted, free of charge, to any person obtaining a 5 | # copy of this software and associated documentation files (the "Software"), 6 | # to deal in the Software without restriction, including without 7 | # limitation the rights to use, copy, modify, merge, publish,s 8 | # distribute, sublicense, and/or sell copies of the Software, 9 | # and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be 13 | # included in all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20 | # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21 | # OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | from Advertiserbot import Advertising 24 | 25 | if __name__ == "__main__": 26 | Advertising().run() 27 | -------------------------------------------------------------------------------- /Funcs.py: -------------------------------------------------------------------------------- 1 | from random import choice 2 | from asyncio import sleep 3 | import requests 4 | 5 | 6 | 7 | async def proxy_getter(): 8 | resp = requests.get('https://api.proxyscrape.com/?request=getproxies&proxytype=http&timeout=1000&anonymity=elite&ssl=all') 9 | #print(resp.text) 10 | r=str(resp.text).split('\n') 11 | host_url = 'https://www.example.org' 12 | for i in r: 13 | try: 14 | proxy=i.split(':') 15 | proxies={'ip':'{}'.format(proxy[0]),'port':'{}'.format(proxy[1])} 16 | headers=None 17 | response = requests.get(host_url, headers=headers, proxies=proxies,timeout=12) 18 | #print(f'proxy Working {i}') 19 | with open('proxy.txt', 'a+') as f: 20 | f.write(f'{i[0:-1]}\n') 21 | except : 22 | pass 23 | 24 | await sleep(200) 25 | await proxy_getter() 26 | 27 | 28 | def get_proxy(): 29 | proxy_list=[] 30 | with open('proxy.txt','r') as f: 31 | for i in f: 32 | proxy_list.append(i) 33 | rnd=choice(proxy_list[-3:-1]) 34 | proxy=rnd.split(':') 35 | proxies={'ip':'{}'.format(proxy[0]),'port':'{}'.format(proxy[1])} 36 | try: 37 | response = requests.get('https://www.example.org', headers=None, proxies=proxies,timeout=5) 38 | except: 39 | for i in range(10): 40 | #print('proxy not found ! wait ...') 41 | rnd=choice(proxy_list) 42 | proxy=rnd.split(':') 43 | proxies={'ip':'{}'.format(proxy[0]),'port':'{}'.format(proxy[1])} 44 | try: 45 | response = requests.get('https://www.example.org', headers=None, proxies=proxies,timeout=5) 46 | break 47 | except:pass 48 | p=(str(rnd)).split(':') 49 | return {'ip':p[0],'port':int(p[1])} 50 | 51 | 52 | -------------------------------------------------------------------------------- /Data/Fake_Details/Bio.txt: -------------------------------------------------------------------------------- 1 | [ من چنانم که محال است کسی "درڪ" کند! ] 2 | من و تو کنار هم قشنگ ترین ترکیب دنیاییم😍❤🤤 3 | عوض شد اون دختری که از تاریکی می‌ترسید.....! 4 | މވࡄℒℴνℯࡅߺ߳ߺࡉ މߊހތ 💌🔒 5 | باختم چون آرایشه رفیقم غلیظ تر بود:)🖕🏻 6 | NO ONE IS HERE 7 | GOD KILLER 8 | MOEW 9 | 02:02 10 | 00:00 11 | 🪐⃤••𝗧 𝗛 𝗘 ⠀⠀ʙᴇᴀᴜᴛʏ ᴏғ ᴘᴇᴏᴘʟᴇ ɪs ɪɴ ᴛʜᴇɪʀ ⠀⠀ʜᴇᴀʀᴛs , ɴᴏᴛ ᴛʜᴇɪʀ ғᴀᴄᴇs 12 | ○━─ ᴱᵞᴱˢ ᵀᴱᴸᴸ ᵀᴿᵁᵀᴴ ─⇆ 13 | 𝗧𝗛𝗘 𝗟𝗘𝗦𝗦 𝗨 𝗞𝗡𝗢𝗪 14 | ᴛʜᴇ ᴍᴏʀᴇ ᴄᴀʟᴍ ʏᴏᴜ ᴀʀᴇ 15 | ☘ 16 | ‌ 𝐼 𝓁𝑜𝓋𝑒 𝒴𝑜𝓊 ♥️ 17 | ₑᵥₑᵣy ₛₑcₒₙd ₘₒᵣₑ ₜₕₐₙ bₑfₒᵣₑ. 18 | ‌‌ ℑ𝔣 𝔜𝔬𝔲 𝔅𝔢 𝔄 𝔉𝔯𝔦𝔢𝔫𝔡 𝔒𝔣 𝔲𝔯𝔰𝔢𝔩𝔣 19 | ʏᴏᴜ'ʟʟ ɴᴇᴠᴇʀ ʙᴇ ᴀʟᴏɴᴇ 20 | Never be the same to people, who aren't the same to you anymore . 21 | بہ هر کس اندازه‌ے لیاقتش بها بده نہ اندازه‌ے مرامت🙂✋🏻🍭 22 | ‌‌ ‌‌‌‌──• · · · ⌞🖤⌝ · · · •── 23 | ○━─ You can break me, but you will never destroy me ──⇆ 24 | ᵞᴼᵁ ᴹᴬᵞ ᴳᴱᵀ ᵀᴵᴿᴱᴰ ᴼᶠ ᴿᴱᴬᴸᴵᵀᵞ, ᴮᵁᵀ ᴺᴱᵛᴱᴿ ᴼᶠ ᴰᴿᴱᴬᴹˢ! 25 | ‌‌‌○━─My sin was only good ──⇆ 26 | 🖤⃟○━ ⌞ 𝒊𝒇 𝒊'𝒎 𝒖𝒑𝒔𝒆𝒕, 𝒊'𝒍𝒍 𝒖𝒑𝒔𝒆𝒕 𝒕𝒉𝒆𝒎⌝ ━─⇆ 27 | always smile laughter embarrasses your enemies 28 | 𝐵𝑒 𝑎 𝑄𝑢𝑒𝑒𝑛 𝐹𝑖𝑔ℎ𝑡𝑖𝑛𝐺 𝑎𝑙𝑜𝑛𝑒 29 | ملکه ای باش که تنهایی میجنگه . . 👑 30 | 𝗜𝗙 𝗜 𝗥𝗘𝗠𝗢𝗩𝗘 𝗦𝗢𝗠𝗘𝗢𝗡𝗘 31 | ɪ ᴡᴏɴ'ᴛ ʀᴇᴘᴇᴀᴛ ᴛʜᴇᴍ ᴀɢᴀɪɴ 32 | Stay kind. It makes you beautiful. 33 | ‌𝐃𝐨𝐧'𝐭 𝐖𝐢𝐬𝐡 𝐅𝐨𝐫 𝐢𝐭. 34 | 𝐖𝐨𝐫𝐤 𝐅𝐨𝐫 𝐢𝐭✨ 35 | 🍃‌‌⃤•• 𝗧𝗛𝗜𝗦 𝗜𝗦 𝗠𝗬 𝗟𝗜𝗙𝗘 36 | ᴡʜᴇɴᴇᴠᴇʀ ɪ ᴡᴀɴᴛ ᴛᴏ ᴘᴀɪɴᴛ ɪᴛ 37 | ⠀اونایی که تنهایی پرواز میکنن قوی ترین بال هارو دارن . 38 | 𝐼 𝑊𝑖𝑙𝑙 𝐵𝑒 𝑊𝑖𝑡𝘩 𝑌𝑜𝑢 𝐹𝑜𝑟𝑒𝑣𝑒𝑟 , 39 | 𝐹𝑟𝑖𝑒𝑛𝑑..💚 40 | 𝓨𝓸𝓾’𝓻𝓮 𝓪𝓵𝔀𝓪𝔂𝓼 𝓼𝓽𝓻𝓸𝓷𝓰𝓮𝓻 𝓽𝓱𝓪𝓷 𝔂𝓸𝓾 𝓽𝓱𝓲𝓷𝓴 41 | ‌‌‌ᵀʰᵉʳᵉ ⁱˢ ᵃ ᵗⁱᵐᵉ ʷʰᵉⁿ ᵗʰᵒˢᵉ ʷʰᵒ ʰᵃᵛᵉ ᵗʰᵉ ʷᵒʳˢᵗ ᵖᵃˢᵗ, ⁱⁿ ᵗʰᵉ ᵉⁿᵈ, ᵇᵘⁱˡᵈ ᵗʰᵉ ᵇᵉˢᵗ ᶠᵘᵗᵘʳᵉ!•🎧💛• 42 | ᶰʲᵒʸ ᴱᵛᵉʳʸ ᴹᵒᵐᵉᶰᵗ 43 | 𖤐♥️••ᗷEIᑎG ᗯITᕼ YOᑌ IS ᗯᕼᗩT I ᑕᗩᒪᒪ ᕼᗩᑭᑭIᑎESS 44 | 𝑆𝑒𝑛𝑖 𝑜̈𝑙𝑒𝑛𝑒 𝑘𝑎𝑑𝑎𝑟 𝑠𝑒𝑣𝑖𝑦𝑜𝑟𝑢𝑚 45 | ○━─ᴵ'ᴹ ᶠᵁᴸᴸ ᴼᶠ ᴾᴬᴵᴺ •͜• ──⇆ 46 | People dont forget anything They just live with it. 47 | ‹دوصِـ∝ـت‌دارم› ‌تاوَقتي ك بِمیرَم ♥️ 48 | 💫💜...𝕋𝕙𝕚𝕤 𝕚𝕤 𝕝𝕚𝕗𝕖,ℕ𝕠𝕥 𝕙𝕖𝕒𝕧𝕖𝕟 49 | 𝗟𝗘𝗔𝗥𝗡 𝗧𝗢 𝗕𝗘 𝗠𝗘𝗔𝗡 𝗦𝗢𝗠𝗘𝗧𝗜𝗠𝗘𝗦 ʏᴏᴜ ᴄᴀɴᴛ ᴀʟᴡᴀʏs ʙᴇ ɴɪᴄᴇ 50 | 𖤐⃟🖤••𝙎𝙄𝙇𝙀𝙉𝘾𝙀 𝙄𝙎 𝘽𝙀𝘼𝙐𝙏𝙄𝙁𝙐𝙇 𝙒𝙃𝙄𝙇𝙀 𝙋𝙀𝙊𝙋𝙇𝙀 𝙇𝙄𝙀 51 | ⠀‌ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![SQLite](https://img.shields.io/badge/sqlite-%2307405e.svg?style=for-the-badge&logo=sqlite&logoColor=white) ![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) [![GitHub license](https://img.shields.io/github/license/amiralirj/DarkAdvertizer.svg)](https://github.com/amiralirj/DarkAdvertizer/blob/master/LICENSE) 2 | - 3 | [![GitHub forks](https://img.shields.io/github/forks/amiralirj/DarkAdvertizer.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/amiralirj/DarkAdvertizer/network/) 4 | 5 | [![GitHub stars](https://img.shields.io/github/stars/amiralirj/DarkAdvertizer.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/amiralirj/DarkAdvertizer/stargazers/) 6 | # Account Receiver 🔥 7 | # DarkAdvertizer 🌪 8 | - 🔱 A bot for advertising and control accounts in TELEGRAM 🔱 9 | - 🔱 SAVE YOUR ACCOUNT IN ROBOT SAFELY 🔱 10 | ## Features ⚡️ 11 | - 🔥 Sending BANNERS IN PRIVATE CHAT 📨 12 | - 🔥 STARTING ROBOT WITH REFERAL ID 🤖 13 | - 🔥 DELETING & CLEAR CHATS WHICH ARE ANNOYABLE > ROBOTS & PV & CHANNELS & GROUPS 14 | - 🔥 SET FAKE PERSONALITY FOR ACCOUNTS > SET PHOTO & BIO & USERNAME & NAME 15 | - 🔥 COLLECTING USERS USERNAMES THAT ARE IN A GROUP 👥 16 | - 🔥 AIRDROP FACILITIES > START AND SEND CAPTCHA > ADDING REFFERALS 🚁 17 | - JOIN & LEAVE CHANNELS & GROUPS ❄️ 18 | - CHECK ACCOUNT STATUS 🔴 🟡 🟢 19 | - GET ACCOUNT API AUTOMATICALLY 🔁 20 | - SPAMMING IN GROUPS 📨 21 | - SENDING REACTIONS 🤪 22 | - BLOCK & UNBLOCK USER WITH ALL ACOUNTS 🔒 🔓 23 | - REPORT CHANNEL OR USER 📳 24 | - OTHER FACILITIES ... 25 | ## How To Install/Use ⚙️ 26 | - ### Setting up files 27 | - Clone or download the repository : `git clone https://github.com/amiralirj/DarkAdvertizer.git` 28 | - Edit Config»Info `__init__.py` , Replace optional path to save databases there 29 | - Replace your API > ApiID/ApiHash < [Get them from [Here](https://my.telegram.org/)] 30 | - REPLACE OTHER VARIABLEs 31 | - ### Installing requirements 32 | - Install required packages using `pip install -U -r requirements.txt` 33 | - Start The Bot : `python __main__.py` 34 | - pyromod==V1.5 , pyrogram V2.056 35 | - robot should be admin on banner channel (Banners_Channel) and main channel (Dark_Channel) 36 | - Advertise :) 37 | -------------------------------------------------------------------------------- /plugins/Api/step_three.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | """ STEP THREE """ 4 | 5 | import requests 6 | from bs4 import BeautifulSoup 7 | 8 | 9 | def scarp_tg_existing_app(stel_token,Proxy): 10 | """scraps the web page using the provided cookie, 11 | returns True or False appropriately""" 12 | request_url = "https://my.telegram.org/apps" 13 | custom_header = { 14 | "Cookie": stel_token 15 | } 16 | response_c = requests.get(request_url, headers=custom_header,proxies=Proxy) 17 | response_text = response_c.text 18 | # print(response_text) 19 | soup = BeautifulSoup(response_text, features="html.parser") 20 | title_of_page = soup.title.string 21 | # 22 | re_dict_vals = {} 23 | re_status_id = None 24 | if "configuration" in title_of_page: 25 | # print(soup.prettify()) 26 | g_inputs = soup.find_all("span", {"class": "input-xlarge"}) 27 | # App configuration 28 | app_id = g_inputs[0].string 29 | api_hash = g_inputs[1].string 30 | # Available MTProto servers 31 | test_configuration = g_inputs[4].string 32 | production_configuration = g_inputs[5].string 33 | # It is forbidden to pass this value to third parties. 34 | _a = "It is forbidden to pass this value to third parties." 35 | # 36 | hi_inputs = soup.find_all("p", {"class": "help-block"}) 37 | test_dc = hi_inputs[-2].text.strip() 38 | production_dc = hi_inputs[-1].text.strip() 39 | re_dict_vals = { 40 | "App Configuration": { 41 | "app_id": app_id, 42 | "api_hash": api_hash 43 | }, 44 | "Available MTProto Servers": { 45 | "test_configuration": { 46 | "IP": test_configuration, 47 | "DC": test_dc 48 | }, 49 | "production_configuration": { 50 | "IP": production_configuration, 51 | "DC": production_dc 52 | } 53 | }, 54 | "Disclaimer": _a 55 | } 56 | # 57 | re_status_id = True 58 | else: 59 | tg_app_hash = soup.find("input", {"name": "hash"}).get("value") 60 | re_dict_vals = { 61 | "tg_app_hash": tg_app_hash 62 | } 63 | re_status_id = False 64 | return re_status_id, re_dict_vals 65 | -------------------------------------------------------------------------------- /Classes/NumberClass.py: -------------------------------------------------------------------------------- 1 | from Data.DataBase import DataBase 2 | from pyrogram import Client , errors 3 | 4 | class Number: 5 | DataBase=DataBase 6 | def __init__(self,Number:str,User_id:int,admin=False,dell=False) -> None: 7 | self.Number=int(str(Number).replace(' ', '').replace('(','').replace(')','').replace('-','').replace('_','')) 8 | 9 | if admin : 10 | User_id=self.__class__.DataBase.Num_Owner(Number) 11 | 12 | self.User_id=User_id 13 | 14 | self.__NumberBase=self.__class__.DataBase.NumberBase(User_id,self.Number,self.__class__.DataBase.con) 15 | if dell: 16 | self.__NumberBase.Delete_Number() 17 | return 18 | self.Is_Regestered = self.__NumberBase.Number_Check() 19 | if self.Is_Regestered : 20 | detail=self.__NumberBase.Number_Details() 21 | self.api_id=detail[2] 22 | self.api_hash=detail[1] 23 | self.session=detail[3] 24 | self.active=bool(int(detail[5])) 25 | self.Owner=detail[4] 26 | self.natural=bool(int(detail[6])) 27 | self.Details={'num' : f'+{self.Number}' , 'api_id' : detail[2] , 'api_hash' : detail[1] , 'session' : detail[3] ,'id' : detail[4] } 28 | 29 | def Add_Number(self,Api_id,Api_hash,Session): 30 | self.__NumberBase.regester_account(Api_hash,Api_id,Session) 31 | 32 | def Change_Activity(self,active:bool): 33 | self.__NumberBase.Activity(active) 34 | 35 | def Change_Natural(self,natural_s:bool): 36 | self.__NumberBase.Natural(natural_s) 37 | 38 | def Transfer(self,New_owner:int): 39 | if self.is_Owner: 40 | self.__NumberBase.Transfer(New_owner) 41 | 42 | @property 43 | def is_Owner(self): 44 | return self.__NumberBase.Account_Verify() 45 | 46 | @property 47 | def Activity_Emoji(self): 48 | if self.active:return '🟢' 49 | else:return '🔴' 50 | 51 | @property 52 | def Natural_Emoji(self): 53 | if self.natural:return '🟢' 54 | else:return '🔴' 55 | 56 | def Delete(self,admin=False): 57 | x=self.is_Owner 58 | if admin : x = True 59 | if x: 60 | self.__NumberBase.Delete_Number() 61 | 62 | def __str__(self) -> str: 63 | return f'+{int(self.Number)}' 64 | 65 | def __int__(self): 66 | return int(self.Number) 67 | 68 | def __dict__(self): 69 | return self.Details 70 | 71 | async def Start(self): 72 | app=Client(name=f'S{self.Number}S',session_string =self.session,api_id=self.api_id , api_hash=self.api_hash , sleep_threshold=5 , in_memory=True , phone_number=f'+{self.Number}', no_updates=True) 73 | try: 74 | await app.start() 75 | except ConnectionError as e : 76 | if 'allready' in str(e):pass 77 | # except (errors.UserDeactivatedBan , errors.UserDeactivated): 78 | # self.Delete() 79 | # except (errors.AuthKeyInvalid , errors.AuthKeyUnregistered , errors.SessionRevoked , errors.SessionExpired ): 80 | # self.Delete() 81 | return app 82 | -------------------------------------------------------------------------------- /plugins/Commands.py: -------------------------------------------------------------------------------- 1 | from .BOT import TEXTS , BUTTONS , Config , Advertising , RJ 2 | 3 | #---------------------------------------------------------------------- None Decorator 4 | 5 | @Advertising.on_message(RJ.prv & RJ.filters.command('start') , group=0) 6 | @RJ.Join_Channel 7 | @RJ.User_Details 8 | async def Start_Bot(_,message,u): 9 | if RJ.is_Owner(message.from_user.id): 10 | await message.reply_text(TEXTS.Hello_Sear,reply_markup=BUTTONS.Management) 11 | else: 12 | await message.reply_text(TEXTS.start,reply_markup=BUTTONS.Start) 13 | 14 | @Advertising.on_message(RJ.prv & RJ.regex('^اتک ⚠️') , group=0) 15 | @RJ.Join_Channel 16 | @RJ.User_Details 17 | async def Attack_Pannel(_,message,u): 18 | await message.reply_text(TEXTS.Attack_Pannel,reply_markup=BUTTONS.Attack) 19 | 20 | @Advertising.on_message(RJ.prv & RJ.regex('^اتک🔰') , group=0) 21 | @RJ.User_Details 22 | async def Attack_Main_Pannel(_,message,u): 23 | await message.reply_text(TEXTS.Attack_Main_Pannel,reply_markup=BUTTONS.Main_Attack) 24 | 25 | @Advertising.on_message(RJ.prv & RJ.regex('^برگشت➡️') , group=0) 26 | @RJ.User_Details 27 | async def Return_Attack(_,message,u): 28 | await message.reply_text(TEXTS.Attack_Pannel,reply_markup=BUTTONS.Attack) 29 | 30 | @Advertising.on_message(RJ.prv & RJ.regex('^اکانت ها👤') , group=0) 31 | @RJ.Join_Channel 32 | @RJ.User_Details 33 | async def Accounts(_,message,u): 34 | await message.reply_text(TEXTS.Account_Pannel,reply_markup=BUTTONS.Accounts) 35 | 36 | @Advertising.on_message(RJ.prv & RJ.regex('^برگشت 🔙') , group=0) 37 | @RJ.User_Details 38 | async def Return_Accounts(_,message,u): 39 | await message.reply_text(TEXTS.Account_Pannel,reply_markup=BUTTONS.Accounts) 40 | 41 | @Advertising.on_message(RJ.prv & RJ.regex('^بازگشت 🔙') , group=0) 42 | @RJ.User_Details 43 | async def Return_Main(_,message,u): 44 | await message.reply_text(TEXTS.Main_Pannel,reply_markup=BUTTONS.Start) 45 | 46 | @Advertising.on_message(RJ.prv & RJ.regex('^سین و لایک 👁️') , group=0) 47 | @RJ.User_Details 48 | async def Seen_Like(_,message,u): 49 | await message.reply_text(TEXTS.Seen_Pannel,reply_markup=BUTTONS.Seen) 50 | 51 | @Advertising.on_message(RJ.prv & RJ.regex('^پشتیبانی 👨‍💻') , group=0) 52 | @RJ.User_Details 53 | async def Support(_,message,u): 54 | await message.reply_text(TEXTS.Support,reply_markup=BUTTONS.Support(RJ.Owner_Username)) 55 | 56 | #---------------------------------------------------------------------- 57 | 58 | @Advertising.on_message(RJ.prv & RJ.regex('^حذف اکانت 🗑') , group=0) 59 | @RJ.User_Details 60 | async def Numbers_Deleting(_,message,u): 61 | await message.reply_text(TEXTS.Deleting_Numbers,reply_markup=BUTTONS.Account_Deleting) 62 | 63 | @Advertising.on_message(RJ.prv & RJ.regex('^⚙️ تنظیمات اکانت') , group=0) 64 | @RJ.User_Details 65 | async def Acc_Setting(_,message,u): 66 | await message.reply_text(TEXTS.Account_Setting,reply_markup=BUTTONS.Account_Setting) 67 | 68 | #---------------------------------------------------------------------- 69 | @Advertising.on_message(RJ.prv & RJ.regex('^بنر 📩') , group=0) 70 | @RJ.User_Details 71 | async def Banner_Pannel(_,message,u): 72 | await message.reply_text(TEXTS.Banner_Pannel,reply_markup=BUTTONS.banner) 73 | 74 | 75 | #---------------------------------------------------------------------- 76 | @Advertising.on_message(RJ.prv & RJ.regex('^اشتراک 🔋') , group=0) 77 | @RJ.User_Details 78 | async def Membership(bot,message,User): 79 | if User.Coin > 0 or User.Active_Membership : 80 | m=User.Membership 81 | if User.Membership.strip() =='2004-2-24': m = 'None' 82 | await message.reply_text(TEXTS.Coin_Details(User.Coin,message.from_user.mention,m),reply_markup=BUTTONS.Start) 83 | else :await message.reply_text(TEXTS.Coin_Lack,reply_markup=BUTTONS.Support(RJ.Owner_Username)) 84 | -------------------------------------------------------------------------------- /plugins/Api/helper_steps.py: -------------------------------------------------------------------------------- 1 | 2 | """ STEP FIVE """ 3 | import logging 4 | 5 | 6 | # Enable logging 7 | logging.basicConfig( 8 | format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', 9 | level=logging.INFO 10 | ) 11 | LOGGER = logging.getLogger(__name__) 12 | 13 | 14 | def parse_to_meaning_ful_text(input_phone_number, in_dict): 15 | """ convert the dictionary returned in STEP FOUR 16 | into Telegram HTML text """ 17 | me_t = "" 18 | me_t += "Phone Number: " 19 | me_t += f"{input_phone_number}" 20 | me_t += "\n" 21 | me_t += "\n" 22 | me_t += "App Configuration" 23 | me_t += "\n" 24 | me_t += "APP ID: " 25 | me_t += "{}".format(in_dict["App Configuration"]["app_id"]) 26 | me_t += "\n" 27 | me_t += "API HASH: " 28 | me_t += "{}".format(in_dict["App Configuration"]["api_hash"]) 29 | me_t += "\n" 30 | me_t += "\n" 31 | me_t += "Available MTProto Servers" 32 | me_t += "\n" 33 | me_t += "Production Configuration: " 34 | me_t += "{} {}".format( 35 | in_dict["Available MTProto Servers"]["production_configuration"]["IP"], 36 | in_dict["Available MTProto Servers"]["production_configuration"]["DC"] 37 | ) 38 | me_t += "\n" 39 | me_t += "Test Configuration: " 40 | me_t += "{} {}".format( 41 | in_dict["Available MTProto Servers"]["test_configuration"]["IP"], 42 | in_dict["Available MTProto Servers"]["test_configuration"]["DC"] 43 | ) 44 | me_t += "\n" 45 | me_t += "\n" 46 | me_t += "Disclaimer: " 47 | me_t += "{}".format( 48 | in_dict["Disclaimer"] 49 | ) 50 | return me_t 51 | 52 | 53 | def extract_code_imn_ges(ptb_message): 54 | telegram__web_login_code = None 55 | incoming_message_text = ptb_message.text 56 | incoming_message_text_in_lower_case = incoming_message_text.lower() 57 | if "web login code" in incoming_message_text_in_lower_case: 58 | parted_message_pts = incoming_message_text.split("\n") 59 | if len(parted_message_pts) >= 2: 60 | telegram__web_login_code = parted_message_pts[1] 61 | elif "\n" in incoming_message_text_in_lower_case: 62 | LOGGER.info("did it come inside this 'elif' ?") 63 | else: 64 | telegram__web_login_code = incoming_message_text 65 | return telegram__web_login_code 66 | 67 | 68 | def get_phno_imn_ges(ptb_message): 69 | LOGGER.info(ptb_message) 70 | my_telegram_ph_no = None 71 | if ptb_message.text is not None: 72 | if len(ptb_message.entities) > 0: 73 | for c_entity in ptb_message.entities: 74 | if c_entity.type == "phone_number": 75 | my_telegram_ph_no = ptb_message.text[ 76 | c_entity.offset:c_entity.length 77 | ] 78 | else: 79 | my_telegram_ph_no = ptb_message.text 80 | elif ptb_message.contact is not None: 81 | if ptb_message.contact.phone_number != "": 82 | my_telegram_ph_no = ptb_message.contact.phone_number 83 | return my_telegram_ph_no 84 | 85 | 86 | def compareFiles(first, second): 87 | while True: 88 | firstBytes = first.read(4096) 89 | secondBytes = second.read(4096) 90 | if firstBytes != secondBytes: 91 | return False 92 | if firstBytes == b"": 93 | break 94 | return True 95 | 96 | def Write(Text): 97 | with open('APIs.txt','a+') as f : 98 | f.write(f'{Text}\n') 99 | 100 | def Font(number): 101 | number=str(number) 102 | num={'0':'⁰','1':'¹','2':'²','3':'³','4':'⁴','5':'⁵','6':'⁶','7':'⁷','8':'⁸','9':'⁹'} 103 | for i in num: 104 | if i in number: 105 | number=number.replace(i,num[i]) 106 | return number 107 | -------------------------------------------------------------------------------- /Config/__init__.py: -------------------------------------------------------------------------------- 1 | #--------------------------------------------------------------------------|Variebels For Api 2 | API_ID =5015063 #-| 3 | API_HASH = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' #-| 4 | BOT_TOKEN= '1234567899:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' #-| 5 | OWNER= 2133923261 #-| 6 | OWNER_USERNAME='YOUR_TELEGRAM_USERNAME' #-| 7 | #--------------------------------------------------------------------------| Robot Variebels 8 | Banners_Channel='@CHANNEL WICH YOUR BANNERS SENDED' 9 | #----------------------------------------------------------------------------------------------------- 10 | #----------------------------------------------------------------------------------------------------- 11 | AndroidPhone = ['Samsung Galaxy A20s', 'Samsung Galaxy A70', 'Samsung Galaxy A01', 'Samsung Galaxy A20','Samsung Galaxy A30s', 'Samsung Galaxy A51', 'Samsung Galaxy A21s', 'Samsung Galaxy A32','Samsung Galaxy A12', 'Xiaomi Poco X3 Pro ', 'Xiaomi Redmi Note 8 pro', 'Xiaomi Poco X3 Pro ','Xiaomi Redmi Note 8', 'Xiaomi Redmi Note 9 Pro', 'Xiaomi Redmi Note 9', 'Xiaomi Poco F3','Huawei Y7 Prime 2019', 'Huawei Y9 Prime 2019', 'Huawei Y6 Prime 2019 ', 'Huawei Honor 10','Asus ROG Phone 5s', 'Asus Zenfone 3 Deluxe'] 12 | IosPhone=['iPhone 4S', 'iPhone 5', 'iPhone 5c', 'iPhone 5s', 'iPhone 6', 'iPhone 6 Plus', 'iPhone 6s', 'iPhone 6s Plus', 'iPhone 7', 'iPhone 7 Plus', 'iPhone 8', 'iPhone 8 Plus', 'iPhone X', 'iPhone XR', 'iPhone XS', 'iPhone XS Max', 'iPhone 11', 'iPhone 11 Pro', 'iPhone 11 Pro Max', 'iPhone SE ', 'iPhone 12 mini', 'iPhone 12', 'iPhone 12 Pro', 'iPhone 12 Pro Max', 'iPhone 13 mini', 'iPhone 13', 'iPhone 13 Pro', 'iPhone 13 Pro Max', 'Galaxy S22 Ultra', 'Galaxy S22 ', 'Galaxy Tab S8 ', 'Galaxy A53 5G', 'Galaxy Z Fold3 5g', 'Galaxy Z Flip3 5g', 'Galaxy S21 FE '] 13 | AppVersion = [7.84, 1.18, 8.54, 4.61, 20.01, 3.02, 2.19, 9.10, 6.84, 12.5, 5.12, 5.14, 2.12] 14 | lan = ['AF', 'AL', 'AM', 'AR', 'AU', 'AT', 'AZ', 'BH', 'BY', 'BE', 'BO', 'BR', 'BG', 'CA', 'CR', 'HR', 'CU', 'CY', 'CZ','DK', 'EG', 'FI', 'FR', 'GE', 'DE', 'GR', 'HK', 'HU', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IT', 'JP', 'KW', 'LB', 'MY','MX', 'NL', 'OM', 'PK', 'PS', 'PE', 'PH', 'PL', 'PT', 'CH', 'QA', 'RO', 'RU', 'SA', 'ZA', 'ES', 'CH', 'SY', 'TJ','TH', 'TN', 'TR', 'UA', 'AE', 'UK', 'US', 'UZ', 'VN'] 15 | AndroidVersion = [9.0, 10.2, 9.1, 10.21, 9.2, 10.22, 9.3, 10.23, 9.4, 10.24, 9.5, 10.25, 9.6, 10.26, 9.7, 10.27, 9.8,10.28, 9.9, 10.29, 10.0, 10.3, 10.1, 10.31, 10.2, 10.32, 10.3, 10.33, 10.4, 10.34, 10.5, 10.35, 10.6,10.36, 10.7, 10.37, 10.8, 10.38, 10.9, 10.39, 11.0, 10.4, 11.1, 10.41, 11.2, 10.42] 16 | IosVersion = ['iOS 12.0', 'iOS 12.4', 'iOS 12.55', 'iOS 13.0', 'iOS 13.18', 'iOS 14.01', 'iOS 15.0', 'iOS 15.01'] 17 | PcVersion = ['Windows 7', 'Windows 8', 'Windows 8.1', 'Windows 8.2', 'Windows 10', 'Windows 10.1', 'Windows 11'] 18 | 19 | 20 | #----------------------------------------------------------------------------------------------------- 21 | #----------------------------------------------------------------------------------------------------- 22 | API=[['XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',1111111111],['XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',11111111111],['XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',1111111111]] 23 | BOT_USERNAME='YOUR BOT USERNAME' 24 | Photos_Path=r'/root/Advertiser/Data/Fake_Details/Photos' 25 | Fake_Details_Path=r'/root/Advertiser/Data/Fake_Details' 26 | Sessions=r'/root/Advertiser/Sessions' 27 | Dark_Channel='DarkBotsChannel' 28 | Natural_Channels=[ '@Amiralirj_Official'] #,'@DarkBotsChannel' , '@gizmiztel' , '@ahangrj'] you can add any channels 29 | #--------------------------------------------------------------------------| Prices 30 | Adding_Account=-30 31 | Delete_Account=-4 32 | Start_Robot=-14 33 | Status=-4 34 | J_L=-4 35 | update_profile=-5 36 | Clean=-2 37 | Attack=-20 38 | Add=-20 39 | Photo=-7 40 | Bio_Name=-5 41 | Spam=-3 42 | Chatcher=-3 43 | report=-7 44 | reaction = -4 45 | block=-4 46 | like=-4 47 | seen=-3 -------------------------------------------------------------------------------- /Classes/UserClass.py: -------------------------------------------------------------------------------- 1 | from Data.DataBase import DataBase 2 | from random import choice 3 | 4 | class User: 5 | DataBase=DataBase 6 | def __init__(self,User_id:int) -> None: 7 | self.User_id = User_id 8 | self.__UserBase=self.__class__.DataBase.UserBase(User_id,self.__class__.DataBase.con) 9 | self.__UserBase.Add_User() 10 | self.Coin = self.__UserBase.User_Coin 11 | #User_Details=self.__UserBase.Show_User_All_Features() 12 | self.Auto_bio = self.__UserBase.Show_Auto_Bio #User_Details['Auto_bio'] 13 | self.Auto_pic = self.__UserBase.Show_Auto_profile #User_Details['Auto_profile'] 14 | self.__Banners = self.__UserBase.Show_Banners #User_Details['Banners'] 15 | self.AutoName = self.__UserBase.Show_Auto_Name #User_Details['Auto_name'] 16 | self.A_Speed = float(self.__UserBase.Show_A_Speed) #User_Details['Attack_speed'] 17 | self.R_Speed = float(self.__UserBase.Show_R_Speed ) #User_Details['Round_speed'] 18 | self.Auto_Api = int(self.__UserBase.Show_R_Speed)#User_Details['Auto_api'] 19 | self.Membership = str(self.__UserBase.Show_Membership) 20 | self.Active_Membership=bool(self.__UserBase.Have_Membership) 21 | 22 | def Add_Coin(self,Amount,admin=False): 23 | if not admin and self.Active_Membership :return True 24 | self.__UserBase.addcoin(int(Amount)) 25 | return True 26 | 27 | def Add_Sql_Membership(self,date): 28 | return self.__UserBase.Add_Sql_Membership((date)) 29 | 30 | def Add_Membership(self,date): 31 | return self.__UserBase.Add_Membership(int(date)) 32 | 33 | def Set_0(self): 34 | self.__UserBase.addcoin( (self.Coin *-1) ) 35 | return True 36 | 37 | @property 38 | def Banners(self): 39 | if (self.__Banners): 40 | if self.__Banners!='0':return list(map(int,self.__Banners.split('-'))) 41 | else:return False 42 | else:return False 43 | 44 | @property 45 | def Rand_Banner(self): 46 | try: 47 | return choice(self.Banners) 48 | except:return False 49 | def Change_A_Speed(self,Speed:int): 50 | Speed=abs(Speed) 51 | self.__UserBase.Set_Attack_Speed(Speed) 52 | return 'HaHa' 53 | 54 | def Change_R_Speed(self,Speed:int): 55 | Speed=abs(Speed) 56 | self.__UserBase.Set_Attack_Speed(Speed) 57 | return '!Im not depressed ' 58 | 59 | def Change_Auto_Profile(self,Msg_ID:int): 60 | self.__UserBase.Set_Auto_profile(Msg_ID) 61 | return 'WWIII ?' 62 | 63 | def Change_Auto_BIO(self,Bio:str): 64 | self.__UserBase.Set_Auto_Bio(Bio) 65 | return '2022?' 66 | 67 | def Change_Auto_Name(self,Name:str): 68 | self.__UserBase.Set_Auto_Name(Name) 69 | return 'Vladimir Putin ?' 70 | 71 | def Add_Banner(self,Banner:int): 72 | self.__UserBase.Set_Banner(Banner) 73 | return 'A Legend ?' 74 | 75 | def Remove_Banner(Why_Self,Banner:int): 76 | Bnr_list=[int(i) for i in Why_Self.Banners] 77 | Bnr_list.remove(Banner) 78 | if len(Bnr_list) ==0:Why_Self.__UserBase.SQL_Add_Banner('0') 79 | else:Why_Self.__UserBase.SQL_Add_Banner(("-".join(map(str, Bnr_list))).strip('-')) 80 | return 'Or a War Criminal' 81 | 82 | #---------------------------------------------| Asarat bikarie |------------------------------------------------------- 83 | 84 | @property 85 | def All_numbers(self):#number,api_id,api_hash,session 86 | Numbers=[dict(zip(['num', 'api_id', 'api_hash', 'session','id'], i)) for i in self.__UserBase.User_Accounts] 87 | return Numbers 88 | 89 | @property 90 | def All_Active_Numbers(self): 91 | Numbers=[dict(zip(['num', 'api_id', 'api_hash', 'session','id'], i)) for i in self.__UserBase.User_Active_Accounts] 92 | return Numbers 93 | 94 | def Delete(self): 95 | self.__UserBase.Delete_All_Numbers() 96 | 97 | def __int__(self): 98 | return self.User_id 99 | 100 | -------------------------------------------------------------------------------- /plugins/Callbacks.py: -------------------------------------------------------------------------------- 1 | from .BOT import TEXTS , BUTTONS , Config , Number , Advertising , RJ , User 2 | 3 | @Advertising.on_callback_query(RJ.regex('^DeleteBNR') , group=0) 4 | @RJ.User_Details 5 | async def Remove_Banner(bot:Advertising,query,user:User): 6 | Id=str(query.data).split(' ')[-1] 7 | user.Remove_Banner(int(Id)) 8 | await query.edit_message_text(TEXTS.Banner_Removed,reply_markup=BUTTONS.Attack) 9 | 10 | @Advertising.on_callback_query(RJ.regex('^Change_Activity') , group=0) 11 | @RJ.User_Details 12 | async def Change_Acc_Activity(bot:Advertising,query,user:User): 13 | if 'All_Accs' in str(query.data): 14 | XX=bool(int((query.data).split(' ')[-1])) 15 | for i in [Number(i['num'],int(user)) for i in user.All_numbers ] : 16 | if XX: 17 | i.Change_Activity(True) 18 | else: 19 | i.Change_Activity(False) 20 | await query.edit_message_text(TEXTS.All_Accounts_Turned) 21 | else: 22 | C,Num,Page=(query.data).split(' ') 23 | Num=Number(int(Num),int(user)) 24 | if Num.active:act=False 25 | else:act=True 26 | Num.Change_Activity(act) 27 | Nums=[Number(i['num'],int(user)) for i in user.All_numbers ] 28 | await query.edit_message_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Activity(Nums,int(Page))) 29 | 30 | @Advertising.on_callback_query(RJ.regex('^Change_Natural') , group=0) 31 | @RJ.User_Details 32 | async def Change_Acc_Natural(bot:Advertising,query,user:User): 33 | if 'All_Accs' in str(query.data): 34 | XX=bool(int((query.data).split(' ')[-1])) 35 | for i in [Number(i['num'],int(user)) for i in user.All_numbers ] : 36 | if XX: 37 | i.Change_Natural(True) 38 | else: 39 | i.Change_Natural(False) 40 | await query.edit_message_text(TEXTS.All_Accounts_Turned) 41 | else: 42 | C,Num,Page=(query.data).split(' ') 43 | Num=Number(int(Num),int(user)) 44 | if Num.natural:act=False 45 | else:act=True 46 | Num.Change_Natural(act) 47 | Nums=[Number(i['num'],int(user)) for i in user.All_numbers ] 48 | await query.edit_message_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Natural(Nums,int(Page))) 49 | 50 | @Advertising.on_callback_query(RJ.regex('^Next') , group=0) 51 | @RJ.User_Details 52 | async def Next_Page(bot:Advertising,query,user:User): 53 | Page=int((query.data).split(' ')[-1]) + 20 54 | Nums=[Number(i['num'],int(user)) for i in user.All_numbers ] 55 | print(Page) 56 | if 'Next Nat' in str((query.data)): 57 | await query.edit_message_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Natural(Nums,Page)) 58 | else: 59 | await query.edit_message_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Activity(Nums,Page)) 60 | 61 | @Advertising.on_callback_query(RJ.regex('^Auto_Details') , group=0) 62 | @RJ.User_Details 63 | async def Auto_Detailing_Accs(bot:Advertising,query,user:User): 64 | Kind=(query.data).split(' ')[-1] 65 | if Kind=='Pic':Text=TEXTS.Pro_Text 66 | elif Kind=='Bio':Text=TEXTS.Bio_Text 67 | else:Text=TEXTS.Name_Text 68 | try: 69 | Message=(((await bot.ask(int(user),TEXTS.Get_Details(Text),filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60)))) 70 | if Message.text : 71 | if TEXTS.Cancel_btn in Message.text : 72 | await query.message.reply_text(TEXTS.Cancel,reply_markup=BUTTONS.Accounts) 73 | return 74 | except TimeoutError : 75 | await query.message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 76 | return 77 | except:return 78 | 79 | if Kind=='Pic': 80 | if Message.photo: 81 | pic=await Message.copy(Config.Banners_Channel) 82 | user.Change_Auto_Profile(pic.id) 83 | TXT='WWW.GITHUB.COM/AMIRALIRJ' 84 | else: 85 | user.Change_Auto_Profile(0) 86 | TXT='None' 87 | 88 | elif Kind=='Bio': 89 | TXT=Message.text 90 | if Message.text==TEXTS.Cancel_Proccess: 91 | TXT='None' 92 | user.Change_Auto_BIO(str(TXT)) 93 | 94 | else: 95 | TXT=Message.text 96 | if Message.text==TEXTS.Cancel_Proccess: 97 | TXT='None' 98 | user.Change_Auto_Name(str(TXT)) 99 | 100 | if TXT=='None':await query.message.reply_text(TEXTS.Auto_Details_Deleted(Text),reply_markup=BUTTONS.Accounts) 101 | else:await query.message.reply_text(TEXTS.Auto_Details_Setted(Text),reply_markup=BUTTONS.Accounts) 102 | 103 | @Advertising.on_callback_query(RJ.regex('^Attack_Setting') , group=0) 104 | @RJ.User_Details 105 | async def Attack_Setting_Pannel(bot:Advertising,query,user:User): 106 | Data=str(query.data).split(' ')[-1] 107 | if Data=='R': await query.edit_message_text(TEXTS.R_Speed_Setting(user.R_Speed),reply_markup=BUTTONS.Speed_Inline(Data)) 108 | else: await query.edit_message_text(TEXTS.A_Speed_Setting(user.A_Speed),reply_markup=BUTTONS.Speed_Inline(Data)) 109 | 110 | @Advertising.on_callback_query(RJ.regex('^Speed-') , group=0) 111 | @RJ.User_Details 112 | async def Attack_Setting_Set(bot:Advertising,query,user:User): 113 | Data=str(query.data).split(' ') 114 | Kind=Data[0].split('-')[-1] 115 | try:speed=float((Data[-1])) 116 | except:speed=float((await bot.ask(int(user),TEXTS.Ask_Speed,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=20)).text) 117 | if Kind=='R':user.Change_R_Speed(abs(speed)) 118 | else:user.Change_A_Speed(abs(speed)) 119 | await query.edit_message_text(TEXTS.Speed_Setted(speed),reply_markup=BUTTONS.Attack) 120 | 121 | -------------------------------------------------------------------------------- /proxy.txt: -------------------------------------------------------------------------------- 1 | 103.111.122.2:80 2 | 103.210.57.243:80 3 | 100.21.127.153:80 4 | 103.123.25.65:80 5 | 101.79.15.198:80 6 | 103.155.217.156:41456 7 | 1.116.202.121:80 8 | 103.124.227.30:80 9 | 121.196.120.232:3129 10 | 121.31.35.98:9091 11 | 125.17.80.226:8080 12 | 13.75.216.118:3128 13 | 120.26.0.11:8880 14 | 120.82.174.128:9091 15 | 120.194.4.155:5443 16 | 120.236.74.213:9002 17 | 144.76.75.25:4444 18 | 140.206.62.198:9002 19 | 146.59.127.168:80 20 | 142.93.61.46:80 21 | 159.203.61.169:8080 22 | 14.139.242.7:80 23 | 14.198.21.70:80 24 | 146.255.100.226:80 25 | 186.91.38.134:8080 26 | 185.103.87.30:8081 27 | 185.147.161.103:3128 28 | 180.235.65.13:80 29 | 18.179.20.228:8181 30 | 181.65.200.53:80 31 | 18.143.35.168:80 32 | 195.190.144.6:80 33 | 199.5.133.194:80 34 | 198.199.86.11:8080 35 | 196.1.95.117:80 36 | 193.3.20.13:80 37 | 197.243.20.186:80 38 | 202.110.67.141:9091 39 | 202.61.204.51:80 40 | 202.61.192.193:80 41 | 210.22.131.162:9002 42 | 208.76.54.103:80 43 | 203.19.38.114:1080 44 | 203.89.126.250:80 45 | 204.2.218.145:8080 46 | 47.56.110.204:8989 47 | 4.233.217.172:80 48 | 45.118.139.196:80 49 | 46.101.126.180:38385 50 | 42.228.61.245:9091 51 | 42.248.122.147:1080 52 | 47.88.87.74:1080 53 | 43.153.206.208:8080 54 | 64.225.4.17:9995 55 | 61.133.66.69:9002 56 | 64.225.4.17:9969 57 | 61.175.214.2:9091 58 | 60.215.169.118:9091 59 | 60.12.168.114:9002 60 | 64.225.4.17:9982 61 | 60.184.116.252:9091 62 | 103.155.217.156:41478 63 | 103.75.196.121:80 64 | 103.149.146.252:80 65 | 103.181.45.9:80 66 | 102.68.85.187:8080 67 | 103.38.214.21:3128 68 | 101.68.16.71:8085 69 | 103.134.177.182:8888 70 | 123.153.146.65:9002 71 | 124.90.208.246:8085 72 | 137.184.197.190:80 73 | 135.125.216.93:80 74 | 123.138.214.150:9002 75 | 120.194.4.157:5443 76 | 123.159.126.27:8085 77 | 173.82.140.16:80 78 | 146.83.128.23:80 79 | 161.35.214.127:39367 80 | 146.83.118.9:80 81 | 163.44.253.160:80 82 | 148.76.97.250:80 83 | 161.35.214.127:46161 84 | 146.59.2.185:80 85 | 183.238.32.234:9002 86 | 185.162.251.76:80 87 | 182.18.208.59:3128 88 | 187.217.54.84:80 89 | 195.110.59.82:80 90 | 31.186.239.245:8080 91 | 221.10.250.51:9091 92 | 203.192.198.84:80 93 | 220.248.238.26:9091 94 | 213.230.126.26:3128 95 | 211.97.2.196:9002 96 | 209.126.6.159:80 97 | 207.244.248.97:80 98 | 54.243.30.23:80 99 | 42.63.10.170:9002 100 | 45.92.108.112:80 101 | 47.116.131.64:80 102 | 44.212.226.246:80 103 | 43.163.212.171:3128 104 | 52.51.64.165:8118 105 | 103.83.232.122:80 106 | 106.14.47.96:10000 107 | 103.155.217.156:41475 108 | 103.43.151.36:80 109 | 103.155.217.105:41411 110 | 104.194.240.13:8080 111 | 103.127.1.130:80 112 | 103.145.113.78:80 113 | 123.159.126.14:8085 114 | 134.209.108.182:8888 115 | 61.53.66.116:9091 116 | 123.159.127.188:8085 117 | 121.1.41.162:111 118 | 123.60.175.183:8888 119 | 174.138.24.67:8080 120 | 156.67.217.159:80 121 | 161.35.214.127:40339 122 | 158.69.157.172:80 123 | 167.172.158.85:81 124 | 153.101.67.170:9002 125 | 165.225.210.219:10515 126 | 154.85.58.149:80 127 | 64.225.4.85:9993 128 | 60.210.40.190:9091 129 | 61.158.175.38:9002 130 | 188.166.56.246:80 131 | 185.208.183.122:3128 132 | 184.72.36.89:80 133 | 188.0.147.102:3128 134 | 65.109.10.62:80 135 | 64.225.4.85:9968 136 | 62.182.66.209:9090 137 | 65.20.224.193:8080 138 | 198.49.68.80:80 139 | 45.61.187.67:4000 140 | 37.9.171.157:80 141 | 34.135.166.24:80 142 | 211.97.2.197:9002 143 | 222.190.208.207:8089 144 | 220.248.70.237:9002 145 | 222.190.173.43:8089 146 | 218.252.206.89:80 147 | 209.169.71.193:80 148 | 58.57.170.154:9002 149 | 45.149.77.141:7000 150 | 46.101.85.55:443 151 | 5.187.195.156:80 152 | 52.88.105.39:80 153 | 104.223.135.178:10000 154 | 117.160.132.37:9091 155 | 112.194.142.135:9091 156 | 119.7.135.19:9091 157 | 103.155.217.156:41482 158 | 106.14.47.96:10003 159 | 103.150.18.218:80 160 | 103.149.130.38:80 161 | 128.199.13.74:80 162 | 139.59.1.14:3128 163 | 58.20.235.231:9002 164 | 43.251.135.19:8081 165 | 65.21.131.27:80 166 | 138.68.60.8:8080 167 | 124.90.14.209:8085 168 | 13.95.173.197:80 169 | 176.31.68.252:20200 170 | 161.35.70.249:3128 171 | 161.35.70.249:8080 172 | 158.69.212.254:80 173 | 161.97.93.15:80 174 | 165.232.152.75:80 175 | 158.69.27.94:9300 176 | 65.0.160.35:8080 177 | 78.138.98.115:3128 178 | 65.20.224.193:80 179 | 189.250.93.75:80 180 | 185.65.203.218:8080 181 | 88.120.63.235:80 182 | 65.108.69.40:10053 183 | 62.201.219.58:80 184 | 83.45.118.27:80 185 | 45.85.45.30:80 186 | 34.87.103.220:80 187 | 222.190.173.153:8089 188 | 24.13.39.215:80 189 | 222.139.221.185:9091 190 | 218.28.98.229:9091 191 | 105.16.115.202:80 192 | 112.245.48.74:9002 193 | 103.174.102.127:80 194 | 112.250.110.172:9091 195 | 103.156.56.2:80 196 | 103.149.146.34:80 197 | 13.51.207.47:80 198 | 139.59.1.14:8080 199 | 47.243.177.210:8088 200 | 8.219.97.248:80 201 | 139.59.228.95:8118 202 | 129.154.194.108:80 203 | 130.41.109.158:8080 204 | 178.164.253.64:80 205 | 170.244.27.242:8888 206 | 173.212.195.139:80 207 | 168.119.119.107:80 208 | 52.91.23.134:9999 209 | 167.114.96.27:9300 210 | 167.172.172.234:39827 211 | 161.35.214.127:35543 212 | 89.117.32.209:80 213 | 80.232.242.125:9002 214 | 68.178.161.107:80 215 | 5.78.31.93:8443 216 | 188.166.84.131:443 217 | 49.0.2.242:8090 218 | 91.185.20.162:3128 219 | 8.210.127.228:8888 220 | 82.210.8.173:80 221 | 85.239.242.23:80 222 | 46.47.197.210:3128 223 | 51.83.98.90:80 224 | 112.123.102.10:9002 225 | 221.131.158.246:8888 226 | 117.160.250.134:8899 227 | 210.22.77.94:9002 228 | 103.92.26.190:4002 229 | 117.160.250.133:8899 230 | 106.14.47.96:10926 231 | 103.167.134.31:80 232 | 138.2.9.75:8080 233 | 24.199.82.12:80 234 | 47.74.152.29:8888 235 | 137.74.65.101:80 236 | 134.209.29.120:8080 237 | 178.124.170.112:3128 238 | 178.33.3.163:8080 239 | 171.35.165.166:8085 240 | 171.35.165.117:8085 241 | 164.92.200.113:80 242 | 82.102.10.125:18345 243 | 93.177.73.122:8888 244 | 51.75.122.80:80 245 | 27.109.174.194:80 246 | 113.195.207.249:9091 247 | 221.6.215.202:9091 248 | 3.109.238.5:8080 249 | 106.14.47.96:10939 250 | 118.107.44.181:8000 251 | 106.14.47.96:54321 252 | 103.197.251.202:80 253 | 3.85.148.103:80 254 | 3.226.168.144:80 255 | 5.78.24.13:8443 256 | 5.48.179.150:80 257 | 138.68.60.8:3128 258 | 138.68.235.51:80 259 | 89.58.29.103:80 260 | 91.205.196.190:8080 261 | 80.191.244.100:3128 262 | 223.29.214.2:80 263 | 51.15.242.202:8888 264 | 31.186.239.244:8080 265 | 109.194.22.61:8080 266 | 115.216.5.125:8888 267 | 103.241.182.97:80 268 | 31.186.239.246:8080 269 | 34.239.204.118:80 270 | 58.246.58.150:9002 271 | 51.75.67.164:443 272 | 94.30.152.172:80 273 | 176.192.70.58:8011 274 | 3.89.91.40:80 275 | 58.20.248.139:9002 276 | 112.94.38.137:9002 277 | 117.158.146.215:9091 278 | 117.159.15.99:9091 279 | 31.207.38.66:80 280 | 35.184.232.165:80 281 | 89.43.10.141:80 282 | 54.235.240.201:80 283 | 93.180.222.134:8080 284 | 176.192.70.58:8025 285 | 39.165.0.137:9002 286 | 58.221.193.74:8888 287 | 95.0.84.26:80 288 | 116.203.27.109:80 289 | 117.160.250.138:8899 290 | 118.212.152.82:9091 291 | 95.183.232.220:80 292 | 59.44.203.138:9091 293 | 93.188.166.232:80 294 | 118.172.187.127:8080 295 | 82.98.147.36:80 296 | 118.97.47.248:55443 297 | 85.238.102.97:8081 298 | 94.131.130.142:8085 299 | -------------------------------------------------------------------------------- /Config/BUTTONS.py: -------------------------------------------------------------------------------- 1 | from pyrogram.types import InlineKeyboardMarkup, InlineKeyboardButton, ReplyKeyboardMarkup , InlineQueryResultArticle, InputTextMessageContent 2 | from pyrogram.types.bots_and_keyboards import force_reply 3 | 4 | Start=ReplyKeyboardMarkup([['اکانت ها👤','اتک ⚠️'], 5 | ['سین و لایک 👁️'] 6 | ,['اشتراک 🔋'] 7 | ,['پشتیبانی 👨‍💻']],resize_keyboard =True) 8 | 9 | Management=ReplyKeyboardMarkup([['دادن سکه 🪙', 'اشتراک روزانه 📅'],['انقال اکانت 👻','فرایند ها 🔆','پاک کردن شماره 🗑'],['نجوا 📩' , 'ادمین گیر 👀','اطلاعات 🔭'],['پنل اصلی ⚙️']],resize_keyboard =True) 10 | 11 | Attack= ReplyKeyboardMarkup([['اتک🔰', 12 | 'بنر 📩'], 13 | ['اسپم📛', 14 | 'لیست گیر🚸'], 15 | ['تنظیمات حرفه ای⚙️'], 16 | ['⭐ رتبه من ⭐','قوی ترین اتکر ⚔️🔥'], 17 | ['بازگشت 🔙']],resize_keyboard =True) 18 | 19 | Main_Attack=ReplyKeyboardMarkup([ 20 | ['هوشمند🧠', 21 | 'تبلیغاتی👀', 'فرواردی▶️'],['ادر🫂'], 22 | ['برگشت➡️'] 23 | ],resize_keyboard =True) 24 | 25 | banner=ReplyKeyboardMarkup([[ 26 | 'بنر های فعلی 📧'] ,[ 27 | 'ثبت بنر📝' 28 | ],['برگشت➡️']],resize_keyboard =True) 29 | 30 | Cancel=ReplyKeyboardMarkup([['❌ انصراف ❌']],resize_keyboard =True) 31 | Cancel_Attack=ReplyKeyboardMarkup([['🚫 لغو اتک 🚫']],resize_keyboard =True) 32 | Cancel_Spam=ReplyKeyboardMarkup([['🚫 لغو اسپم 🚫']],resize_keyboard =True) 33 | 34 | Accounts=ReplyKeyboardMarkup([['وضعیت اکانت ها 🗂️' , 35 | 'لیست اکانت ها 📜'], 36 | ['تغییر فعالیت 🔆'], 37 | ['ثبت اکانت 📥', 38 | 'حذف اکانت 🗑'], 39 | ['تغییر طبیعت 🧪'], 40 | ['⚙️ تنظیمات اکانت' , 41 | '🤖 استارت ربات'], 42 | ['جستوجو 🔍'] , 43 | ['leave 🚨' 44 | , 'join 🚨' 45 | ],['گرفتن کد 🗳' , 'پاکسازی ♻️'], 46 | ['راهنما ❓', 47 | 'بازگشت 🔙']],resize_keyboard =True) 48 | 49 | Account_Deleting=ReplyKeyboardMarkup([[ 50 | 'حذف همه اکانت ها 🗑' 51 | ,'حذف چند اکانت ❌'], 52 | ['حذف ریپورت شده ها 🔇'], 53 | ['برگشت 🔙']],resize_keyboard =True) 54 | 55 | Account_Setting=ReplyKeyboardMarkup([ 56 | ['♻️ تنظیم خودکار مشخصات ♻️','🧱 تنظیم رمز ابری 🧱'], 57 | ['🛑 پاک کردن پروفایل 🛑'], 58 | ['🔱 هویت سازی 🔱' , '🚷 پاکسازی نشست ها 🚷'], 59 | ['📨 انتقال اکانت 📨', '📝 تنظیم مشخصات 📝'] , 60 | ['برگشت 🔙']],resize_keyboard =True) 61 | 62 | Seen=ReplyKeyboardMarkup([ 63 | ['سین 👁‍🗨','لایک ♥️'], 64 | ['ری اکشن 🤩'], 65 | ['بلاک 🔒','انبلاک 🔓'], 66 | ['ریپورت کانال 🪓','ریپورت پیام 🔪'], 67 | ['اکو ایردراپ 🔊💥'], 68 | ['بازگشت 🔙']],resize_keyboard =True) 69 | 70 | #-------------------------------------------------------------------------------------------------------------------------- 71 | #--------------------------------------------------------| INLINE |-------------------------------------------------------- 72 | #-------------------------------------------------------------------------------------------------------------------------- 73 | Attack_Inline=lambda username , btn: InlineKeyboardMarkup([[InlineKeyboardButton(f'{btn}', url=f'https://t.me/{username}')]]) 74 | 75 | Channel= InlineKeyboardMarkup([[InlineKeyboardButton('ᴅᴀʀᴋ ᴀᴛᴛᴀᴄᴋᴇʀ', url='https://t.me/DarkBotsChannel')]]) 76 | 77 | Support=lambda username: InlineKeyboardMarkup([[InlineKeyboardButton('📞 پشتیبانی', url=f'https://t.me/{username}')]]) 78 | 79 | Delete_Banner=lambda ID:InlineKeyboardMarkup([[InlineKeyboardButton('حذف بنر 🗑', callback_data=f'DeleteBNR {ID}')]]) 80 | 81 | Choosing_Auto_Details=InlineKeyboardMarkup([[InlineKeyboardButton('عکس خودکار 🌉', callback_data='Auto_Details Pic')],[InlineKeyboardButton('بیو خودکار ✒️', callback_data='Auto_Details Bio')],[InlineKeyboardButton('نام خودکار 🔖', callback_data='Auto_Details Name')]]) 82 | 83 | Attack_Setting=InlineKeyboardMarkup([[InlineKeyboardButton('توقف هر اتک ⏱', callback_data='Attack_Setting A')], 84 | [InlineKeyboardButton('توقف هر راند ⏱', callback_data='Attack_Setting R')]]) 85 | 86 | Force=force_reply.ForceReply() 87 | 88 | def Speed_Inline( Model) : 89 | x=[[InlineKeyboardButton(f'{(i-10)/10} sec', callback_data=f'Speed-{Model} {(i-10)/10}'), 90 | InlineKeyboardButton(f'{(i-5)/10} sec', callback_data=f'Speed-{Model} {(i-5)/10}'), 91 | InlineKeyboardButton(f'{(i)/10} sec', callback_data=f'Speed-{Model} {(i)/10}'), 92 | InlineKeyboardButton(f'{(i+5)/10} sec', callback_data=f'Speed-{Model} {(i+5)/10}'), 93 | InlineKeyboardButton(f'{(i+10)/10} sec', callback_data=f'Speed-{Model} {(i+10)/10}')] for i in range(10,300,20)] 94 | x.append([InlineKeyboardButton('وارد کردن دستی ⌛️', callback_data=f'Speed-{Model} Manual')]) 95 | return InlineKeyboardMarkup(x) 96 | 97 | def Activity(all,page=0): 98 | Inlines=[] 99 | li=[] 100 | for j,i in enumerate(all[page:]): 101 | if str(i) not in li : 102 | Inlines.append([InlineKeyboardButton(f'{i.Activity_Emoji}{i}', callback_data=f'Change_Activity {int(i)} {page}')]) 103 | li.append(str(i)) 104 | if j>=20: 105 | Inlines.append([InlineKeyboardButton(f'🚀 همه روشن 🚀', callback_data=f'Change_Activity All_Accs 1')]) 106 | Inlines.append([InlineKeyboardButton(f'🚦 همه خاموش 🚦', callback_data=f'Change_Activity All_Accs 0')]) 107 | Inlines.append([InlineKeyboardButton(f'⬅️ صفحه بعد ⬅️', callback_data=f'Next {page}')]) 108 | return InlineKeyboardMarkup(Inlines) 109 | return InlineKeyboardMarkup(Inlines) 110 | 111 | def Natural(all,page=0): 112 | Inlines=[] 113 | li=[] 114 | for j,i in enumerate(all[page:]): 115 | if str(i) not in li : 116 | Inlines.append([InlineKeyboardButton(f'{i.Natural_Emoji}{i}', callback_data=f'Change_Natural {int(i)} {page}')]) 117 | li.append(str(i)) 118 | if j>=20: 119 | Inlines.append([InlineKeyboardButton(f'🚀 همه روشن 🚀', callback_data=f'Change_Natural All_Accs 1')]) 120 | Inlines.append([InlineKeyboardButton(f'🚦 همه خاموش 🚦', callback_data=f'Change_Natural All_Accs 0')]) 121 | Inlines.append([InlineKeyboardButton(f'⬅️ صفحه بعد ⬅️', callback_data=f'Next Nat {page}')]) 122 | return InlineKeyboardMarkup(Inlines) 123 | return InlineKeyboardMarkup(Inlines) 124 | 125 | 126 | async def Inline_Answer(inline_query,Channel,Banner,btn): 127 | await inline_query.answer( 128 | results=[InlineQueryResultArticle( 129 | title="HaHa", 130 | input_message_content=InputTextMessageContent( 131 | f"{Banner}"), 132 | description=f"! Dark Attacker !", 133 | reply_markup=Attack_Inline(Channel,btn))], 134 | cache_time=1 135 | ) -------------------------------------------------------------------------------- /plugins/Managing.py: -------------------------------------------------------------------------------- 1 | from .BOT import TEXTS , BUTTONS , Config , Number , Advertising , RJ , User 2 | from pyrogram.enums import ChatMembersFilter 3 | from pyrogram import errors 4 | 5 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('دادن سکه 🪙') , group=0) 6 | async def Add_Coin(bot,message): 7 | user=Config.OWNER 8 | try: 9 | Id=str((await bot.Ask(int(user),TEXTS.Ask_Id,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 10 | Coin=int((await bot.Ask(int(user),TEXTS.Ask_Coin_Amount,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 11 | except TimeoutError :pass 12 | 13 | if Id.isdigit():Id=int(Id) 14 | try: 15 | user= (await bot.get_users(Id)).id 16 | User(user).Add_Coin(Coin,True) 17 | await bot.send_message( user , TEXTS.Coin_Tranfered(Coin)) 18 | await message.reply_text(TEXTS.Coin_Submitted , reply_markup=BUTTONS.Management) 19 | except:await message.reply_text(TEXTS.Not_Started , reply_markup=BUTTONS.Management) 20 | 21 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('اشتراک روزانه 📅') , group=0) 22 | async def Add_Membership(bot,message): 23 | user=Config.OWNER 24 | try: 25 | Id=str((await bot.Ask(int(user),TEXTS.Ask_Id,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 26 | Date=int((await bot.Ask(int(user),TEXTS.Ask_Date,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 27 | except TimeoutError :pass 28 | 29 | if Id.isdigit():Id=int(Id) 30 | try: 31 | user= (await bot.get_users(Id)).id 32 | Ex_date=User(user).Add_Membership(Date) 33 | await bot.send_message( user , TEXTS.Membership_Added(Ex_date)) 34 | await message.reply_text(TEXTS.Membership_Submitted , reply_markup=BUTTONS.Management) 35 | except Exception as e : 36 | print(e) 37 | await message.reply_text(TEXTS.Not_Started , reply_markup=BUTTONS.Management) 38 | 39 | 40 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('انقال اکانت 👻') , group=0) 41 | async def Transfer_Deleted_Account_Numbers(bot,message): 42 | user=int((await bot.Ask(int(RJ.Owner),TEXTS.AskDeleted_Account,Msg=message,filters=RJ.filters.user(int(RJ.Owner)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 43 | new_user=str((await bot.Ask(int(RJ.Owner),TEXTS.Ask_Reciver,Msg=message,filters=RJ.filters.user(int(RJ.Owner)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 44 | user=User(user) 45 | try: 46 | new_user= (await bot.get_users(new_user)).id 47 | except: 48 | await message.reply_text(TEXTS.Not_Started , reply_markup=BUTTONS.Management) 49 | return 50 | new_user=User(int(new_user)) 51 | new_user.Add_Coin(user.Coin,True) 52 | user.Set_0() 53 | 54 | new_user.Add_Sql_Membership(user.Membership) 55 | user.Add_Membership(-1) 56 | 57 | x='' 58 | for i in user.All_numbers : 59 | Number(str(i['num']),int(user)).Transfer(int(new_user)) 60 | x+=f'` +{i["num"]} ` \n ' 61 | 62 | if len(x.split('\n')) > 50 : 63 | x='' 64 | await message.reply_text(TEXTS.Account_Tranferred(x,int(user),int(new_user))) 65 | await bot.send_message(int(new_user),TEXTS.Account_Tranferred(x,int(user),int(new_user))) 66 | 67 | if len(x.split('\n')) >=1 : 68 | await message.reply_text(TEXTS.Account_Tranferred(x,int(user),int(new_user)),reply_markup=BUTTONS.Management) 69 | await bot.send_message(int(new_user),TEXTS.Account_Tranferred(x,int(user),int(new_user)),reply_markup=BUTTONS.Management) 70 | 71 | 72 | 73 | 74 | 75 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('نجوا 📩') , group=0) 76 | async def Send_All(bot,message): 77 | try: 78 | text=((await bot.Ask(int(RJ.Owner),TEXTS.Ask_Text,Msg=message,filters=RJ.filters.user(int(RJ.Owner)),reply_markup=BUTTONS.Cancel,timeout=120))) 79 | except TimeoutError :pass 80 | X=0 81 | for i in RJ.All_Users: 82 | try: 83 | await text.copy(int(i)) 84 | X+=1 85 | except:pass 86 | 87 | await message.reply_text(TEXTS.Procces_Compeleted(X) , reply_markup=BUTTONS.Management) 88 | 89 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('ادمین گیر 👀') , group=0) 90 | async def Admin_Catchers(bot,message): 91 | user=User(RJ.Owner) 92 | try: 93 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=90))).text) 94 | Gap_Link=str(((await bot.Ask(int(user),TEXTS.Ask_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=30))).text) 95 | except TimeoutError : 96 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Management) 97 | return 98 | except:return 99 | 100 | Nums=RJ.Account(Nums,user) 101 | 102 | if Gap_Link.isdigit():Gap_Link=int(Gap_Link) 103 | elif not '/joinchat/' in Gap_Link and not '+' in Gap_Link:Gap_Link=f'@{Gap_Link.split("/")[-1]}' 104 | else :Gap_Link=Gap_Link.replace('https://','') 105 | Users={} 106 | for i in Nums: 107 | try: 108 | app = await i.Start() 109 | try: 110 | Chat = await app.join_chat(Gap_Link) 111 | except errors.UserAlreadyParticipant : 112 | Chat = await app.get_chat(Gap_Link) 113 | async for i in Chat.get_members(filter=ChatMembersFilter.ADMINISTRATORS): 114 | if i.user.is_bot : continue 115 | if i.user.username:Users[(str(i.user.username))]='2022 :) ' 116 | try:await app.stop(False) 117 | except:pass 118 | except Exception as e:RJ.Log(int(user),f'Admin Catcher : {e}') 119 | X='' 120 | for i in Users: 121 | if len(X.split('\n')) >= 50 : 122 | await message.reply_text(TEXTS.Username_Catched(X),reply_markup=BUTTONS.Management) 123 | X='' 124 | X+=f'@{i} \n' 125 | 126 | if len(X.split('\n')) > 0 : 127 | await message.reply_text(TEXTS.Username_Catched(X),reply_markup=BUTTONS.Management) 128 | 129 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('پاک کردن شماره 🗑') , group=0) 130 | async def sudo_del_bum(bot,message): 131 | user=User(RJ.Owner) 132 | try: 133 | try: 134 | Nums=str(((await bot.Ask(int(user),TEXTS.Account_Deleting,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=90))).text) 135 | except TimeoutError : 136 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Management) 137 | return 138 | except:return 139 | for i in Nums.split('\n'): 140 | try: 141 | Number(i,1111,True,True) 142 | except Exception as e:print(e) 143 | 144 | await message.reply_text(TEXTS.Selected_Numbers_Deleted , reply_markup=BUTTONS.Management) 145 | except Exception as e:print(e) 146 | 147 | 148 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('فرایند ها 🔆') , group=0) 149 | async def Active_Users(bot,message): 150 | Users=RJ.Active_Procces 151 | text='' 152 | for i in Users: 153 | text+=f'` {i} ` \n ' 154 | 155 | text2=TEXTS.message_C 156 | ms=RJ.ms 157 | for i in ms : 158 | text2+=f'{i} >>> {ms[i]} ' 159 | 160 | await message.reply_text(text2,reply_markup=BUTTONS.Management) 161 | await message.reply_text(TEXTS.Active_Procceses_Len(len(Users)),reply_markup=BUTTONS.Management) 162 | await message.reply_text(TEXTS.Active_Procceses(text),reply_markup=BUTTONS.Management) 163 | 164 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('اطلاعات 🔭') , group=0) 165 | async def Stats(bot,message): 166 | bot_state=RJ.Details 167 | Users=(RJ.All_Users) 168 | X=sum([Users[i] for i in (Users)]) 169 | await message.reply_text(TEXTS.Stats(bot_state,X),reply_markup=BUTTONS.Management) 170 | Data=RJ.DataBase_Data 171 | with open('Premenet_File.txt','a+') as f: 172 | f.write(str(Data)) 173 | await message.reply_document(r'Premenet_File.txt' , file_name = 'WWW.GITHUB.COM/AMIRALIRJ.txt') 174 | RJ.remove('Premenet_File.txt') 175 | 176 | 177 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.filters.command('who') , group=0) 178 | async def User_Stats_M(bot,message): 179 | user= (await bot.get_users(int(message.command[1]))) 180 | await message.reply_text(TEXTS.User_Details(user.username, user.first_name , user.mention , user.id ),reply_markup=BUTTONS.Management) 181 | 182 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.filters.command('zero') , group=0) 183 | async def Set_Coins_Zero(bot,message): 184 | user= (int(message.command[1])) 185 | User(user).Set_0() 186 | await message.reply_text(TEXTS.Procces_Compeleted_WO_NO , reply_markup=BUTTONS.Management) 187 | 188 | 189 | @Advertising.on_message(RJ.filters.user(RJ.Owner) & RJ.regex('پنل اصلی ⚙️') , group=0) 190 | async def Move_To_Pannel(bot,message): 191 | await message.reply_text(TEXTS.start,reply_markup=BUTTONS.Start) 192 | -------------------------------------------------------------------------------- /plugins/Seen.py: -------------------------------------------------------------------------------- 1 | from .BOT import TEXTS , BUTTONS , Config , Number , Advertising , RJ , User 2 | from pyrogram.raw.functions.account import ReportPeer 3 | from pyrogram.raw.functions.messages import Report , GetMessagesViews 4 | from asyncio.exceptions import TimeoutError 5 | from pyrogram import errors , Client 6 | from asyncio import sleep 7 | 8 | 9 | @Advertising.on_message(RJ.prv & RJ.regex('^سین 👁‍🗨') , group=0) 10 | @RJ.User_Details 11 | @RJ.Coin_Limit 12 | async def Seen_post(bot,message,user:User): 13 | try: 14 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 15 | Link=str(((await bot.Ask(int(user),TEXTS.Ask_P_O_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60,disable_web_page_preview =True))).text) 16 | if Link.split('/')[-2].isdigit(): 17 | Channel=str(((await bot.Ask(int(user),TEXTS.Ask_Private_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 18 | Private=True 19 | else: 20 | Private=False 21 | Channel=Link.split('/')[-2] 22 | id=[int(Link.split('/')[-1])] 23 | except TimeoutError : 24 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 25 | return 26 | except:return 27 | 28 | Nums=RJ.Account(Nums,user) 29 | 30 | X=0 31 | gap_link=Channel 32 | 33 | for i in Nums: 34 | try: 35 | Chat=None 36 | app = await i.Start() 37 | try : 38 | if Private : 39 | Chat=await app.join_chat(gap_link) 40 | Channel=int(Chat.id) 41 | except:pass 42 | await app.invoke(GetMessagesViews( peer= (await app.resolve_peer(Channel)) , id=id , increment = True)) 43 | X+=1 44 | except Exception as e:RJ.Log(int(user),f'Seen : {e}') 45 | finally : 46 | try: 47 | if Chat:await Chat.leave() 48 | except:pass 49 | try:await app.stop(False) 50 | except:pass 51 | 52 | user.Add_Coin(Config.seen * X) 53 | await message.reply_text(TEXTS.Procces_Compeleted(X),reply_markup=BUTTONS.Seen) 54 | 55 | @Advertising.on_message(RJ.prv & RJ.regex('^لایک ♥️') , group=0) 56 | @RJ.User_Details 57 | @RJ.Coin_Limit 58 | async def Send_Like(bot,message,user:User): 59 | try: 60 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 61 | Link=str(((await bot.Ask(int(user),TEXTS.Ask_P_O_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60,disable_web_page_preview =True))).text) 62 | if Link.split('/')[-2].isdigit(): 63 | Channel=str(((await bot.Ask(int(user),TEXTS.Ask_Private_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 64 | Private=True 65 | else: 66 | Private=False 67 | Channel=Link.split('/')[-2] 68 | id=int(Link.split('/')[-1]) 69 | 70 | except TimeoutError : 71 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 72 | return 73 | except:return 74 | 75 | Nums=RJ.Account(Nums,user) 76 | 77 | X=0 78 | gap_link=Channel 79 | 80 | for i in Nums: 81 | try: 82 | Chat=None 83 | app = await i.Start() 84 | try : 85 | if Private : 86 | Chat=await app.join_chat(gap_link) 87 | Channel=int(Chat.id) 88 | except:pass 89 | Butt=(await app.get_messages(Channel,id)) 90 | await Butt.click(0) 91 | await sleep(1) 92 | X+=1 93 | except Exception as e:RJ.Log(int(user),f'Sending Reaction : {e}') 94 | finally : 95 | try: 96 | if Chat:await Chat.leave() 97 | except:pass 98 | try:await app.stop(False) 99 | except:pass 100 | 101 | user.Add_Coin(Config.like * X) 102 | await message.reply_text(TEXTS.Procces_Compeleted(X),reply_markup=BUTTONS.Seen) 103 | 104 | @Advertising.on_message(RJ.prv & RJ.regex('^انبلاک 🔓') , group=0) 105 | @RJ.User_Details 106 | @RJ.Coin_Limit 107 | async def Unblock_User(bot,message,user:User): 108 | try: 109 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 110 | username=str(((await bot.Ask(int(user),TEXTS.Ask_Id,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 111 | if username.isdigit():user=int(user) 112 | except TimeoutError : 113 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 114 | return 115 | except:return 116 | 117 | Nums=RJ.Account(Nums,user) 118 | X=0 119 | for i in Nums: 120 | try: 121 | app = await i.Start() 122 | await app.unblock_user(username) 123 | await sleep(1) 124 | X+=1 125 | except Exception as e:RJ.Log(int(user),f'Unblock Users : {e}') 126 | finally : 127 | try:await app.stop(False) 128 | except:pass 129 | user.Add_Coin(Config.block * X) 130 | await message.reply_text(TEXTS.Procces_Compeleted(X),reply_markup=BUTTONS.Seen) 131 | 132 | 133 | 134 | 135 | @Advertising.on_message(RJ.prv & RJ.regex('^بلاک 🔒') , group=0) 136 | @RJ.User_Details 137 | @RJ.Coin_Limit 138 | async def Block_User(bot,message,user:User): 139 | try: 140 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 141 | username=str(((await bot.Ask(int(user),TEXTS.Ask_Id,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 142 | if username.isdigit():user=int(user) 143 | except TimeoutError : 144 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 145 | return 146 | except:return 147 | 148 | Nums=RJ.Account(Nums,user) 149 | X=0 150 | for i in Nums: 151 | try: 152 | app = await i.Start() 153 | await app.block_user(username) 154 | await sleep(1) 155 | X+=1 156 | except Exception as e:RJ.Log(int(user),f'Block Users : {e}') 157 | finally : 158 | try:await app.stop(False) 159 | except:pass 160 | user.Add_Coin(Config.block * X) 161 | await message.reply_text(TEXTS.Procces_Compeleted(X),reply_markup=BUTTONS.Seen) 162 | 163 | 164 | 165 | 166 | @Advertising.on_message(RJ.prv & RJ.regex('^ری اکشن 🤩') , group=0) 167 | @RJ.User_Details 168 | @RJ.Coin_Limit 169 | async def Send_Reaction(bot,message,user:User): 170 | try: 171 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 172 | Emoji=str(((await bot.Ask(int(user),TEXTS.Ask_Emoji,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 173 | Link=str(((await bot.Ask(int(user),TEXTS.Ask_P_O_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60,disable_web_page_preview =True))).text) 174 | if Link.split('/')[-2].isdigit(): 175 | Channel=str(((await bot.Ask(int(user),TEXTS.Ask_Private_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 176 | else: 177 | Channel=Link.split('/')[-2] 178 | id=int(Link.split('/')[-1]) 179 | 180 | except TimeoutError : 181 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 182 | return 183 | except:return 184 | 185 | Nums=RJ.Account(Nums,user) 186 | 187 | X=0 188 | gap_link=Channel 189 | 190 | for i in Nums: 191 | try: 192 | Chat=None 193 | app = await i.Start() 194 | if '/joinchat/' in Channel or '+' in Channel : 195 | try : 196 | Chat=await app.join_chat(gap_link) 197 | Channel=int(Chat.id) 198 | except:pass 199 | await app.send_reaction(Channel,id,Emoji) 200 | await sleep(1) 201 | X+=1 202 | except (errors.ReactionEmpty , errors.ReactionInvalid ): 203 | await message.reply_text(TEXTS.Invalied_Reaction,reply_markup=BUTTONS.Seen) 204 | try:await app.stop(False) 205 | except:pass 206 | return 207 | except Exception as e:RJ.Log(int(user),f'Sending Reaction : {e}') 208 | finally : 209 | try: 210 | if Chat:await Chat.leave() 211 | except:pass 212 | try:await app.stop(False) 213 | except:pass 214 | user.Add_Coin(Config.reaction * X) 215 | await message.reply_text(TEXTS.Reaction_Compeleted(X,Emoji),reply_markup=BUTTONS.Seen) 216 | 217 | @Advertising.on_message(RJ.prv & RJ.regex('^ریپورت کانال 🪓') , group=0) 218 | @RJ.User_Details 219 | @RJ.Coin_Limit 220 | async def Repoet_User(bot,message,user:User): 221 | try: 222 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 223 | username=str(((await bot.Ask(int(user),TEXTS.Ask_Id,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 224 | Reason=str(((await bot.Ask(int(user),TEXTS.Ask_Reason,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 225 | 226 | if 't.me' in username: 227 | username=username.split('/')[-1] 228 | 229 | try:Reason=RJ.report[Reason] 230 | except: 231 | await message.reply_text(TEXTS.Wrong,reply_markup=BUTTONS.Seen) 232 | return 233 | Reason_message=TEXTS.report(RJ.Random_Name) 234 | if Reason==RJ.report['Other']:Reason_message=str(((await bot.Ask(int(user),TEXTS.ask_RMessage,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 235 | if username.isdigit():username=int(user) 236 | except TimeoutError : 237 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 238 | return 239 | except:return 240 | Nums=RJ.Account(Nums,user) 241 | X=0 242 | for i in Nums: 243 | try: 244 | app = await i.Start() 245 | victam=await app.resolve_peer(username) 246 | await app.invoke(ReportPeer(peer=victam,reason=Reason(),message=Reason_message)) 247 | X+=1 248 | except Exception as e:RJ.Log(int(user),f'Report Users : {e}') 249 | finally : 250 | try:await app.stop(False) 251 | except:pass 252 | 253 | user.Add_Coin(Config.report * X) 254 | await message.reply_text(TEXTS.Reported_by(X),reply_markup=BUTTONS.Seen) 255 | 256 | @Advertising.on_message(RJ.prv & RJ.regex('^ریپورت پیام 🔪') , group=0) 257 | @RJ.User_Details 258 | @RJ.Coin_Limit 259 | async def Report_Message(bot,message,user:User): 260 | try: 261 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 262 | Link=str(((await bot.Ask(int(user),TEXTS.Ask_P_O_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 263 | Reason=str(((await bot.Ask(int(user),TEXTS.Ask_Reason,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 264 | try:Reason=RJ.report[Reason] 265 | except: 266 | await message.reply_text(TEXTS.Wrong,reply_markup=BUTTONS.Seen) 267 | return 268 | Reason_message=TEXTS.report(RJ.Random_Name) 269 | if Reason==RJ.report['Other']:Reason_message=str(((await bot.Ask(int(user),TEXTS.ask_RMessage,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 270 | if Link.split('/')[-2].isdigit(): 271 | Channel=str(((await bot.Ask(int(user),TEXTS.Ask_Private_Link,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 272 | else: 273 | Channel=Link.split('/')[-2] 274 | id=int(Link.split('/')[-1]) 275 | 276 | except TimeoutError : 277 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 278 | return 279 | except:return 280 | Nums=RJ.Account(Nums,user) 281 | X=0 282 | gap_link=Channel 283 | for i in Nums: 284 | try: 285 | Chat=None 286 | app = await i.Start() 287 | if '/joinchat/' in Channel or '+' in Channel : 288 | try : 289 | Chat=await app.join_chat(gap_link) 290 | Channel=int(Chat.id) 291 | except:pass 292 | channel_pear=await app.resolve_peer(Channel) 293 | await app.invoke(Report(peer=channel_pear,id=[id],reason=Reason(),message=Reason_message)) 294 | X+=1 295 | except Exception as e:RJ.Log(int(user),f'Report MSG : {e}') 296 | finally : 297 | try: 298 | if Chat:await Chat.leave() 299 | except:pass 300 | try:await app.stop(False) 301 | except:pass 302 | user.Add_Coin(Config.report * X) 303 | await message.reply_text(TEXTS.Reported_by(X),reply_markup=BUTTONS.Seen) 304 | 305 | 306 | # @Advertising.on_message(RJ.prv & RJ.regex('^اکو ایردراپ 🔊💥') , group=0) 307 | # @RJ.User_Details 308 | # @RJ.Coin_Limit 309 | # async def Echo_Bot(bot:Advertising,message,user:User): 310 | # try: 311 | # Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 312 | # Robot=str(((await bot.Ask(int(user),TEXTS.StartBot_User,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 313 | # except TimeoutError : 314 | # await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Seen) 315 | # return 316 | # except:return 317 | 318 | # Nums=RJ.Account(Nums,user) 319 | # cancel=False 320 | # Active_Nums=[] 321 | # for i in Nums: 322 | # try: 323 | # app=await i.Start() 324 | # Active_Nums.append(app) 325 | # except:pass 326 | 327 | # while cancel==False: 328 | # try: 329 | # work =str(((await bot.Ask(int(user),TEXTS.Echo_Airdrop,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 330 | # txt =str(((await bot.Ask(int(user),TEXTS.Echo_Airdrop,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 331 | # except : break 332 | # if 'cancel' in work.lower() or TEXTS.Cancel_Proccess in work:break 333 | 334 | # elif 'JOIN' in work.lower(): 335 | # msg_ent=[i for i in work.entities if i.URL or ent.TEXT_LINK or ent.MENTION ] 336 | # channels=[] 337 | # for i in msg_ent : 338 | # if i.URL or ent.TEXT_LINK : 339 | # channels+=RJ.RetLink(str(i.url)) 340 | 341 | # for i in message 342 | 343 | -------------------------------------------------------------------------------- /Data/DataBase.py: -------------------------------------------------------------------------------- 1 | import sqlite3 as db 2 | from tabulate import tabulate 3 | import datetime 4 | 5 | import os 6 | #SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 7 | del os 8 | 9 | class Data: 10 | def __init__(self) -> None: 11 | self.con = db.connect(f"AttackBase.db" , detect_types=db.PARSE_DECLTYPES, check_same_thread = False) 12 | self.c=self.con.cursor()#banner INT 13 | #, INT, INT, New INT , TEXT ,autopro INT,autobio TEXT 14 | self.c.execute('CREATE TABLE IF NOT EXISTS Users (User_id INT PRIMARY KEY, Coins INT , Membership TEXT )') 15 | self.c.execute('CREATE TABLE IF NOT EXISTS Attack (User_id INT PRIMARY KEY , Banners TEXT , Round_speed INT , Attack_speed INT , Auto_name TEXT , Auto_profile INT , Auto_bio TEXT , Auto_api INT)') 16 | self.c.execute('CREATE TABLE IF NOT EXISTS Accounts (number INT PRIMARY KEY , api_hash TEXT , api_id INT , session TEXT ,user_id INT, active INT , natural INT )') 17 | self.c.execute('CREATE TABLE IF NOT EXISTS Deleted (number INT PRIMARY KEY )') 18 | self.con.commit() 19 | print('DataBase Has Successfully Loaded') 20 | 21 | 22 | def Num_Owner(self,num): 23 | self.c.execute('SELECT user_id FROM accounts where number=:numm',{'numm':num}) 24 | rows=self.c.fetchall() 25 | return int(rows[0][0]) 26 | 27 | @property 28 | def All_Users(self): 29 | self.c.execute('SELECT User_id,Coins FROM Users') 30 | return {i[0]:int(i[1]) for i in (self.c.fetchall())} 31 | 32 | @property 33 | def All_Numbers(self): 34 | self.c.execute('SELECT number,api_id,api_hash,session,user_id FROM accounts') 35 | rows=self.c.fetchall() 36 | return rows 37 | 38 | @property 39 | def Natural_Accounts(self): 40 | self.c.execute('SELECT number,api_id,api_hash,session,user_id FROM accounts WHERE natural=1') 41 | rows=self.c.fetchall() 42 | return rows 43 | 44 | @property 45 | def All_Data_Text(self) -> str: 46 | Text='DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER \n WWW.GITHUB.COM/AMIRALIRJ \n DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER \n \n ' 47 | Tabels={'Users':['User_id','Coins','Membership'],'Attack':['User_id','Banners','Round_speed','Attack_speed','Auto_name','Auto_profile','Auto_bio','Auto_api'],'Accounts':['number','api_hash','api_id','session','user_id','active']} 48 | for i in Tabels : 49 | Data=self.c.execute(f'SELECT * FROM {i}').fetchall() 50 | tab=tabulate(Data , Tabels[i], tablefmt="pretty") 51 | Text+=f"{tab} \n \n " 52 | Text+='DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER \n WWW.GITHUB.COM/AMIRALIRJ - WWW.GITHUB.COM/AMIRALIRJ\n DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER DARK ADVERTIZER - DARK ADVERTIZER - DARK ADVERTIZER \n \n ' 53 | return Text 54 | 55 | class UserBase: 56 | def __init__(self,User_id:int,con) -> None: 57 | self.User_id=int(User_id) 58 | self.con=con 59 | self.c=self.con.cursor() 60 | self.dev='@Amiralirj_g' 61 | self.git='www.github.com\amiralirj' 62 | 63 | def Add_User(self): 64 | self.c.execute('INSERT OR IGNORE INTO Users (User_id,Coins,Membership) VALUES (:User_id,:Coins,:Membership)',{'User_id':self.User_id,'Coins':0,'Membership':'None'}) 65 | self.c.execute('INSERT OR IGNORE INTO Attack (User_id,Banners,Round_speed,Attack_speed,Auto_name,Auto_profile,Auto_bio,Auto_api) VALUES (:User_id,:Banners,:Round_speed,:Attack_speed,:Auto_name,:Auto_profile,:Auto_bio,:Auto_api)', 66 | {'User_id':self.User_id,'Banners':0,'Round_speed':1,'Attack_speed':1,'Auto_name':'None','Auto_profile':0,'Auto_bio':'None','Auto_api':1}) 67 | self.con.commit() 68 | 69 | def addcoin(self,Amount:int): 70 | self.c.execute(f'UPDATE Users set Coins=Coins+{int(Amount)} WHERE User_id=:user',{'user':int(self.User_id)}) 71 | self.con.commit() 72 | 73 | def Add_Sql_Membership(self,date): 74 | self.c.execute(f'UPDATE Users SET Membership=:Membership WHERE User_id=:user',{'user':int(self.User_id),'Membership':date}) 75 | self.con.commit() 76 | return date 77 | 78 | def Add_Membership(self,date): 79 | membership=str(datetime.date.today() + datetime.timedelta(days=date)) 80 | self.c.execute(f'UPDATE Users SET Membership=:Membership WHERE User_id=:user',{'user':int(self.User_id),'Membership':membership}) 81 | self.con.commit() 82 | return membership 83 | 84 | @property 85 | def Show_Membership(self): 86 | self.c.execute('SELECT Membership FROM Users WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 87 | M_D=str((self.c.fetchall())[0][0]) 88 | if M_D == 'None':'2004-2-24' 89 | return M_D 90 | 91 | @property 92 | def Have_Membership(self): 93 | Day = datetime.datetime.now() 94 | m_date=self.Show_Membership 95 | if m_date == 'None': return False 96 | End_Sub = datetime.datetime.now().strptime(m_date,"%Y-%m-%d") 97 | if Day < End_Sub: 98 | return True 99 | return False 100 | 101 | def Reduce_Coin(self,Amount:int): 102 | self.c.execute(f'UPDATE Users SET Coins=Coins-{int(Amount)} WHERE User_id=:user',{'user':int(self.User_id)}) 103 | self.con.commit() 104 | 105 | @property 106 | def User_Coin(self): 107 | self.c.execute('SELECT Coins FROM Users WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 108 | return (self.c.fetchall())[0][0] 109 | 110 | #---------------------------------------------------------------------------------------------------- 111 | def Set_Auto_API(self,Api:int): 112 | self.c.execute(f'UPDATE Attack SET Auto_api={int(Api)} WHERE User_id=:user',{'user':int(self.User_id)}) 113 | self.con.commit() 114 | 115 | @property 116 | def Show_Auto_API(self): 117 | self.c.execute('SELECT Auto_api FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 118 | return (self.c.fetchall())[0][0] 119 | 120 | @property 121 | def Show_Banners(self): 122 | self.c.execute('SELECT Banners FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 123 | banners=(self.c.fetchall())[0][0] 124 | try: 125 | if int(banners)==0:return False 126 | else:return str(banners) 127 | except:return str(banners) 128 | 129 | def SQL_Add_Banner(self,Banner:str): 130 | self.c.execute(f'UPDATE Attack SET Banners=:bnr WHERE User_id=:user',{'user':int(self.User_id),'bnr':Banner}) 131 | self.con.commit() 132 | 133 | def Set_Banner(self,Banner_id:int): 134 | USR_BNR=self.Show_Banners 135 | if USR_BNR!=False: 136 | banner_str=str(USR_BNR) + '-' + str(Banner_id) 137 | self.SQL_Add_Banner(banner_str) 138 | return True 139 | else: 140 | self.SQL_Add_Banner(str(Banner_id)) 141 | return True 142 | 143 | def Set_Round_Speed(self,speed:int): 144 | self.c.execute(f'UPDATE Attack SET Round_speed={float(speed)} WHERE User_id=:user',{'user':int(self.User_id)}) 145 | self.con.commit() 146 | 147 | @property 148 | def Show_R_Speed(self): 149 | self.c.execute('SELECT Round_speed FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 150 | return (self.c.fetchall())[0][0] 151 | 152 | def Set_Attack_Speed(self,speed:int): 153 | self.c.execute(f'UPDATE Attack SET Attack_speed={float(speed)} WHERE User_id=:user',{'user':int(self.User_id)}) 154 | self.con.commit() 155 | 156 | @property 157 | def Show_A_Speed(self): 158 | self.c.execute('SELECT Attack_speed FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 159 | return (self.c.fetchall())[0][0] 160 | 161 | def Set_Auto_Name(self,Name:str): 162 | self.c.execute(f'UPDATE Attack SET Auto_name=:nm WHERE User_id=:user',{'user':int(self.User_id),'nm':str(Name)}) 163 | self.con.commit() 164 | 165 | @property 166 | def Show_Auto_Name(self): 167 | self.c.execute('SELECT Auto_name FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 168 | NM=(self.c.fetchall())[0][0] 169 | if NM=='None': 170 | return False 171 | else: 172 | return str(NM) 173 | 174 | def Set_Auto_Bio(self,bio:str): 175 | self.c.execute(f'UPDATE Attack SET Auto_bio=:bio WHERE User_id=:user',{'user':int(self.User_id),'bio':str(bio)}) 176 | self.con.commit() 177 | 178 | @property 179 | def Show_Auto_Bio(self): 180 | self.c.execute('SELECT Auto_bio FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 181 | BIO=(self.c.fetchall())[0][0] 182 | if BIO=='None': 183 | return False 184 | else: 185 | return str(BIO) 186 | 187 | def Set_Auto_profile(self,speed:int): 188 | self.c.execute(f'UPDATE Attack SET Auto_profile={int(speed)} WHERE User_id=:user',{'user':int(self.User_id)}) 189 | self.con.commit() 190 | 191 | @property 192 | def Show_Auto_profile(self): 193 | self.c.execute('SELECT Auto_profile FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 194 | PR=(self.c.fetchall())[0][0] 195 | if int(PR)==0:return False 196 | else : return int(PR) 197 | 198 | def Show_User_All_Features(self): 199 | self.c.execute('SELECT Banners,Round_speed,Attack_speed,Auto_name,Auto_profile,Auto_bio,Auto_api FROM Attack WHERE User_id=:user_id',{'user_id':int(self.User_id)}) 200 | FT=(self.c.fetchall())[0] 201 | return {'Banners':FT[0],'Round_speed':FT[1],'Attack_speed':FT[2],'Auto_name':FT[3],'Auto_profile':FT[4],'Auto_bio':FT[5],'Auto_api':FT[6]} 202 | 203 | @property 204 | def User_Accounts(self): 205 | '''number,api_id,api_hash,session''' 206 | self.c.execute('SELECT number,api_id,api_hash,session,user_id FROM accounts WHERE user_id=:user_id ',{'user_id':int(self.User_id)}) 207 | rows=self.c.fetchall() 208 | return rows 209 | 210 | @property 211 | def User_Active_Accounts(self): 212 | '''number,api_id,api_hash,session''' 213 | self.c.execute('SELECT number,api_id,api_hash,session,user_id FROM accounts WHERE user_id=:User_id AND active=1 ',{'User_id':int(self.User_id)}) 214 | rows=self.c.fetchall() 215 | return rows 216 | 217 | def Delete_All_Numbers(self): 218 | self.c.execute('DELETE FROM accounts WHERE user_id=:user_id',{'user_id':int(self.User_id)}) 219 | self.con.commit() 220 | 221 | def Add_Api(self,API:str,App_ID:int): 222 | try: 223 | self.c.execute('INSERT INTO API_Keys (API,App_ID,User_id) VALUES (:API,:App_ID,:User_id)',{'User_id':self.User_id,'App_ID':App_ID,'API':API}) 224 | self.con.commit() 225 | except:return False 226 | 227 | @property 228 | def User_Api(self): 229 | self.c.execute('SELECT API,App_ID,User_id FROM accounts WHERE User_id=:user_id ',{'user_id':int(self.User_id)}) 230 | rows=self.c.fetchall() 231 | return rows 232 | #-------------------------------------------------------------------------------------------------------------------- 233 | class NumberBase: 234 | 235 | def __init__(self,User_id:int,Number:int,con) -> None: 236 | self.Number=int(Number) 237 | self.User_id=int(User_id) 238 | self.con=con 239 | self.c=self.con.cursor() 240 | self.dev='@Amiralirj_g' 241 | self.git='www.github.com\amiralirj' 242 | 243 | def Active_Check(self): 244 | self.c.execute('SELECT active FROM accounts WHERE number=:number',{'number':self.Number}) 245 | if self.c.fetchall()[0][0]==1: 246 | return True 247 | else: 248 | return False 249 | 250 | def Natural_Check(self): 251 | self.c.execute('SELECT natural FROM accounts WHERE number=:number',{'number':self.Number}) 252 | if int(self.c.fetchall()[0][0])==1: 253 | return True 254 | else: 255 | return False 256 | 257 | def Number_Check(self): 258 | self.c.execute('SELECT number FROM accounts WHERE number=:number',{'number':self.Number}) 259 | q=self.c.fetchall() 260 | if q==[]: 261 | return False 262 | else: 263 | # if len(q[0]) <= 2: 264 | # self.c.execute('DELETE FROM accounts WHERE number=:num ',{'num':int(self.Number)}) 265 | # return False 266 | return True 267 | 268 | def Number_Details(self): 269 | try: 270 | self.c.execute('SELECT * FROM accounts WHERE number=:number AND user_id=:user_id ',{'number':self.Number,'user_id':int(self.User_id)}) 271 | q=self.c.fetchall() 272 | return q[0] 273 | except:False 274 | 275 | def regester_account(self,api_hash,api_id,setion_str): 276 | self.c.execute('insert into accounts (number,api_hash,api_id,session,user_id,active,natural) values (:number,:api_hash,:api_id,:session,:user_id,:active,:natural)',{'active':1,'number':int(self.Number),'api_hash':str(api_hash),'api_id':int(api_id),'session':str(setion_str),'user_id':int(self.User_id),'natural':0}) 277 | self.con.commit() 278 | 279 | 280 | def Delete_Number(self): 281 | x=self.c.execute('SELECT number FROM accounts WHERE user_id=:user_id ',{'user_id':int(self.User_id)}).fetchall()[0] 282 | self.c.execute('DELETE FROM accounts WHERE number=:num AND user_id=:user_id',{'user_id':int(self.User_id),'num':int(self.Number)}) 283 | self.con.commit() 284 | 285 | 286 | def Account_Verify(self): 287 | self.c.execute('SELECT number FROM accounts WHERE user_id=:user_id AND number=:number' ,{'user_id':int(self.User_id),'number':int(self.Number)}) 288 | row=self.c.fetchall() 289 | try: 290 | row[0][0] 291 | return True 292 | except: 293 | return False 294 | 295 | def Activity(self,activity:bool): 296 | self.c.execute(f'UPDATE accounts SET active=:act WHERE number=:number' ,{'act':int(activity),'number':int(self.Number)}) 297 | self.con.commit() 298 | 299 | def Natural(self,Natural:bool): 300 | self.c.execute(f'UPDATE accounts SET natural=:natt WHERE number=:number' ,{'natt':int(Natural),'number':int(self.Number)}) 301 | self.con.commit() 302 | 303 | 304 | def Transfer(self,Reciver): 305 | if self.Account_Verify() : 306 | self.c.execute(f'UPDATE accounts SET user_id=:usid WHERE number=:number' ,{'usid':int(Reciver),'number':int(self.Number)}) 307 | # num=self.c.execute('SELECT number,api_hash,api_id,session FROM accounts WHERE user_id=:user_id AND number=:num ',{'user_id':int(self.User_id),'num':self.Number}).fetchall()[0] 308 | # self.c.execute('DELETE FROM accounts WHERE number=:num AND user_id=:user_id',{'user_id':int(self.User_id),'num':int(self.Number)}) 309 | # try:self.Delete_Number() 310 | # except:pass 311 | # self.c.execute('INSERT into accounts (number,api_hash,api_id,session,user_id,active) values (:num,:api_hash,:api_id,:session,:user_id,:active)',{'active':1,'num':str(num[0]),'api_hash':str(num[1]),'api_id':int(num[2]),'session':str(num[3]),'user_id':int(Reciver)}) 312 | self.con.commit() 313 | return self.Number 314 | 315 | 316 | #----------------|لنز اعتمادو باید وارونه بزاره ادم | 317 | DataBase=Data()#-|لنز اعتمادو باید وارونه بزاره ادم | 318 | #----------------|لنز اعتمادو باید وارونه بزاره ادم | -------------------------------------------------------------------------------- /Config/TEXTS.py: -------------------------------------------------------------------------------- 1 | start='''ربات دارک اتکر اماده ی ارائه خدمات ( ارسال کردن بنر ، اسپم ، سین ، تبچی ) و ده ها قابلیت دیگر به شما هست 🌒⚜️ 2 | 3 | 🔅 از دکمه های زیر میتوانید خدمات مورد نظر خود را انتخاب کنید 🔅''' 4 | 5 | Hello_Sear='''سلام مدیر 💎 6 | 🔧 از منوی زیر میتونید ربات را کنترل کنید 🔧''' 7 | 8 | Coin_Lack='موجودی حساب شما برای انجام عملیات کافی نیست !' 9 | 10 | Buy_Coin='کاربر گرامی برای تهیه کوین میتوانید و مراجعه به پشتیبانی روی دکمه ی زیر کلیک کنید ! ' 11 | 12 | Coin_Details=lambda coin , name , date: f'''اطلاعات حساب 👤 : 13 | نام : {name} 🤌🏽 14 | سکه : {coin} 🪙 15 | اشتراک روزانه : {date} 📅 16 | ''' 17 | Support = '🔰 پاسخ دهی به سریع ترین حالت ممکن در حال انجام است و لطفا صبور باشید ! \n برای ورود به پیوی روی دکمه ی زیر کلیک کنید 🧑🏼‍💻' 18 | 19 | 20 | Attack_Pannel='وارد پنل اتک شدید ⚠️ !' 21 | 22 | Attack_Main_Pannel='''🔆 به پنل اصلی تبلیغات وارد شدید 🔆 23 | تخریبی💥💥💥 یا بدون فلاد 💥 : 24 | در این نوع اتک با استفاده از الگوریتم های پیشرفته وقتی اکانتی از طرف تلگرام محدود میشود ، به لیست انتظار اضافه میشود تا زمانی که محدودیتش تمام شود و زمانی که محدودیت اکانت تمام شد ، اکانت به فرایند تبلیغات باز میگردد و اگر زمان محدودیت بیشتر از زمان اتک باشد ، اکانت وارد فرایند نمیشود 🔥 25 | 26 | هوشمند🧠: 27 | در این نوع اتک ربات به صورت هوشمندانه زمان محدود شدن را میسنجد و طبق الگوریتم تبلیغات را متوقف میکند تا محدودیت اکانت تمام شود یا اکانت را از فرایند حذف میکند 🔥 28 | 29 | تبلیغاتی👀: 30 | این نوع اتک برای تبلیغات مناسب هست و طبق الگوریتم به هر یوزرنیم فقط یک بنر ارسال میشود 🔥''' 31 | 32 | Banner_Pannel= 'وارد پنل بنر ها شدید 📩 !' 33 | 34 | Main_Pannel='وارد پنل اصلی شدید !⚜️' 35 | 36 | Add_Benner='بنر مورد نظر خود را ارسال کنید , همچنین میتوانید از قسمت ** بنر های فعلی📩 ** بنر خود را پاک کنید ! ' 37 | 38 | Banner_Added='بنر فرستاده شده به لیست بنر ها اضافه شد ✅' 39 | 40 | Banner_Removed='بنر با موفقیت حذف شد ✅ ' 41 | 42 | No_Banner_Setted='''⭕️ کاربر گرامی : 43 | لطفا اول بنر خود را ثبت کنید .''' 44 | 45 | Account_Pannel='وارد پنل اکانت ها شدید !👤' 46 | 47 | Seen_Pannel='وارد پنل سین و لایک شدید 👁️' 48 | 49 | Add_Account='لطفا شماره اکانت خود را با پیش شماره و + ارسال کنید 🛑' 50 | 51 | Number_Is_Regestered='📛 شماره ی فرستاده شده قبلا در ربات ثبت شده است ، برای پاک کردن و اثبات مالکیت شماره به پشتیبانی مراجعه فرمایید 📛' 52 | 53 | Problem_Occured='مشکلی در ارتباط با سرور تلگرام پیش امد 🌐🚦' 54 | 55 | Problem_with=lambda num , e : f'🚦 مشکلی با اکانت {num} در انجام عملیات پیش امد . \n {e}' 56 | 57 | Left_after_task = ' آیا ربات بعد از عملیات از گروه با اکانت ها لفت بدهد ؟ \n `بله` \n `خیر`' 58 | 59 | Send_Code='''کاربر گرامی : کد ارسال شده به اکانت را به صورت اعداد انگلیسی بفرستید ! 60 | ⚠️ نکته : اگر اکانت دارای رمز است رمز را نیز به شکل مثال زیر در کنار کد بنویسید ! 61 | مثال : 62 | Code Password 63 | 856911 amir ''' 64 | 65 | Send_Code_Again='''🛑کاربر گرامی : کد ارسال شده به اکانت را ** دوباره ** به صورت اعداد انگلیسی بفرستید ! 66 | ** فقط کد را بفرستید ** نیازی به فرستادن رمز نیست !🛑 ''' 67 | 68 | 69 | Send_Code_Error=lambda Code:f'''کد را به صورت عدد و با توجه به توضیحات بالا بفرستید !! 70 | کد اشتباه فرستاده شده : {Code} ❌''' 71 | 72 | succesfully_loggin='ربات با موفقیت وارد اکانت شد !✅' 73 | 74 | Number_Incorrect='شماره ارسال شده اشتباه است ‼️' 75 | 76 | Flood_Wait_Loggin=lambda X:f'اکانت شما به مدت {X} محدود است !🚒' 77 | 78 | Password_Incorect=lambda hint:f'''رمز اکانت اشتباه است ⚠️ لطفا دوباره پسورد را به صورت تنها وارد کنید : 79 | راهنما : {hint} ''' 80 | 81 | Password_requerd='رمز اکانت را وارد نکردید , اکانت رمز دارد ❌' 82 | 83 | Time_Out='''🔅 فرصت شما برای فرستادن مقدار درخواست شده تمام شد 🕒 84 | لطفا دوباره فرایند مورد نظر را از اول شروع کنید ! 🔅''' 85 | 86 | Password_Is_Incorect='⚠️رمز اکانت را 2 بار اشتباه وارد کردید !! \n دوباره فرایند را از اول طی کنید !' 87 | 88 | Runned_WO_API=lambda num , name , id :f'''اکانت شما با شماره ب {num} با موفقیت ثبت شد ✅ 89 | 90 | 🔹Name : {name} 91 | 🔸Id : {id} 92 | 93 | خطر ⚠️ : اکانت شما با api ثابت خود ربات ثبت شد و ربات قادر به دریافت api خود‌ اکانت نبود''' 94 | 95 | Runned_W_API =lambda num , api , id ,name,Uid: f'''کاربر گرامی شماره ی شما با Api خودکار روی ربات ران شد 🔥 96 | 🔹Name : {name} 97 | 🔸Id : {Uid} 98 | 🔹Number : 99 | ` {num} ` 100 | 🔸API : 101 | ` {api} ` 102 | 🔹API ID : 103 | ` {id} ` ''' 104 | 105 | Cancel_btn='❌ انصراف ❌' 106 | 107 | Cancel='عملیات بعد از چند ثانیه کنسل خواهد شد ✅' 108 | 109 | Accounts_list='''📜 لیست اکانت های شما : 110 | 🟢 : فعال 111 | 🔴 : غیرفعال 112 | ''' 113 | Accounts_Status='''🗂️وضعیت اکانت های شما 🗂️ 114 | 🟩 : سالم 115 | 🟨 : ریپورت موقت 116 | 🟥 : ریپورت دائم 117 | ❌ : دیلیت شده 118 | 🚫 : ربات از اکانت بیرون افتاده شده 119 | ''' 120 | 121 | Deleting_Numbers='به قسمت حذف شماره ها وارد شدید 🗑🗞 ' 122 | 123 | All_Deleted='تمام اکانت ها با موفقیت حذف شدند 🗑️ !' 124 | 125 | Account_Deleting='''🗑 برای پاک کردن چند یا یک اکانت اکانت هارا در یک پیام و هر اکانت ها در یک خط بفرستید . 126 | مثال : 127 | 128 | +98294924637 129 | +98039268382 130 | +98876558283''' 131 | 132 | Selected_Numbers_Deleted = 'شماره های انتخاب شده پاک شدند 🗑️ !' 133 | 134 | Limited_Numbers_Deleted = 'شماره های ریپورت شده پاک شدند 🗑️ !' 135 | 136 | StartBot_Times='تعداد بار هایی که میخواهید ربات استارت شود را به عدد اینگلیسی بفرستید !' 137 | 138 | StartBot_User=''' 🔅 کاربر گرامی : 139 | ایدیه بات مورد نظر را با @ بفرستید !''' 140 | 141 | Refferal='''🔅 اگر رفرال یا زیر مجموعه گیری دارد لطفا لینک رفرال را بفرستید در غیر این صورت عبارت ```None``` را بفرستید !🔅 142 | 143 | مثال : 144 | https://t.me/Nestarcadeairdrop_bot?start=r05422361214''' 145 | 146 | StartBot_Completed=lambda Time:f' تعداد {Time} اکانت ربات را با موفقیت استارت زدند ✅' 147 | 148 | Leave=lambda T , F : f'''⚒ عملیات تمام شد ⚒ 149 | تعداد اکانت هایی که با موفقیت لفت دادند : {T} 150 | تعداد اکانت هایی که با مشکل بر خوردند : {F}''' 151 | 152 | Join=lambda T , F : f'''⚒ عملیات تمام شد ⚒ 153 | تعداد اکانت هایی که با موفقیت جوین شدند : {T} 154 | تعداد اکانت هایی که با مشکل بر خوردند : {F}''' 155 | 156 | Leave_Chat_Ask='ایدی عددی یا یوزر نیم یا لینک گروه مورد نظر خود را ارسال کنید :' 157 | 158 | JoinChat_Ask='لینک گروه یا کانال مورد نظر را ارسال کنید :' 159 | 160 | Number_Ask='شماره مورد نظر را برای دریافت کد ها ارسال کنید !' 161 | 162 | Not_Owner='❌❌ شما صاحب این شماره نیستید ❌❌' 163 | 164 | Recived_Code=lambda cd:f'''کد های دریافت شده 🗳 : 165 | {cd}''' 166 | 167 | Clearing='''♻️ کاربر گرامی : 168 | برای پاکسازی اکانت ها : 169 | اکانت های مورد نظر را در یک پیام به صورت لیستی بفرستید و یا عبارت ` همه ` را ارسال کنید !♻️''' 170 | 171 | Clearing_Kind='''♻️ کدام نوع از پاکسازی مورد نظر شما هست ؟ ♻️ 172 | 🔰 گذینه های مورد نظر را به همراه و برای ربات بفرستید 173 | 174 | - ` کانال ` 175 | - ` پیوی ` 176 | - ` گروه ` 177 | - ` ربات ` 178 | ** مثال : ** کانال و گروه''' 179 | 180 | PV_KIND='پیوی' 181 | CHNL_KIND='کانال' 182 | GROUP_KIND='گروه' 183 | BOT_KIND='ربات' 184 | 185 | All_abrvtn='همه' 186 | 187 | Clearing_Details=lambda p , c , g , b :f'''فرایند پاکسازی اکانت ها با اطلاعات : 188 | ♻️ پاکسازی کانال ها : {c} 189 | ♻️پاکسازی گروه ها : {g} 190 | ♻️ پاکسازی پیوی ها : {p} 191 | ♻️ پاکسازی ربات ها : {b} 192 | درحال انجام شدن هست ! 193 | از فشردن دکمه های دیگر اجتناب کنید 📛''' 194 | 195 | Clearing_Finished=lambda X:f'''فرایند پاک سازی تمام شد ✅ 196 | ⭕️ تعداد فرایند های انجام شده : {X}''' 197 | 198 | Wrong='''🚫 کاربر گرامی : 199 | 200 | فرایند را اشتباه انجام دادید ❌ 201 | لطفا دوباره اقدام به انجام نمایید 💢''' 202 | 203 | HELP=lambda photo , bio , name , num_len , r_speed , a_speed , bnr_len , usrname: f'''🔥 پنل اکانت دارک اتکر 🔥 204 | شما با استفاده از این پنل میتوانید از صد ها قابلیت دارک اتکر استفاده کنید . 205 | برای استفاده کافیت اکانت های خود را ثبت کنید و از دکمه ها استفاده کنید ! 206 | 207 | 🔰 برای استفاده از فرایند ها برای فقط یک اکانت کافیست شماره ی ان را به صورت تکی بفرستید 🔰 208 | 209 | ⚙️ تنظیمات شما درحال حاظر ⚙️ 210 | 🏞 عکس خودکار : {photo} 211 | 🖋 بیو خودکار : {bio} 212 | 📖 نام خودکار : {name} 213 | 📬 تعداد اکانت ها : {num_len} 214 | 🕘 توقف اتک در‌ چرخش هر اکانت : {r_speed} 215 | 🕒 توقف اتک در چرخش هر یوزرنیم : {a_speed} 216 | 🀄️ تعداد بنر : {bnr_len} 217 | 218 | در صورت داشتن هر ایده میتوانید به پیوی سازنده ربات مراجعه نمایید : 219 | 🔅🔱 @{usrname} 🔱🔅''' 220 | 221 | Account_Setting = ' وارد پنل تنظیمات اکانت ها شدید 🔩 ⚙️' 222 | 223 | Ask_Reciver='''کاربر گرامی : 224 | 💢 ایدی عددی مقصد ( فرد دریافت کننده ی اکانت ها ) را بفرستید 💢''' 225 | 226 | Not_Regestered='کاربر مورد نظر ربات را استارت نکرده است !❌' 227 | 228 | Transfered=lambda N , S_n , R_N :f'اکانت های {S_n} با موفقیت به {R_N} انتقال داده شدند !✅ \n اکانت ها : \n {N}' 229 | 230 | Ask_Nums='''🔰 کاربر گرامی : 231 | برای فرایند مورد نظر ها : 232 | اکانت های مورد نظر را در یک پیام به صورت لیستی بفرستید و یا عبارت ` همه ` را ارسال کنید ! 233 | و یا عدد شماره ی اکانت را بفرستید 234 | و یا به صورت ` x:y ` اکانت ها را انتخاب کنید : 🔰 235 | مثال : ` 10:20 ` <<< اکانت های 10 تا 20 انتخاب میشوند ! 236 | ''' 237 | # و یا میتوانید با ارسال x:y اکانت ها را انتخاب کنید 238 | # مثال : 11:25 239 | # اکانت 11 تا اکانت 25 تم انتخاب میشوند !''' 240 | 241 | Ask_Details_kind='''👾 کدام نوع از تنظیم مشخصات مورد نظر شما هست ؟ 👾 242 | 🔰 گذینه های مورد نظر را به همراه و برای ربات بفرستید 243 | 244 | - ` پروفایل ` 245 | - ` اسم ` 246 | - ` بیو ` 247 | ** مثال : ** پروفایل''' 248 | 249 | Pro_Text = 'پروفایل' 250 | Bio_Text = 'بیو' 251 | Name_Text = 'اسم' 252 | 253 | Replaced_abbr='` {n} `' 254 | Get_Details=lambda D : f'''لطفا {D} مورد نظر که میخواهید روی اکانت ها ست شود را بفرستید 🔱 255 | 256 | ⚠️ نکته : 257 | با استفاده از{Replaced_abbr}میتوانید عدد اکانت را به اسم اضافه کنید. 258 | مثال : 259 | amirali ➙ amir¹ali''' 260 | 261 | Detailes_Finished=lambda T , F :f'''📝 فرایند تنظیم مشخصات تمام شد 📝 : 262 | فرایند های موفقیت امیز : {T} 263 | فرایند هایی که به مشکل بر خوردند : {F} ''' 264 | 265 | Change_Activity='🔅 با کلیک بر روی شماره ی مورد نظر فعالیت اکانت را خاموش یا روشن کنید 🔅' 266 | 267 | Auto_Acc_Details='''🔰 با استفاده از دکمه های زیر مشخص کنید تنظیم خودکار چه مواردی را میخواهید بر رویت اکانت های جدید ثبت کنید 268 | 269 | 🔅 از این بخش میتوانید تنظیم خودکار مشخصات را بر روی اکانت ها ثبت کنید 🔅''' 270 | 271 | Auto_Details_Setted=lambda K : f'''🔱 عملیات با موفقیت انجام شد و تنظیم خودکار {K} با موفقیت انجام شد ✅''' 272 | 273 | Number_Is_Deleted=lambda Num: f'💢📛 : اکانت ی {Num} از سرور تلگرام دیلت شده است ! پس از فرایند اتک و از دیتا بیس حذف میگردد 💢' 274 | 275 | Number_Is_Terminated=lambda Num: f'⭕️📛 : ربات از دسترسی به اکانت {Num} را ندارد و ربات از اکانت بیرون انداخته شده است ⭕️' 276 | 277 | Ask_Usernames='💢 لیست یوزر نیم ها یا شماره تلفن ها را بفرستید :' 278 | 279 | Link_Attack='''🔥 ایا میخواهید بنر مورد نظرتون دکمه شیشه ای با لینک کانال مورد نظرتون داشته باشد ؟ 280 | 281 | ⚠️ اخطار : این روش فقط برای وقتی است که تمام بنر های شما کاملا تکست است و فاقد عکس یا گیف هست 282 | - لینک کانال را بفرستید 283 | - یا واژه ی ` خیر ` را ارسال کنید''' 284 | 285 | Link_btn_Attack='''⭕️ لطفا متنی که میخواهید روی دکمه شیشه ای حاوی لینک باشد را ارسال کنید ⭕️ 286 | 287 | ⚠️ : متن دکمه نباید بیشتز از 15 حرف باشد !''' 288 | 289 | No='خیر' 290 | yes='بله' 291 | 292 | Username_NV=lambda Usr:f'⚠️ یوزر نیم نامعتبر است : {Usr}' 293 | Username_Ch=lambda Usr:f'⚠️ یوزر نیم کانال است : {Usr}' 294 | 295 | Reported=lambda Num :f' اکانت {Num} ریپورت شده است و به صورت خودکار از فرایند اتک حذف میگردد !' 296 | 297 | Attack_Details=lambda Attack , X ,T:f'''📢 : فرایند اتک تمام شد 298 | 299 | {Attack} 300 | 301 | 🔱 در مجموع تعداد {X} بنر به ایدی ها ارسال شد 302 | 🕚 در مدت زمان {T} ثانیه ! ''' 303 | 304 | Join_Btn='🔥 JOIN 🔥' 305 | 306 | Failed_attack= lambda X , Y : f'''' 📛📛📛📛 اتک تمام نشد 📛📛📛📛 307 | لیست اکانت هایی که اتک نخوردند 308 | اکانت : {Y} 309 | 310 | `{X}` 311 | 312 | ''' 313 | 314 | 315 | Flood_Attack=lambda num , X : f'''⭕️ اکانت {num} توسط سرورهای تلگرام {X}ثانیه محدود شده است ، ربات به علت کم بودن محدودیت فرایند اتک را تا برطرف شدن محدودیت متوقف میکند ، سپس بعد از اتمام محدودیت فرایند به صورت خودکار از مجددااغاز میشود ! 316 | 317 | 📛 : تا اتمام فرایند دکمه ای را ارسال نکنید !''' 318 | 319 | High_Flood_Attack=lambda num : f'⭕️ اکانت {num} به محدودیت سنگینی خورد و از فرایند تبلیغات کنار گذاشته شد ✅' 320 | 321 | Ask_Round='''⭕️ کاربر گرامی : 322 | تعداد بنر هایی که میخواهید به هر یوزرنیم ارسال شود را بفرستید و در صورت تبلیغ با حداکثر توان عبارت ` نامحدود ` را ارسال کنید !''' 323 | 324 | Username_Details=lambda users : f'''🔥 اطلاعات اکانت ها و تعداد بنر های ارسال شده به آن ها 🔥 325 | {users}''' 326 | 327 | Ask_Link='''⭕️کاربر گرامی : 328 | لینگ گروه هدف را ارسال کنید :''' 329 | 330 | User_Limit='''⭕️کاربر گرامی : 331 | تعداد یوزرنیم های مورد نظر خود که توسط اکانت ها جمع میشوند را ارسال کنید :''' 332 | 333 | n="\n" 334 | Username_Catched=lambda X : f'''🔥 یوزر نیم های جمع اوری شده : 335 | تعداد : {len(X.split(n))} 336 | 337 | `{X}` ''' 338 | 339 | Fake_Detailes_Setted=lambda Accs,X,Y,Z:f'''👤 تعداد {Accs} اکانت هویت سازی شدند : 340 | ▪️ تعداد {X} عکس روی اکانت ها قرار گرفت 341 | ▪️ تعداد {Y} نام و بیو روی اکانت ها قرار گرفت 342 | ▪️ تعداد {Z} یوزرنیم بر‌روی اکانت ها نیز قرار گرفت ✅ 343 | 344 | ⚠️تذکر: تمام مسئولیت استفاده از این بخش بر عهده کاربر میباشد !''' 345 | 346 | Cancel_Proccess='لغو' 347 | 348 | Auto_Details_Deleted=lambda Kind:f'⭕️ تنظیم خودکار {Kind} با موفقیت برداشته شد ✅' 349 | 350 | Attack_Setting='⚙️ وارد بخش تنظیمات تبلیغ و اسپم شدید ⚙️' 351 | 352 | R_Speed_Setting = lambda speed : f'''💡 توقف راند : 353 | زمانی که بعد از به پایان رسیدن لیست هدف ها توسط یک اکانت ، اتک متوقف میشود تا فرایند را با اکانتی دیگر شروع کند 354 | 355 | 🔧 زمان فعلی : {speed}s 356 | ⚙️ زمان پیشنهادی : 20s''' 357 | 358 | A_Speed_Setting = lambda speed : f'''💡 توقف اتک : 359 | زمانی که بعد از هر ایدی اکانت توقف میکند تا به ایدی بعدی بنر بدهد 360 | 361 | 🔧 زمان فعلی : {speed} 362 | ⚙️ زمان پیشنهادی : 2''' 363 | 364 | Speed_Setted =lambda X : f'⚙️ سرعت اتک بر روی {X} قرار گرفت ⚙️' 365 | 366 | Ask_Id='👤 ایدی عددی یا یوزرنیم فرد مورد نظر را ارسال کنید' 367 | 368 | Ask_Coin_Amount='🪙 تعداد کوین هایی که میخواهید به حساب فرد واریز شود را ارسال کنید' 369 | 370 | Not_Started = '❌ کاربر ربات را استارت نکرده است' 371 | 372 | Coin_Tranfered=lambda X : f'''💰 کاربر گرامی 💰 373 | تعداد {X} کوین 🪙 از طرف پشتیبانی به حساب شما واریز شد ✅🔥''' 374 | 375 | Coin_Submitted='سکه ها به موجودی فرد اضافه شدند 🪙' 376 | 377 | 378 | AskSpam_Banners_num='''💡 تعداد بنر هایی که میخواید در اسپم استفاده کنید را به صورت عدد انگلیسی ارسال کنید : 379 | 380 | مثال : 4 381 | 382 | ⚠️ توجه : 383 | سرعت تنظیم شده برای اتک برای اسپم هم نیز استفاده میشود 384 | سرعت اتک : سرعت بین هر پیام 385 | سرعت راند : سرعت بین تعویض هر اکانت''' 386 | 387 | Proccess_Started='🔅 فرایند شروع شد لطفا از فشردن دکمه های دیگر خودداری فرمایید 🔅' 388 | 389 | Spam_Complited=lambda X: f'📛 فرایند اسپم تمام شد و تعداد {X} اسپم صورت گرفت ✅' 390 | 391 | Ask_SpamBanner='💡 بنری که میخواهید توی اسپم استفاده شود را بفرستید :' 392 | 393 | Ask_Text='متن مورد نظر خود را بفرستید : ' 394 | 395 | Catcher_Kind='''👤 کاربر گرامی : 396 | لیست گیری با توجه به ممبر ها یا اکانت هایی که پیام دادند انجام بشود ؟ 397 | 398 | - ` پیام ها ` 399 | - ` ممبر ها ` 400 | 401 | 💡 : لیستگیری بر اساس پیام ها کاربران فعال را باز میگرداند !''' 402 | 403 | Members='ممبر' 404 | Messages='پیام' 405 | 406 | Ask_Speed='''⭕️ کاربر گرامی سرعت مورد نظر خود را بفرستید 407 | 🔅دقت داشته باید سرعت منفی وجود ندارد !''' 408 | 409 | Join_Channel=lambda channel : f'''🔥 کاربر گرامی 🔥 410 | 411 | برای استفاده از دارک اتکر اول باید در‌ چنل ربات جوین بشید 💎 412 | 🔅 - @{channel}''' 413 | 414 | AskBlocks='''⭕️ایا میخواهید ربات ها بلاک شوند ؟ 415 | 416 | -`بله ` 417 | -`خیر`''' 418 | 419 | Username_Added_Details=lambda Users,X,T:f'''✅عملیات به پایان رسید و درکل {X} یوزر در گروه اد شدند ✅ 420 | 421 | 📛لیست فرایند هایی که به مشکل بر خوردند : 422 | 423 | `{Users}` 424 | 425 | تایم انجام فرایند : {T}''' 426 | 427 | Ask_Adding_Link='⭕️ لطفا لینک گروهی که میخواهید اعضا در ان اد شوند را ارسال کنید :' 428 | 429 | Stats=lambda states,X:f'''- تعداد {states[1]} نفر در ربات عضو و تعداد {states[0]} شماره در ربات ثبت شده است🔥 430 | و {X} کوین در ربات وجود دارد !''' 431 | 432 | Bests=lambda stats:f'''🔅 برترین اتکر ها بر اساس اکانت های ثبت شده 🔥 433 | {stats}''' 434 | 435 | Ask_Emoji='⭕️ ایموجی مورد نظر خود را که میخواهید ری اکت شود را ارسال کنید :' 436 | 437 | Ask_P_O_Link='''⭕️ کاربر گرامی : 438 | لطفا لینک پیام مورد نظر را بفرستید : 439 | 440 | مثال : 441 | https://t.me/DarkBotsChannel/99''' 442 | 443 | Ask_Private_Link='''🔭 کانال فرستاده شده توسط ربات پرایوت تشخیص داده شده است ! 444 | 445 | لطفا لینک کانال را بفرستید تا ربات ها در‌ کانال جوین شوند و سپس فرایند اغاز میشود ❕🔅 446 | 447 | مثال : 448 | https://t.me/+ZCUXI1z3EtVkNGRk''' 449 | 450 | Invalied_Reaction='''📛 کاربر گرامی: 451 | ری اکشن فرستاده شده مورد قبول سرور تلگرام نیست ! 452 | فقط ایموجی هایی که در‌کانال قابل قبول باشد امکان ری اکت دارند ❕''' 453 | 454 | Reaction_Compeleted=lambda X , emj : f'''عملیات ری اکشن با موفقیت تمام شد و {X} ری اکشن با ایموجی {emj} صورت گرفت ✅''' 455 | 456 | Procces_Compeleted=lambda X : f'فرایند با موفقیت تمام شد و {X} فرایند توسط ربات انجام شد ✅' 457 | Procces_Compeleted_WO_NO= ' فرایند توسط ربات انجام شد ✅' 458 | 459 | User_Details=lambda username , name , mention , id : f'''کاربر {mention} : 460 | اسم : {name} 461 | ایدی عددی : {id} 462 | یوزرنیم : {username} ''' 463 | 464 | AddRestricted=lambda User: f'اد کاربر {User} بسته است !' 465 | 466 | My_Rank=lambda rank :f'''رتبه ی شما در بین همه ی اتکر ها : {rank}''' 467 | 468 | Active_Procceses=lambda X : f'''افراد فعال 🔆 : 469 | {X}''' 470 | 471 | Active_Procceses_Len=lambda X :f'تعداد افراد فعال : {X}' 472 | 473 | Ask_Channel='''⭕️ کاربر گرامی : 474 | لطفا یوزرنیم کانال/فرد/گروه مورد نظر را بفرستید : ''' 475 | 476 | Ask_Reason='''کاربر گرامی نوع ریپورت خود را مشخض کنید : 477 | 478 | ` ChildAbuse ` 479 | 480 | ` Copyright ` 481 | 482 | ` Fake ` 483 | 484 | ` GeoIrrelevant ` 485 | 486 | ` IllegalDrugs ` 487 | 488 | ` Other ` 489 | 490 | ` PersonalDetails ` 491 | 492 | ` Pornography ` 493 | 494 | ` Spam ` 495 | 496 | ` Violence ` 497 | 498 | 499 | از کلمات بالا نوع ریپورت را انتخاب کنید و بفرستید ! 500 | ''' 501 | 502 | 503 | report=lambda name : f'This contant should delete from telegram this report is sent by {name} me !' 504 | 505 | Reported_by=lambda X : f'مسیج مورد نظر توسط {X} اکانت با موفقیت ریپورت شد ✅ ' 506 | 507 | Spam_Count='تعداد پیام هایی که میخواهید از هر اکانت اسپم بشود را ارسال کنید :' 508 | 509 | 510 | ask_RMessage='''⭕️ کاربر گرامی : 511 | لطفا دلیل ریپورت و گذارش این پیام را به صورت مختصر در 2 خط بنویسید⭕️ ''' 512 | 513 | AskDeleted_Account='لطفا ایدی اکانتی که دیلیت شده است را ارسال کنید : ' 514 | 515 | Account_Tranferred= lambda x , user , new_user : f''' ⭕️✅ تمامی اطلاعات شامل (کوین و اکانت ها) از اکانت دیلیت شده به اکانت جدید ارسال شدند ! 516 | s 517 | 👤 ایدی عددی اکانت قبلی : {user} 518 | 👤 ایدی عددی اکانت جدید : {new_user} 519 | 520 | 💡 اکانت های ارسال شده : 💡 521 | 522 | {x} 523 | 524 | ''' 525 | 526 | Terminated = lambda nums , x : f'''⭕️✅ فرایند تمام شد ⭕️✅ 527 | 💡 تعداد اکانت هایی که سشن هایشان ترمینیت شدند : {x} 528 | 💡 شماره ها 💡 529 | {nums}''' 530 | 531 | Membership_Added=lambda X : f'''⭕️ کاربر گرامی : 532 | 💡 اشتراک روزانه برای شما تا تاریخ : 533 | ` {X} ` فعال شد ! 💡 534 | ''' 535 | 536 | Membership_Submitted='اشتراک با موفقیت برای کاربر واریز شد ✅ ' 537 | 538 | Ask_Date='⭕️ ادمین گرامی : لطفا تعداد روز های اشتراک را ارسال کنید : ' 539 | 540 | 541 | Ask_NewPass='''⭕️ کاربر گرامی : 542 | لطفا رمزی که میخواهید روی اکانت ها قرار بگیرد را ارسال کنید ! ''' 543 | 544 | 545 | Ask_Common_Pass='''⭕️ کاربر گرامی : 546 | اگر اکانت ها رمز دارند لطفا رمزی که استفاده کردید را ارسال کنید : 547 | 💡 : در صورت اشتباه بودن رمز دوباره از شما سوال میشود ! 548 | ''' 549 | 550 | 551 | AskPass_Invalied=lambda num : f'''📛 مشکل در تغییر رمز دوم : 552 | رمز اکانت {num} اشتباه بود 553 | 554 | 💡: لطفا رمز درست را ارسال نمایید ! 555 | 📛 برای کنسل کردن فرایند واژه ی `لغو` را بفرستید 556 | ''' 557 | 558 | PassWord_Invalied_Skiped='پسورد اکانت اشتباه بود و ربات ان را از فرایند حذف میکند !' 559 | 560 | 561 | Password_Adding_Finished=lambda X , P : f'''عملیات تنظیم پسورد با موفقیت تمام شد ✅ 562 | 563 | 💡 فرایند های موفق : {X} 564 | 💡رمز جدید : ` {P} ` 565 | 566 | Tag : #password 567 | ''' 568 | 569 | Catcher_type='''⭕️ فیلتر هایی که میخواهید را انتخاب کنید و سپس در پیام بعدی ارسال کنید : 570 | `ONLINE` - انلاین ها 571 | `RECENTLY` - لست سین ریسنتلی ها 572 | `PHOTO` - عکس دار ها 573 | `ADMINS` - ادمین ها 574 | `MEMBERS` - ممبر های عادی 575 | `PREMIUM` - اکانت های پریمیوم 576 | 577 | ⭕️ مثال : RECENTLY MEMBERS PREMIUM 578 | 579 | اگر هم فیلتری ندارید عبارت `none` را ارسال کنید 580 | ''' 581 | 582 | Activity_Report_Change='''⭕️ کاربر گرامی : 583 | آیا میخواهید اکانت های ریپورت را ( غیر فعال 🔴) و اکانت های ازاد را ( فعال 🟢) نمایید ؟ 584 | 585 | اگر این مایل به انجام این فرایند هستید واژه ` بله ` را ارسال کنید و در غیر این صورت ` خیر ` را ارسال کنید : 586 | ''' 587 | 588 | Find_Nums=lambda num , name , username , id : f'''🕵️‍♂️ اطلاعات شماره {num} بر حسب زیر است 🕵️‍♂️ 589 | 590 | 💡 𝘯𝘢𝘮𝘦 : {name} 591 | 💡 𝘶𝘴𝘦𝘳𝘯𝘢𝘮𝘦 : ` {username} ` 592 | 💡 𝘪𝘥 : ` {id} ` 593 | ''' 594 | 595 | Only_Limited_Numbers='📛📛 کاربر گرامی : \n شما فقط میتوانید 10 شماره را در یک بار جستوجو کنید 📛📛' 596 | 597 | Echo_Airdrop='''⭕️ کاربر گرامی : 598 | 599 | * پیامی که میخواهید به ربات فرستاده بشود را ارسال کنید * 600 | همچنین شما میتوانید از واژه های : 601 | 602 | ` JOIN ` : جوین شدن توی کانال از متن و دکمه ها به صورت اتوماتیک 603 | 604 | ` CAPTCHA ` : فرستادن کپچا برای شما و دریافت جواب و تکمیل کپچا با آن اکانت 605 | 606 | ` RESPOND ` : فرستادن پیام ربات برای شما و دریافت جواب اختصاصی که از طریق همان اکانت ارسال میشود 607 | 608 | ` CLICK ` : کلیک بر روی دکمه مورد نظر 609 | 610 | ` HYBRID ` : ترکیب قابلیت ها >> مثال >> اول کلیک و بعد جوین شدن 611 | 612 | ` CANCEL ` : اتمام یا لغو عملیات 613 | ''' 614 | 615 | Echo_Test='''⭕️ کاربر گرامی : 616 | متنی که میخواهید به ربات ارسال بشود را ارسال کنید 617 | ''' 618 | 619 | dev_attack_fin = lambda users , num , x : f''' 620 | {users} 621 | 622 | تعداد {x} بنر ارسال شد ! 623 | 624 | اکانت : {num}''' 625 | 626 | 627 | Link_Invalied='📛 لینک نامعتبر است 📛' 628 | Requested_Chat='📛 چت به صورت ریکوستی هست 📛' 629 | History_Closed='📛 هیستوری گروه بسته است 📛' 630 | 631 | 632 | Acc_banned=lambda num : f''' 📛 اکانت {num} از گروه بن شده است یا لینک گروه خراب است 📛''' 633 | 634 | message_C = 'تعداد پیام هایی که هر کاربر دادند : \n' 635 | 636 | Connecting_e=lambda num : f''' 📛 اکانت {num} نمیتواند با سرور تلگرام ارتباط برقرار کند , ربات تلاش خود را دوباره میکند !📛''' 637 | 638 | All_Accounts_Turned='✅ فعالیت تمامی اکانت ها عوض شدند ✅ ' 639 | 640 | Natural_Acc='''اکانتِ طبیعی 🧪 : این قابلیت برای کمتر شدن دیلیتی هست با روشن کردن این قابلیت اکانت های شما به صورت زندوم در طول روز انلاین میشن و باهم گفتگو میکنند و در کانال ها و گروه ها فعالیت میکنند و از ربات دارک و سایر ربات ها استفاده میکنند و با فعالیت در کانال ها نرخ دیلیتی رو پایین میارن😄''' 641 | 642 | Num_Natural_Deleted=lambda Num: f'💢📛 : اکانت ی {Num} از سرور تلگرام دیلت شده است ! 💢' 643 | 644 | 645 | askforward_banner='''⭕️ کاربر گرامی : 646 | بنری که میخواهید فروارد شود را فروارد یا ارسال کنید 647 | ''' 648 | 649 | Limit_Catchers = 'سقف گرفتن ممبر از روش پیام ها 100 یوزر است 📛 !' -------------------------------------------------------------------------------- /Advertiserbot.py: -------------------------------------------------------------------------------- 1 | from pyrogram.raw.functions.messages import GetAvailableReactions 2 | from pyrogram.raw.functions.messages import GetMessagesViews 3 | from pyrogram.raw.types import (InputReportReasonChildAbuse, 4 | InputReportReasonCopyright , 5 | InputReportReasonFake, 6 | InputReportReasonGeoIrrelevant, 7 | InputReportReasonIllegalDrugs, 8 | InputReportReasonOther, 9 | InputReportReasonPersonalDetails, 10 | InputReportReasonPornography, 11 | InputReportReasonSpam, 12 | InputReportReasonViolence) 13 | from pyrogram import Client , filters , errors 14 | from pyrogram.types import InputPhoneContact 15 | from Classes import UserClass , NumberClass 16 | from os import remove , listdir , path 17 | from pyrogram.enums import ChatAction 18 | from pyrogram.enums import ParseMode 19 | from random import choice , randint 20 | from Data.DataBase import DataBase 21 | from datetime import datetime 22 | from pyromod import listen 23 | from time import sleep 24 | from Config import (API_ID, 25 | OWNER_USERNAME, 26 | API_HASH, 27 | BOT_TOKEN, 28 | OWNER, 29 | TEXTS, 30 | BUTTONS, 31 | Natural_Channels, 32 | BOT_USERNAME ) 33 | import Funcs as pr 34 | import threading 35 | import logging 36 | import asyncio 37 | import Config 38 | #------------------------------------| This will make Sessions folder 39 | from os import makedirs #-| 40 | makedirs('Sessions',exist_ok=True) #-| 41 | del makedirs #-| 42 | #------------------------------------| 43 | 44 | logging.disable() 45 | 46 | #----------------------------------------------------------------------------------------------------------------| 47 | #-------------------------------------------------| ADVERTIZER |-------------------------------------------------| 48 | #-------------------------------------------------| ADVERTIZER |-------------------------------------------------| 49 | #-------------------------------------------------| ADVERTIZER |-------------------------------------------------| 50 | #----------------------------------------------------------------------------------------------------------------| Helper Class 51 | class Rj: #-| 52 | def __init__(self) -> None: #-| 53 | self.data=DataBase #-| 54 | self.Owner = OWNER #-| 55 | self.Owner_Username = OWNER_USERNAME #-| 56 | self.filters=filters #-| 57 | self.prv=self.filters.private #-| 58 | self.regex=self.filters.regex #-| 59 | self.choice = choice #-| 60 | self.remove=remove #-| 61 | self.Active_Procces={} #-| 62 | self.ms={} #-| 63 | self.report={'ChildAbuse':InputReportReasonChildAbuse, #-| 64 | 'Copyright':InputReportReasonCopyright, #-| 65 | 'Fake':InputReportReasonFake, #-| 66 | 'GeoIrrelevant':InputReportReasonGeoIrrelevant, #-| 67 | 'IllegalDrugs':InputReportReasonIllegalDrugs, #-| 68 | 'Other':InputReportReasonOther, #-| 69 | 'PersonalDetails':InputReportReasonPersonalDetails, #-| 70 | 'Pornography':InputReportReasonPornography, #-| 71 | 'Spam':InputReportReasonSpam, #-| 72 | 'Violence':InputReportReasonViolence} #-| 73 | #-| 74 | #----------------------------------------------------------------------------------------------------------------| BOT DETAILS METHOD (registered numbers & users) 75 | @property #-| 76 | def Details(self): #-| 77 | return [len(DataBase.All_Numbers),len(DataBase.All_Users)] #-| 78 | #----------------------------------------------------------------------------------------------------------------| BOT Owner recognize 79 | def is_Owner(self,user): #-| 80 | return int(user)==int(Config.OWNER) #-| 81 | #----------------------------------------------------------------------------------------------------------------| Decorator 82 | def User_Details(self,Func): #-| 83 | async def Wrapper(Cli, message): #-| 84 | User_id=int(message.from_user.id) #-| 85 | if User_id in self.ms : self.ms[User_id]+=1 #-| 86 | else:self.ms[User_id]=1 #-| 87 | await Func(Cli,message,UserClass.User(User_id)) #-| 88 | return Wrapper #-| 89 | #-| 90 | def Coin_Limit(self,Func): #-| 91 | async def Wrapper(Cli,message,User): #-| 92 | if User.Coin > 0 or User.Active_Membership : #-| 93 | try:self.Active_Procces[int(User)]=True #-| 94 | except:pass #-| 95 | await Func(Cli,message,User) #-| 96 | try:self.Active_Procces.pop(int(User)) #-| 97 | except:pass #-| 98 | else:await message.reply_text(TEXTS.Buy_Coin,reply_markup=BUTTONS.Support(self.Owner_Username)) #-| 99 | return Wrapper #-| 100 | #----------------------------------------------------------------------------------------------------------------| Errors & Logs Recording Method 101 | def Log(self,Userid,message=None): #-| 102 | with open('Logs.txt','a+',encoding='utf-8') as f : #-| 103 | f.write(f'{datetime.now().strftime("%Y-%m-%d %H:%M")} - {Userid} → {message} \n \n ' ) #-| 104 | #----------------------------------------------------------------------------------------------------------------| 105 | #---------------------------------------------------------------------------------------------------------------------\ 106 | #--------------------------------------------------------------------------------------------------------------------------| Account Spliting 107 | def Account(self,Nums:str,user,all=False) -> NumberClass.Number: #-| 108 | if all:Acc_List=user.All_numbers #-| 109 | else:Acc_List=user.All_Active_Numbers #-| 110 | if Nums.isdigit() : #-| 111 | if len(str(abs(int(Nums)))) <= 4 : #-| 112 | return NumberClass.Number(Acc_List[(int(Nums)-1)]['num'],int(user)) #-| 113 | if Nums.strip()==TEXTS.All_abrvtn : #-| 114 | Nums=[NumberClass.Number(i['num'],int(user)) for i in Acc_List ] #-| 115 | elif '+' not in Nums and '\n' not in Nums and ':' in Nums: #-|_____\ 116 | Index=Nums.split(':') #-|2022 \ 117 | Nums=[NumberClass.Number(i['num'],int(user)) for i in Acc_List[(int(Index[0])-1):(int(Index[1])-1)]] #-|[ .] | 118 | else: #-|2022 / 119 | Text_list=Nums.split('\n') #-|_____/ 120 | Nums=[NumberClass.Number(i,int(user)) for i in Text_list if (NumberClass.Number(i,int(user))).is_Owner ] #-| 121 | if isinstance(Nums,str): #-| 122 | Nums=[NumberClass.Number(i['num'],int(user)) for i in Acc_List ] #-| 123 | return Nums #-| 124 | #--------------------------------------------------------------------------------------------------------------------------| 125 | #----------------------------------------------------------------------------------------------------------------------/ 126 | #----------------------------------------------------------------------------------------------------------------| profile / bio / name UPDATER 127 | async def Auto_Detail_Setter(self,app:Client,user:UserClass.User): #-| 128 | try : #-| 129 | if user.Auto_pic: #-| 130 | try: #-| 131 | photo= await app.get_messages(Config.Banners_Channel,int(user.Auto_pic)) #-| 132 | photo=str( await photo.download()) #-| 133 | await app.set_profile_photo(photo=photo) #-| 134 | user.Add_Coin(Config.update_profile) #-| 135 | remove(photo) #-| 136 | except Exception as e:self.Log(int(user),f' Auto Picture Method : {e}') #-| 137 | if user.Auto_bio: #-| 138 | try: #-| 139 | await app.update_profile(bio=user.Auto_bio) #-| 140 | user.Add_Coin(Config.update_profile) #-| 141 | except Exception as e:self.Log(int(user),f' Auto Bio Method : {e}') #-| 142 | if user.AutoName: #-| 143 | try: #-| 144 | await app.update_profile(first_name=user.AutoName) #-| 145 | user.Add_Coin(Config.update_profile) #-| 146 | except Exception as e:self.Log(int(user),f' Auto Name Method : {e}') #-| 147 | except:pass #-| 148 | #----------------------------------------------------------------------------------------------------------------| Random 149 | @property 150 | def Random_Photo(self): 151 | return f'{Config.Photos_Path}/{(choice(listdir(Config.Photos_Path)))}' 152 | 153 | @property 154 | def Random_Bio(self): 155 | with open(f'{Config.Fake_Details_Path}/Bio.txt','r',encoding='utf-8') as f: 156 | return choice(f.readlines()).strip() 157 | 158 | @property 159 | def Random_Name(self): 160 | with open(f'{Config.Fake_Details_Path}/Name.txt','r',encoding='utf-8') as f: 161 | return choice(f.readlines()).strip() 162 | 163 | @property 164 | def Random_Username(self): 165 | with open(f'{Config.Fake_Details_Path}/Username.txt','r',encoding='utf-8') as f: 166 | username=choice(f.readlines()).strip() 167 | lst = list(username) 168 | if bool(randint(0,1)): 169 | lst.insert(randint(1, len(username)), str(randint(1365,1385))) 170 | else: 171 | lst.insert(randint(1, len(username)), str(randint(1990,2022))) 172 | return ("".join(lst)) 173 | 174 | @property 175 | def Random_API(self): 176 | with open(f'APIs.txt','r') as f: 177 | api= choice(f.readlines()).split(':') 178 | return [api[0],int(api[1])] 179 | 180 | @property 181 | def All_Users(self): 182 | return self.data.All_Users 183 | 184 | @property 185 | def DataBase_Data(self): 186 | data=str(self.data.All_Data_Text) 187 | return data 188 | 189 | def Join_Channel(self,Func): 190 | async def Wrapper(client:Client, message): 191 | try: 192 | await client.get_chat_member(Config.Dark_Channel,int(message.from_user.id)) 193 | await Func(client,message) 194 | except:await message.reply_text(TEXTS.Join_Channel(Config.Dark_Channel)) 195 | return Wrapper 196 | 197 | @property 198 | def Rand_Device(self): 199 | return choice(Config.D_MODEL).strip() 200 | 201 | 202 | def RandomString(self): 203 | characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789' 204 | Rand_String = '' 205 | for x in range(5): 206 | Rand_String +=choice(characters) 207 | return Rand_String 208 | 209 | @property 210 | def Get_Device_Detais(self): 211 | mod = choice([1, 2, 3]) 212 | device_model = choice(Config.AndroidPhone) if mod == 1 else choice( 213 | Config.IosPhone) if mod == 2 else choice(self.RandomString()) 214 | system_version = choice(Config.AndroidVersion) if mod == 1 else choice( 215 | Config.IosVersion) if mod == 2 else choice(Config.PcVersion) 216 | app_version = choice(Config.AppVersion) 217 | lang_code, system_lang_code = choice(Config.lan) 218 | return [str(device_model), str(system_version), str(app_version), str(lang_code), str(system_lang_code)] 219 | 220 | def RetLink(self,link): 221 | if '@' in link :return link 222 | elif (not '/joinchat/' in link and '+' not in link) and 't.me' in link :return (link.split("/")[-1]).split('@')[-1] 223 | elif 't.me' in link :return link.replace('https://','').replace('t.me/','') 224 | else:return False 225 | 226 | @property 227 | def Message(self): 228 | with open(f'{Config.Fake_Details_Path}/Messages.txt','r',encoding='utf-8') as f: 229 | return choice(f.readlines()).strip() 230 | 231 | RJ=Rj() 232 | #----------------------------------------------------|---------------------------------------------------- 233 | #||||||||||||||||-|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||-|||||||||||||||| 234 | #----------------------------------------------------|---------------------------------------------------- 235 | 236 | async def Seen(app): 237 | chnl=choice(Natural_Channels) 238 | async for i in app.get_chat_history(chnl,10): 239 | await app.invoke(GetMessagesViews( peer= (await app.resolve_peer(chnl)) , id=i.id , increment = True)) 240 | sleep(randint(2,8)) 241 | 242 | async def reAction(app): 243 | try: 244 | chnl=choice(Natural_Channels) 245 | li=(await app.get_chat(chnl)) 246 | reactions=[i.emoji for i in li.available_reactions.reactions ] 247 | print(reactions) 248 | async for i in app.get_chat_history(chnl,10): 249 | await app.invoke(GetMessagesViews( peer= (await app.resolve_peer(chnl)) , id=[i.id] , increment = True)) 250 | await app.send_reaction(chnl , i.id, choice(reactions)) 251 | sleep(randint(2,8)) 252 | except Exception as e: 253 | RJ.Log(int(1111),f'Natural Account reaction : {e}') 254 | 255 | async def Save(app): 256 | chnl=choice(Natural_Channels) 257 | async for i in app.get_chat_history(chnl,10): 258 | if not bool(randint(0,3)): 259 | try: 260 | await i.forward('me') 261 | sleep(randint(2,8)) 262 | except Exception as e: 263 | RJ.Log(int(1111),f'Natural Account Forward : {e}') 264 | 265 | async def Join(app): 266 | chnl=choice(Natural_Channels) 267 | await app.join_chat(chnl) 268 | 269 | async def Robot_Intract(app): 270 | try: 271 | await app.send_chat_action(f'@{BOT_USERNAME}', ChatAction.TYPING) 272 | sleep(0.5) 273 | mes=await app.send_message(f'@{BOT_USERNAME}','/start') 274 | sleep(0.7) 275 | await mes.click(0) 276 | except:await app.unblock_user(f'@{BOT_USERNAME}') 277 | 278 | async def Intract_With_Others(app,nums): # in khafange 279 | friend=choice(nums) 280 | try: 281 | friend_app=(await friend.Start()) 282 | main_id=(await app.get_me()) 283 | friend_details=await friend_app.get_me() 284 | try: 285 | await friend_app.import_contacts([InputPhoneContact(str(main_id.phone_number), f"{RJ.Random_Name} {randint(1,3)}")]) 286 | finally: 287 | await friend_app.stop() 288 | user=await app.import_contacts([InputPhoneContact(str(friend), f"{RJ.Random_Name} {randint(1,3)}")]) 289 | 290 | 291 | except Exception as e: 292 | RJ.Log(int(11111),f'Intract whith others {e}') 293 | friend=choice(nums) 294 | friend_app=(await friend.Start()) 295 | friend_details=await friend_app.get_me() 296 | main_id=await app.get_me() 297 | try: 298 | await friend_app.import_contacts([InputPhoneContact(str(main_id.phone_number), f"{RJ.Random_Name} {randint(1,3)}")]) 299 | finally: 300 | await friend_app.stop() 301 | user=await app.import_contacts([InputPhoneContact(str(friend), f"{RJ.Random_Name} {randint(1,3)}")]) 302 | try: 303 | await app.send_chat_action( int(friend_details.id) , ChatAction.TYPING) 304 | sleep(randint(5,25)) 305 | for b in range(randint(1,4)): 306 | await app.send_message(int(friend_details.id) , RJ.Message ) 307 | sleep(randint(5,25)) 308 | await app.send_message(int(friend_details.id),f'bYe I LOve daRk {RJ.Random_Bio}') 309 | except Exception as e: 310 | RJ.Log(int(11111),f'Intract whith others sending message {e}') 311 | 312 | async def Intract_Back(app): 313 | async for i in app.get_dialogs(): 314 | try: 315 | text = 'bYe I LOve daRk' 316 | message = i.top_message 317 | result = (message.text or message.caption) 318 | if text in result and not message.outgoing : 319 | try: 320 | if not bool(randint(0,1)): 321 | await app.read_chat_history(int(i.chat.id)) 322 | sleep(randint(1,10)) 323 | for b in range(randint(1,4)): 324 | await app.send_chat_action( int(i.chat.id) , ChatAction.TYPING) 325 | sleep(randint(10,30)) 326 | await app.send_message(int(i.chat.id) , RJ.Message ) 327 | sleep(randint(10,30)) 328 | await app.send_message(f'bYe I LOve daRk {RJ.Random_Bio}' , RJ.Message ) 329 | except Exception as e: 330 | RJ.Log(int(11111),f'Intract BACK Inner for {e}') 331 | except Exception as e: 332 | RJ.Log(int(11111),f'Intract BACK {e}') 333 | 334 | async def Natural_Activities(database): 335 | Nums=[NumberClass.Number(i[0],int(i[4])) for i in database.Natural_Accounts ] 336 | for i in Nums: 337 | if not bool(randint(0,3)):continue 338 | try: 339 | app= await i.Start() 340 | await app.send_chat_action('me', ChatAction.CANCEL) 341 | # هرچی گل مچاله تر رایحه بیشتر *-* 342 | work=choice([Seen,reAction,Save,Robot_Intract,Join]) 343 | await reAction(app) 344 | await work(app) 345 | RJ.Log(int(11111),f'has done : {work.__name__}') 346 | sleep(randint(30,60)) 347 | await Intract_With_Others(app,Nums) 348 | sleep(randint(30,60)) 349 | await Intract_Back(app) 350 | RJ.Log(int(11111),f'has doneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') 351 | except (errors.AuthKeyInvalid , errors.AuthKeyUnregistered , errors.SessionRevoked , errors.SessionExpired , errors.UserDeactivatedBan , errors.UserDeactivated ): 352 | i.Delete() 353 | #bot.send_message( i.Owner , TEXTS.Num_Natural_Deleted) 354 | except Exception as e: 355 | try:await app.stop() 356 | except:pass 357 | RJ.Log(int(11111),f'Natural Account : {e}') 358 | finally: 359 | try:await app.stop() 360 | except:pass 361 | 362 | sleep(randint(40000,130000)) 363 | await Natural_Activities(database) 364 | 365 | 366 | #---------------------------------------- 367 | async def Delete_Files(): 368 | dir=Config.Sessions 369 | for f in listdir(Config.Sessions): 370 | remove(path.join(dir, f)) 371 | await sleep(87000) 372 | await Delete_Files() 373 | #---------------------------------------- 374 | def StartNatural(Db): 375 | async def start(Database): 376 | await Natural_Activities(Database) 377 | asyncio.run(start(Db)) 378 | 379 | def StartDeleting(): 380 | async def start(): 381 | await Delete_Files() 382 | asyncio.run(start()) 383 | 384 | def StartProxy(): 385 | async def start(): 386 | await pr.proxy_getter() 387 | asyncio.run(start()) 388 | #---------------------------------------- 389 | 390 | #----------------------------------------------------------------------------------------------------------------| Inheriting from Client(pyrogram) 391 | class Advertising(Client): #-| 392 | def __init__(self): #-| 393 | #---------------------------------------------------| Threading Functions in SCADULE #-| 394 | Thread=threading.Thread(target=StartProxy) #-| #-| 395 | Thread.start() #-| #-| 396 | Thread=threading.Thread(target=StartDeleting) #-| #-| 397 | Thread.start() #-| #-| 398 | Thread=threading.Thread(target=StartNatural,args=[DataBase]) #-| #-| 399 | Thread.start() #-| #-| 400 | #---------------------------------------------------| #-| 401 | super().__init__( #-| 402 | ":memory:", #-| 403 | plugins=dict(root=r'plugins'), #-| 404 | api_id=API_ID, #-| 405 | api_hash=API_HASH, #-| 406 | bot_token=BOT_TOKEN, #-| 407 | sleep_threshold=60, #-| 408 | parse_mode=ParseMode.MARKDOWN, #-| 409 | workers=80, #-| 410 | in_memory=True) #-| 411 | #----------------------------------------------------------------------------------------------------------------| Add Cancel text recognize to ask(pyromood) Method 412 | async def Ask(self, chat_id, text, filters=None, timeout=None,Msg=None, *args, **kwargs): #-| 413 | x=await self.ask( chat_id, text, filters, timeout , *args, **kwargs) #-| 414 | if x.text==TEXTS.Cancel_btn: #-| 415 | await Msg.reply_text(TEXTS.Cancel,reply_markup=BUTTONS.Start) #-| 416 | raise ConnectionRefusedError #-| 417 | else : #-| 418 | return x #-| 419 | #----------------------------------------------------------------------------------------------------------------| Proxies from "api.proxyscrape.com" ➝ Proxy.py 420 | @property #-| 421 | def Get_Proxy(self): #-| 422 | return pr.get_proxy() #-| 423 | #----------------------------------------------------------------------------------------------------------------| -------------------------------------------------------------------------------- /plugins/Accounts.py: -------------------------------------------------------------------------------- 1 | from .BOT import TEXTS , BUTTONS , Config , Number , Advertising , RJ , User 2 | from .Api import step_one, step_two, step_three, step_four, helper_steps 3 | from pyrogram.raw.functions.messages import DeleteHistory 4 | from pyrogram.raw.functions.auth import ResetAuthorizations 5 | from pyrogram.handlers import MessageHandler 6 | from asyncio.exceptions import TimeoutError 7 | from pyrogram import Client , errors 8 | from random import choice , randint 9 | from pyrogram.enums import ChatType 10 | from asyncio import sleep 11 | import re 12 | #--------------------| 13 | Proxys={} #-| 14 | Api_Keys={} #-| 15 | Account_Details={} #-| 16 | app=None #-| 17 | #--------------------| 18 | 19 | #---------------------------------------------------------------------------------| FUNCTIONS |---------------------------------------------------------------------------------# 20 | #---------------------------------------------------------------------------------| FUNCTIONS |---------------------------------------------------------------------------------# 21 | #---------------------------------------------------------------------------------| FUNCTIONS |---------------------------------------------------------------------------------# 22 | 23 | async def Loggin(client,message): 24 | global Api_Keys , Proxys , Account_Details 25 | try: 26 | try: Code = (re.search('\d{5}',str(message.text)).group(0)) 27 | except: Code = False 28 | USR=await client.get_me() 29 | Num=(USR).phone_number 30 | Num = Number(str(Num),Account_Details[int(Num)]['id']) 31 | Loggined_User=User(Account_Details[int(Num)]['id']) 32 | if not Code : 33 | Done=False 34 | Proxy = Proxys[int(Num)] 35 | provided_code = helper_steps.extract_code_imn_ges(message) 36 | status_r, cookie_v = step_two.login_step_get_stel_cookie( 37 | str(Num), 38 | Api_Keys[int(Num)]['phone_hash'], 39 | provided_code, 40 | Proxy) 41 | if status_r: 42 | status_t, response_dv = step_three.scarp_tg_existing_app(cookie_v,Proxy) 43 | name = f'DARK {randint(1,8500)}' 44 | if not status_t: 45 | await sleep(5) 46 | step_four.create_new_tg_app( 47 | cookie_v, 48 | response_dv.get("tg_app_hash"), 49 | name, 50 | name, 51 | name, 52 | name, 53 | Proxy=Proxy 54 | ) 55 | await sleep(5) 56 | status_t, response_dv = step_three.scarp_tg_existing_app(cookie_v,Proxy) 57 | if status_t: 58 | Api_Id = response_dv["App Configuration"]["app_id"] 59 | Api_Hash = response_dv["App Configuration"]["api_hash"] 60 | helper_steps.Write(f'{Api_Hash}:{Api_Id}') 61 | Done=True 62 | Api_Keys[int(Num)]={'hash':Api_Hash , 'id':Api_Id } 63 | D_D=RJ.Get_Device_Detais 64 | Main_Acc=Client(f'{str(Num)}',Api_Id,Api_Hash,phone_number=str(Num),workdir=Config.Sessions)#,device_model=D_D[0],system_version=D_D[1],app_version=D_D[2],lang_code='en') 65 | await Main_Acc.connect() 66 | Account_Details[int(Num)]['phone_hash']=(await Main_Acc.send_code(str(Num))).phone_code_hash 67 | Account_Details[int(Num)]['Client']=Main_Acc 68 | if not Done: 69 | await RJ.Auto_Detail_Setter( client, Loggined_User) 70 | # try:await client.join_chat(Config.Dark_Channel) 71 | # except:pass 72 | Session_String=(await client.export_session_string()) 73 | Num.Add_Number(Api_Keys[int(Num)]['id'],Api_Keys[int(Num)]['hash'],Session_String) 74 | Loggined_User.Add_Coin(Config.Adding_Account) 75 | await app.send_message(Account_Details[int(Num)]['id'], TEXTS.Runned_WO_API( str(Num) , USR.first_name , USR.id),reply_markup=BUTTONS.Accounts) 76 | Account_Details.pop(int(Num)) 77 | Api_Keys.pop(int(Num)) 78 | await client.stop(False) 79 | try:await client.disconnect() 80 | except:pass 81 | else : 82 | Main_Acc=Account_Details[int(Num)]['Client'] 83 | try: 84 | USR=await Main_Acc.sign_in(str(Num),Account_Details[int(Num)]['phone_hash'],Code) 85 | except: 86 | USR=await Main_Acc.check_password(str(Account_Details[int(Num)]['pass'])) 87 | try: 88 | await Main_Acc.send_message(f'@{Config.BOT_USERNAME}','/start') 89 | except errors.YouBlockedUser :pass 90 | try: 91 | await RJ.Auto_Detail_Setter( Main_Acc, Loggined_User) 92 | # try:await Main_Acc.join_chat(Config.Dark_Channel) 93 | # except:pass 94 | Session_String=str(await Main_Acc.export_session_string()) 95 | Num.Add_Number(Api_Keys[int(Num)]['id'],Api_Keys[int(Num)]['hash'],Session_String) 96 | Loggined_User.Add_Coin(Config.Adding_Account) 97 | await app.send_message(Account_Details[int(Num)]['id'],TEXTS.Runned_W_API( str(Num) , Api_Keys[int(Num)]['hash'] , Api_Keys[int(Num)]['id'] , USR.first_name , USR.id ),reply_markup=BUTTONS.Accounts) 98 | Account_Details.pop(int(Num)) 99 | Api_Keys.pop(int(Num)) 100 | try:await client.log_out() 101 | except: 102 | try:await client.disconnect() 103 | except:pass 104 | except Exception as e : 105 | RJ.Log(int(Account_Details[int(Num)]['id']),f'Second Loggin : {e}') 106 | await RJ.Auto_Detail_Setter( client, Loggined_User) 107 | # try:await client.join_chat(Config.Dark_Channel) 108 | # except:pass 109 | Session_String=(await client.export_session_string()) 110 | Num.Add_Number(Api_Keys[int(Num)]['id'],Api_Keys[int(Num)]['hash'],Session_String) 111 | Loggined_User.Add_Coin(Config.Adding_Account) 112 | await app.send_message(Account_Details[int(Num)]['id'], TEXTS.Runned_WO_API( str(Num) , USR.first_name , USR.id),reply_markup=BUTTONS.Accounts) 113 | Account_Details.pop(int(Num)) 114 | Api_Keys.pop(int(Num)) 115 | await client.stop(False) 116 | await Main_Acc.disconnect() 117 | 118 | except Exception as e : 119 | RJ.Log(1111,f'main Loggin : {e}') 120 | 121 | async def SpamBot(app,user): 122 | try: 123 | await app.send_message("@SpamBot", "/start") 124 | await sleep(3) 125 | async for message in app.get_chat_history("SpamBot"): 126 | text=message.text 127 | if re.search(r"^Good news", text) or re.search(r"^مژده", text): 128 | report=['Free' , None ] 129 | elif re.search(r"Unfortunately", text): 130 | report=['ForEver' , None ] 131 | elif re.search(r"until(.*)\.", text): 132 | reep=re.findall(r"limited until(.*)\.", text) 133 | report= ['temporary' , reep[0]] 134 | elif re.search(r"محدودیت دفعه بعد طولانی‌تر", text): 135 | reep=text.split('محدودیت حساب کاربری شما به صورت اتوماتیک در')[-1].split('برداشته خواهد شد')[0] 136 | report= ['temporary' , reep[0]] 137 | elif 'until' in str(text): 138 | report=str(text).split('until')[1].split('.')[0] 139 | else: 140 | RJ.Log(int(user),f'SPAM 404 : {text}') 141 | report=['NotFound' , None ] 142 | break 143 | return report 144 | except errors.YouBlockedUser: 145 | await app.unblock_user("@SpamBot") 146 | await SpamBot(app,user) 147 | except Exception as e: 148 | RJ.Log(int(user),f'SPAM : {e}') 149 | return ['Error' , None ] 150 | 151 | 152 | #---------------------------------------------------------------------------------| LOGGIN |---------------------------------------------------------------------------------# 153 | #---------------------------------------------------------------------------------| LOGGIN |---------------------------------------------------------------------------------# 154 | 155 | 156 | @Advertising.on_message(RJ.prv & RJ.regex('^ثبت اکانت 📥') , group=0) 157 | @RJ.User_Details 158 | @RJ.Coin_Limit 159 | async def Add_Account(bot,message,user): 160 | global Proxys , Api_Keys , Account_Details , app 161 | app=bot 162 | try: 163 | Proxy=bot.Get_Proxy 164 | except:Proxy=None 165 | try: 166 | Num=str((await bot.Ask(int(user),TEXTS.Add_Account,Msg=message,reply_markup=BUTTONS.Cancel,timeout=60)).text) 167 | try: 168 | Num=Number(Num,int(user)) 169 | except : 170 | await message.reply_text(TEXTS.Number_Is_Regestered,reply_markup=BUTTONS.Accounts) 171 | return 172 | if Num.Is_Regestered: 173 | await message.reply_text(TEXTS.Number_Is_Regestered,reply_markup=BUTTONS.Accounts) 174 | return 175 | Random_Api=RJ.Random_API 176 | D_D=RJ.Get_Device_Detais 177 | print(D_D) 178 | Acc=Client(f'{str(Num)}-first',api_id=Random_Api[1],api_hash=Random_Api[0],phone_number=str(Num),workdir=Config.Sessions)#,device_model=D_D[0],system_version=D_D[1],app_version=D_D[2],lang_code='en') 179 | await Acc.connect() 180 | Hash=(await Acc.send_code(str(Num))).phone_code_hash 181 | Login_Details=(((await bot.Ask(int(user),TEXTS.Send_Code,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 182 | Login_Details=Login_Details.strip().split(' ') 183 | if not Login_Details[0].isdigit(): 184 | await message.reply_text(TEXTS.Send_Code_Error(Login_Details[0]),reply_markup=BUTTONS.Cancel) 185 | Login_Details=((await bot.Ask(int(user),TEXTS.Send_Code_Again,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Force,timeout=100)).text).strip().split(' ') 186 | if len(Login_Details)==1:PassWord=False 187 | else:PassWord=str(Login_Details[1]) 188 | try: 189 | try: 190 | USR=await Acc.sign_in(str(Num),Hash,str(Login_Details[0]).replace('-','')) 191 | except errors.PhoneCodeInvalid : 192 | Code=int((await bot.Ask(int(user),TEXTS.Send_Code_Again,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)).text) 193 | USR=await Acc.sign_in(str(Num),Hash,str(Code).replace('-','')) 194 | except errors.unauthorized_401.SessionPasswordNeeded: 195 | try: 196 | USR=await Acc.check_password(str(PassWord)) 197 | except errors.PasswordHashInvalid: 198 | PassWord=(await bot.Ask(int(user),TEXTS.Password_Incorect(str(await Acc.get_password_hint())),Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Force,timeout=120)).text 199 | USR=await Acc.check_password(str(PassWord)) 200 | try:await Acc.accept_terms_of_service(USR.id) 201 | except:pass 202 | await message.reply_text(TEXTS.succesfully_loggin,reply_markup=BUTTONS.Accounts) 203 | Proxys[int(Num)]=Proxy 204 | Acc.add_handler(MessageHandler(callback=Loggin,filters=RJ.regex('give'))) 205 | await Acc.disconnect() 206 | await Acc.start() 207 | try: 208 | New_Hash= step_one.request_tg_code_get_random_hash(str(Num),Proxy) 209 | except: 210 | Proxy=None 211 | Proxys[int(Num)]=Proxy 212 | New_Hash= step_one.request_tg_code_get_random_hash(str(Num),Proxy) 213 | Account_Details[int(Num)]={'pass':PassWord,'id':int(user)} 214 | Api_Keys[int(Num)]={'hash':Random_Api[0],'id':Random_Api[1],'phone_hash':New_Hash} 215 | except TimeoutError : 216 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 217 | return 218 | except errors.flood_420.FloodWait as e : 219 | await message.reply_text(TEXTS.Flood_Wait_Loggin(e.value),reply_markup=BUTTONS.Accounts) 220 | return 221 | except errors.PhoneNumberInvalid: 222 | await message.reply_text(TEXTS.Number_Incorrect,reply_markup=BUTTONS.Accounts) 223 | return 224 | except errors.PasswordRequired: 225 | await message.reply_text(TEXTS.Password_requerd,reply_markup=BUTTONS.Accounts) 226 | return 227 | except errors.PasswordHashInvalid: 228 | await message.reply_text(TEXTS.Password_Is_Incorect,reply_markup=BUTTONS.Accounts) 229 | return 230 | except Exception as e: 231 | print(e) 232 | RJ.Log(int(user),f'FIRST LOGGIN : {e}') 233 | await message.reply_text(TEXTS.Problem_Occured,reply_markup=BUTTONS.Accounts) 234 | return 235 | 236 | #---------------------------------------------------------------------------------| ALL ACCOUNT DETAILS |---------------------------------------------------------------------------------# 237 | @Advertising.on_message(RJ.prv & RJ.regex('^وضعیت اکانت ها 🗂️') , group=0) 238 | @RJ.User_Details 239 | @RJ.Coin_Limit 240 | async def Account_Status(bot,message,user:User): 241 | try: 242 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 243 | AI_Activity=str(((await bot.Ask(int(user),TEXTS.Activity_Report_Change,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 244 | if AI_Activity == TEXTS.yes :AI=True 245 | else:AI=False 246 | except TimeoutError : 247 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 248 | return 249 | except:return 250 | Numbers=RJ.Account(Nums,user,True) 251 | TXT=TEXTS.Accounts_Status 252 | x=1 253 | for i in Numbers: 254 | try: 255 | app = await i.Start() 256 | limit=await SpamBot(app,(user)) 257 | if limit[0]=='temporary': 258 | Emoji=f'🟨{limit[1].strip()}' 259 | i.Change_Activity(False) 260 | elif limit[0]=='ForEver': 261 | Emoji='🟥' 262 | elif limit[0]=='NotFound': 263 | Emoji='404' 264 | elif limit[0]=='Free': 265 | Emoji='🟩' 266 | i.Change_Activity(True) 267 | else:Emoji=limit[0] 268 | except (errors.UserDeactivatedBan , errors.UserDeactivated): 269 | Emoji='❌' 270 | i.Delete() 271 | except (errors.AuthKeyInvalid , errors.AuthKeyUnregistered , errors.SessionRevoked , errors.SessionExpired ): 272 | Emoji='🚫' 273 | i.Delete() 274 | except Exception as e: 275 | RJ.Log(int(user),f'Account Status: {e}') 276 | Emoji='404' 277 | finally: 278 | try:await app.stop(False) 279 | except:pass 280 | TXT+=f'{helper_steps.Font(x)}→{Emoji}→+{i.Number}\n' 281 | user.Add_Coin(Config.Status) 282 | x+=1 283 | if len(TXT.split('\n')) > 50: 284 | await message.reply_text(TXT) 285 | TXT='' 286 | if len(TXT.split('\n')) > 1 : 287 | await message.reply_text(TXT,reply_markup=BUTTONS.Accounts) 288 | 289 | @Advertising.on_message(RJ.prv & RJ.regex('^لیست اکانت ها 📜') , group=0) 290 | @RJ.User_Details 291 | @RJ.Coin_Limit 292 | async def Accounts_Lists(bot,message,user): 293 | Numbers=user.All_numbers 294 | TXT=TEXTS.Accounts_list 295 | x=1 296 | for i in Numbers: 297 | TXT+=f'{helper_steps.Font(x)}→{Number(i["num"],int(user)).Activity_Emoji}→`+{i["num"]}`\n' 298 | x+=1 299 | if len(TXT.split('\n')) > 50: 300 | await message.reply_text(TXT) 301 | TXT='' 302 | if len(TXT.split('\n')) > 1 : 303 | await message.reply_text(TXT,reply_markup=BUTTONS.Accounts) 304 | 305 | @Advertising.on_message(RJ.prv & RJ.regex('^تغییر فعالیت 🔆') , group=0) 306 | @RJ.User_Details 307 | async def Change_Activities(bot:Advertising,message,user:User): 308 | Nums=[Number(i['num'],int(user)) for i in user.All_numbers ] 309 | await message.reply_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Activity(Nums)) 310 | 311 | @Advertising.on_message(RJ.prv & RJ.regex('^تغییر طبیعت 🧪') , group=0) 312 | @RJ.User_Details 313 | async def Change_Naturality(bot:Advertising,message,user:User): 314 | Nums=[Number(i['num'],int(user)) for i in user.All_numbers ] 315 | await message.reply_text(TEXTS.Natural_Acc) 316 | await message.reply_text(TEXTS.Change_Activity,reply_markup=BUTTONS.Natural(Nums)) 317 | 318 | @Advertising.on_message(RJ.prv & RJ.regex('^جستوجو 🔍') , group=0) 319 | @RJ.User_Details 320 | @RJ.Coin_Limit 321 | async def Search_Accounts(bot:Advertising,message,user:User): 322 | try: 323 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 324 | except TimeoutError : 325 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 326 | return 327 | Numbers=RJ.Account(Nums,user,True) 328 | if len(Numbers)>10: 329 | await message.reply_text(TEXTS.Only_Limited_Numbers,reply_markup=BUTTONS.Accounts) 330 | return 331 | for i in Numbers: 332 | try: 333 | app = await i.Start() 334 | me_LOL=await app.get_me() 335 | await message.reply_text(TEXTS.Find_Nums(f'+{int(i)}' , me_LOL.first_name , me_LOL.username , me_LOL.id ),reply_markup=BUTTONS.Accounts) 336 | except (errors.UserDeactivatedBan , errors.UserDeactivated): 337 | i.Delete() 338 | await message.reply_text(TEXTS.Number_Is_Deleted(f'+{int(i)}')) 339 | except (errors.AuthKeyInvalid , errors.AuthKeyUnregistered , errors.SessionRevoked , errors.SessionExpired ): 340 | i.Delete() 341 | await message.reply_text(TEXTS.Number_Is_Terminated(f'+{int(i)}')) 342 | except Exception as e: 343 | RJ.Log(int(user),f'Find Number : {e}') 344 | finally: 345 | try:await app.stop(False) 346 | except:pass 347 | await sleep(1) 348 | 349 | await message.reply_text(TEXTS.Procces_Compeleted_WO_NO,reply_markup=BUTTONS.Accounts) 350 | 351 | 352 | 353 | #---------------------------------------------------------------------------------| DELETE ACCOUNT |---------------------------------------------------------------------------------# 354 | @Advertising.on_message(RJ.prv & RJ.regex('^حذف همه اکانت ها 🗑') , group=0) 355 | @RJ.User_Details 356 | @RJ.Coin_Limit 357 | async def Delete_All_Account(bot,message,user:User): 358 | for i in user.All_numbers: 359 | try: 360 | Num=Number(i['num'],int(user)) 361 | app = await Num.Start() 362 | await app.log_out() 363 | except Exception as e :RJ.Log(int(user),f'Delete All : {e}') 364 | user.Add_Coin(Config.Delete_Account) 365 | user.Delete() 366 | await message.reply_text(TEXTS.All_Deleted,reply_markup=BUTTONS.Accounts) 367 | 368 | 369 | @Advertising.on_message(RJ.prv & RJ.regex('^حذف چند اکانت ❌') , group=0) 370 | @RJ.User_Details 371 | @RJ.Coin_Limit 372 | async def Delete_Accounts(bot,message,user:User): 373 | try:Numbers=str(((await bot.Ask(int(user),TEXTS.Account_Deleting,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 374 | except TimeoutError : 375 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 376 | return 377 | except:return 378 | for i in Numbers.split('\n'): 379 | Num=Number(i,int(user)) 380 | if not Num.is_Owner: 381 | await message.reply_text(TEXTS.Not_Owner,reply_markup=BUTTONS.Accounts) 382 | return 383 | try: 384 | app = await Num.Start() 385 | await app.log_out() 386 | except Exception as e :RJ.Log(int(user),f'Delete Some : {e}') 387 | Num.Delete() 388 | user.Add_Coin(Config.Delete_Account) 389 | await message.reply_text(TEXTS.Selected_Numbers_Deleted,reply_markup=BUTTONS.Accounts) 390 | 391 | 392 | @Advertising.on_message(RJ.prv & RJ.regex('^حذف ریپورت شده ها 🔇') , group=0) 393 | @RJ.User_Details 394 | @RJ.Coin_Limit 395 | async def Delete_Limited_Accounts(bot,message,user:User): 396 | for i in user.All_numbers: 397 | try: 398 | Num=Number(i['num'],int(user)) 399 | app = await Num.Start() 400 | Limit=await SpamBot(app,user) 401 | if Limit[0]=='ForEver' or Limit[0]=='temporary': 402 | try: 403 | app = await Num.Start(i) 404 | await app.log_out() 405 | except:pass 406 | Num.Delete() 407 | user.Add_Coin(Config.Delete_Account) 408 | except Exception as e :RJ.Log(int(user),f'Delete Reported : {e}') 409 | await message.reply_text(TEXTS.Limited_Numbers_Deleted,reply_markup=BUTTONS.Accounts) 410 | 411 | #---------------------------------------------------------------------------------| START BOTS |---------------------------------------------------------------------------------# 412 | @Advertising.on_message(RJ.prv & RJ.regex('^🤖 استارت ربات') , group=0) 413 | @RJ.User_Details 414 | @RJ.Coin_Limit 415 | async def Start_Robots(bot,message,user:User): 416 | try: 417 | Robot=str(((await bot.Ask(int(user),TEXTS.StartBot_User,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 418 | id=str(((await bot.Ask(int(user),TEXTS.Refferal,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 419 | Times=str(((await bot.Ask(int(user),TEXTS.StartBot_Times,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=30))).text) 420 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 421 | except TimeoutError : 422 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 423 | return 424 | except:return 425 | if id.lower()=='none':Refferal='' 426 | else:Refferal=id.split('=')[-1] 427 | 428 | 429 | if int(Times) <= 0:return 430 | else:Times=int(Times) 431 | x=0 432 | Nums=RJ.Account(Nums,user) 433 | for Num in Nums: 434 | try: 435 | app = await Num.Start() 436 | await app.send_message(Robot,f'/start {Refferal}') 437 | x+=1 438 | if x >= Times: 439 | break 440 | except Exception as e:RJ.Log(int(user),f'FIRST LOGGIN : {e}') 441 | finally: 442 | try:await app.stop(False) 443 | except:pass 444 | await message.reply_text(TEXTS.StartBot_Completed(Times),reply_markup=BUTTONS.Accounts) 445 | 446 | #---------------------------------------------------------------------------------| LEAVE & JOIN |---------------------------------------------------------------------------------# 447 | @Advertising.on_message(RJ.prv & RJ.regex('^leave 🚨') , group=0) 448 | @RJ.User_Details 449 | @RJ.Coin_Limit 450 | async def Leave(bot:Advertising,message,user:User): 451 | failed=0 452 | comp=0 453 | try: 454 | Chat=str(((await bot.Ask(int(user),TEXTS.Leave_Chat_Ask,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 455 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 456 | except TimeoutError : 457 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 458 | return 459 | except:return 460 | if Chat.isdigit():Chat=int(Chat) 461 | elif not '/joinchat/' in Chat and not '+' in Chat :Chat=f'@{Chat.split("/")[-1]}' 462 | Nums=RJ.Account(Nums,user) 463 | for Num in Nums: 464 | try: 465 | app = await Num.Start() 466 | if 't.me' in Chat: 467 | CHT=(await app.get_chat(Chat)) 468 | await CHT.leave() 469 | else: 470 | await app.leave_chat(Chat,True) 471 | comp+=1 472 | user.Add_Coin(Config.J_L) 473 | except:failed+=1 474 | finally: 475 | try:await app.stop(False) 476 | except:pass 477 | await message.reply_text(TEXTS.Leave(comp,failed)) 478 | 479 | 480 | @Advertising.on_message(RJ.prv & RJ.regex('^join 🚨') , group=0) 481 | @RJ.User_Details 482 | @RJ.Coin_Limit 483 | async def Join(bot:Advertising,message,user:User): 484 | failed=0 485 | comp=0 486 | try: 487 | Chat=str(((await bot.Ask(int(user),TEXTS.JoinChat_Ask,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text).replace('https://','') 488 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 489 | except TimeoutError : 490 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 491 | return 492 | except:return 493 | if Chat.isdigit():Chat=int(Chat) 494 | elif not '/joinchat/' in Chat and not '+' in Chat :Chat=f'@{Chat.split("/")[-1]}' 495 | Nums=RJ.Account(Nums,user) 496 | for Num in Nums: 497 | try: 498 | app = await Num.Start() 499 | try: 500 | await app.join_chat(Chat) 501 | except errors.UserAlreadyParticipant : pass 502 | await sleep(user.R_Speed) 503 | comp+=1 504 | user.Add_Coin(Config.J_L) 505 | except Exception as e: 506 | RJ.Log(int(user),f'Join : {e}') 507 | failed+=1 508 | finally: 509 | try:await app.stop(False) 510 | except:pass 511 | await message.reply_text(TEXTS.Join(comp,failed),reply_markup=BUTTONS.Accounts) 512 | 513 | #---------------------------------------------------------------------------------| CODE RECIVER & ACC CLEARING |---------------------------------------------------------------------------------# 514 | @Advertising.on_message(RJ.prv & RJ.regex('^گرفتن کد 🗳') , group=0) 515 | @RJ.User_Details 516 | @RJ.Coin_Limit 517 | async def Code(bot:Advertising,message,user:User): 518 | try: 519 | Num=str(((await bot.Ask(int(user),TEXTS.Number_Ask,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 520 | except TimeoutError : 521 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 522 | return 523 | except:return 524 | Num=Number(Num,int(user)) 525 | if not Num.is_Owner: 526 | await message.reply_text(TEXTS.Not_Owner,reply_markup=BUTTONS.Accounts) 527 | return 528 | try : 529 | Codes='' 530 | app = await Num.Start() 531 | async for i in app.get_chat_history(777000,limit=4): 532 | try: 533 | Codes += str((re.search("\d{5}",str(i.text)).group(0))) 534 | Codes+='\n' 535 | except:pass 536 | await message.reply_text(TEXTS.Recived_Code(Codes),reply_markup=BUTTONS.Accounts) 537 | except:await message.reply_text(TEXTS.Problem_Occured,reply_markup=BUTTONS.Accounts) 538 | 539 | @Advertising.on_message(RJ.prv & RJ.regex('^پاکسازی ♻️') , group=0) 540 | @RJ.User_Details 541 | @RJ.Coin_Limit 542 | async def Clearing(bot:Advertising,message,user:User): 543 | try: 544 | Nums=str(((await bot.Ask(int(user),TEXTS.Clearing,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 545 | Kind=str(((await bot.Ask(int(user),TEXTS.Clearing_Kind,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 546 | Should_Block=str(((await bot.Ask(int(user),TEXTS.AskBlocks,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=60))).text) 547 | if TEXTS.yes in Should_Block :Should_Block=True 548 | else:Should_Block=False 549 | except TimeoutError : 550 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Accounts) 551 | return 552 | except:return 553 | Nums=RJ.Account(Nums,user) 554 | if TEXTS.PV_KIND in Kind:Pv=True 555 | else:Pv=False 556 | if TEXTS.CHNL_KIND in Kind:Channel=True 557 | else:Channel=False 558 | if TEXTS.GROUP_KIND in Kind:Group=True 559 | else:Group=False 560 | if TEXTS.BOT_KIND in Kind:Bot=True 561 | else:Bot=False 562 | if Pv==False and Channel==False and Group==False and Bot==False : 563 | await message.reply_text(TEXTS.Wrong,reply_markup=BUTTONS.Accounts) 564 | return 565 | await message.reply_text(TEXTS.Clearing_Details(Pv,Channel,Group,Bot),reply_markup=BUTTONS.Accounts) 566 | X=1 567 | for i in Nums: 568 | try: 569 | app = await i.Start() 570 | app_id=int((await app.get_me()).id) 571 | async for dialog in app.get_dialogs(): 572 | type=dialog.chat.type 573 | if dialog.is_pinned : continue 574 | if (type==ChatType.SUPERGROUP or type == ChatType.GROUP) and Group==True: 575 | try: 576 | await dialog.chat.leave() 577 | user.Add_Coin(Config.Clean) 578 | X+=1 579 | except Exception as e :RJ.Log(int(user),f'Clearing Part GROUP : {e}') 580 | if type==ChatType.PRIVATE and Pv==True: 581 | try: 582 | if int(dialog.chat.id) == app_id : continue 583 | Pear= await app.resolve_peer(dialog.chat.id) 584 | await app.invoke(DeleteHistory(peer=Pear,revoke=True,max_id=0)) 585 | user.Add_Coin(Config.Clean) 586 | X+=1 587 | except Exception as e :RJ.Log(int(user),f'Clearing Part PV : {e}') 588 | if type==ChatType.CHANNEL and Channel==True: 589 | try: 590 | #----------------------------------------------------------------| 591 | try: #-| 592 | if str(dialog.chat.username)==Config.Dark_Channel:continue #-| 593 | except:pass #-| 594 | #----------------------------------------------------------------| 595 | await dialog.chat.leave() 596 | user.Add_Coin(Config.Clean) 597 | X+=1 598 | except Exception as e :RJ.Log(int(user),f'Clearing Part CHANNEL : {e}') 599 | if type==ChatType.BOT and Bot==True: 600 | try: 601 | if Should_Block: 602 | try :await app.block_user(dialog.chat.username) 603 | except (errors.flood_420.FloodWait , errors.flood_420.Flood ) as e : 604 | await sleep(e.value) 605 | try :await app.block_user(dialog.chat.username) 606 | except:pass 607 | except Exception as e :RJ.Log(int(user),f'Clearing Part Block BOT : {e}') 608 | Pear= await app.resolve_peer(dialog.chat.username ) 609 | await app.invoke(DeleteHistory(peer=Pear,max_id=0)) 610 | user.Add_Coin(Config.Clean) 611 | X+=1 612 | except Exception as e :RJ.Log(int(user),f'Clearing Part BOT : {e}') 613 | except Exception as e :RJ.Log(int(user),f'Clearing : {e}') 614 | finally: 615 | try:await app.stop(False) 616 | except:pass 617 | await message.reply_text(TEXTS.Clearing_Finished(X),reply_markup=BUTTONS.Accounts) 618 | 619 | #--------------------------------------------------------------------------------| SET PROFILE DETAILS |-------------------------------------------------------------------------------# 620 | @Advertising.on_message(RJ.prv & RJ.regex('^🔱 هویت سازی 🔱') , group=0) 621 | @RJ.User_Details 622 | @RJ.Coin_Limit 623 | async def Fake_Personality(bot:Advertising,message,user:User): 624 | try: 625 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 626 | except TimeoutError : 627 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 628 | return 629 | except:return 630 | Nums=RJ.Account(Nums,user) 631 | X=0 632 | Y=0 633 | Z=0 634 | Accs=0 635 | for i in Nums: 636 | try: 637 | app = await i.Start() 638 | Accs+=1 639 | try: 640 | await app.set_profile_photo(photo=RJ.Random_Photo) 641 | user.Add_Coin(Config.Photo) 642 | X+=1 643 | except Exception as e :RJ.Log(int(user),f'Fake Photo : {e}') 644 | try: 645 | await app.update_profile(first_name=RJ.Random_Name , bio=RJ.Random_Bio) 646 | user.Add_Coin(Config.Bio_Name) 647 | Y+=1 648 | except:pass 649 | try: 650 | try: 651 | if await app.set_username(RJ.Random_Username) : 652 | Z+=1 653 | except: 654 | if await app.set_username(RJ.Random_Username) : 655 | Z+=1 656 | except Exception as e :RJ.Log(int(user),f'Fake Username : {e}') 657 | except Exception as e :RJ.Log(int(user),f'Fake : {e}') 658 | finally: 659 | try:await app.stop(False) 660 | except:pass 661 | 662 | await message.reply_text(TEXTS.Fake_Detailes_Setted(Accs,X,Y,Z),reply_markup=BUTTONS.Account_Setting) 663 | 664 | @Advertising.on_message(RJ.prv & RJ.regex('^♻️ تنظیم خودکار مشخصات ♻️') , group=0) 665 | @RJ.User_Details 666 | async def Auto_Details(bot:Advertising,message,user:User): 667 | await message.reply_text(TEXTS.Auto_Acc_Details,reply_markup=BUTTONS.Choosing_Auto_Details) 668 | 669 | @Advertising.on_message(RJ.prv & RJ.regex('^🧱 تنظیم رمز ابری 🧱') , group=0) 670 | @RJ.User_Details 671 | @RJ.Coin_Limit 672 | async def Set_Password(bot:Advertising,message,user:User): 673 | try: 674 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 675 | Npassword =str(((await bot.Ask(int(user),TEXTS.Ask_NewPass,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 676 | Opassword =str(((await bot.Ask(int(user),TEXTS.Ask_Common_Pass,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 677 | except TimeoutError : 678 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 679 | return 680 | except:return 681 | Nums=RJ.Account(Nums,user) 682 | X=0 683 | for i in Nums: 684 | try: 685 | app = await i.Start() 686 | try: 687 | await app.enable_cloud_password(Npassword , f'@{Config.Dark_Channel}') 688 | X+=1 689 | except ValueError : 690 | try: 691 | await app.change_cloud_password(Opassword, Npassword , f'@{Config.Dark_Channel}') 692 | X+=1 693 | except errors.PasswordHashInvalid: 694 | Temppassword =str(((await bot.Ask(int(user),TEXTS.AskPass_Invalied(i),Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 695 | if Temppassword.strip() == TEXTS.Cancel_Proccess : break 696 | try: 697 | await app.change_cloud_password(Temppassword, Npassword , f'@{Config.Dark_Channel}') 698 | X+=1 699 | except errors.PasswordHashInvalid:await message.reply_text(TEXTS.PassWord_Invalied_Skiped) 700 | except Exception as e :RJ.Log(int(user),f'Set_Password : {e}') 701 | finally: 702 | try:await app.stop(False) 703 | except:pass 704 | 705 | await message.reply_text(TEXTS.Password_Adding_Finished(X,Npassword),reply_markup=BUTTONS.Account_Setting) 706 | 707 | @Advertising.on_message(RJ.prv & RJ.regex('^🛑 پاک کردن پروفایل 🛑') , group=0) 708 | @RJ.User_Details 709 | @RJ.Coin_Limit 710 | async def Delete_Profile(bot:Advertising,message,user:User): 711 | try: 712 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 713 | except TimeoutError : 714 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 715 | return 716 | except:return 717 | Nums=RJ.Account(Nums,user) 718 | X=0 719 | for i in Nums: 720 | try: 721 | app = await i.Start() 722 | photos=[i async for i in app.get_chat_photos('me')] 723 | await app.delete_profile_photos([p.file_id for p in photos]) 724 | X+=1 725 | except Exception as e:RJ.Log(int(user),f'Delete Profile : {e}') 726 | finally: 727 | try:await app.stop(False) 728 | except:pass 729 | 730 | user.Add_Coin(Config.update_profile * X) 731 | await message.reply_text(TEXTS.Procces_Compeleted(X),reply_markup=BUTTONS.Account_Setting) 732 | 733 | 734 | @Advertising.on_message(RJ.prv & RJ.regex('^📝 تنظیم مشخصات 📝') , group=0) 735 | @RJ.User_Details 736 | @RJ.Coin_Limit 737 | async def Set_Details(bot:Advertising,message,user:User): 738 | try: 739 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 740 | Kind=str(((await bot.Ask(int(user),TEXTS.Ask_Details_kind,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 741 | Detail=(((await bot.Ask(int(user),TEXTS.Get_Details(Kind),Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120)))) 742 | except TimeoutError : 743 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 744 | return 745 | except:return 746 | Nums=RJ.Account(Nums,user) 747 | Name,Bio,Pro=[False,False,False] 748 | if Kind==TEXTS.Pro_Text: 749 | Pro=True 750 | elif Kind==TEXTS.Name_Text: 751 | Name=True 752 | elif Kind==TEXTS.Bio_Text: 753 | Bio=True 754 | else: 755 | await message.reply_text(TEXTS.Wrong,reply_markup=BUTTONS.Account_Setting) 756 | return 757 | x=0 758 | f=0 759 | for i in Nums: 760 | try: 761 | app = await i.Start() 762 | if Bio: 763 | Text=str(Detail.text) 764 | await app.update_profile(bio=Text) 765 | elif Pro: 766 | Photo=str(await Detail.download(f'{randint(1,10**10)}.jpg')) 767 | await app.set_profile_photo(photo=Photo) 768 | elif Name: 769 | Text=str(Detail.text) 770 | if '{n}' in Text: 771 | Text=Text.replace('{n}',helper_steps.Font(str([int(t['num']) for t in user.All_Active_Numbers].index(int(i))))) 772 | await app.update_profile(first_name=Text) 773 | x+=1 774 | user.Add_Coin(Config.update_profile) 775 | except Exception as e: 776 | RJ.Log(int(user),f'ُSet Details : {e}') 777 | f+=1 778 | finally: 779 | try:await app.stop(False) 780 | except:pass 781 | await message.reply_text(TEXTS.Detailes_Finished(x,f),reply_markup=BUTTONS.Account_Setting) 782 | 783 | @Advertising.on_message(RJ.prv & RJ.regex('^🚷 پاکسازی نشست ها 🚷') , group=0) 784 | @RJ.User_Details 785 | @RJ.Coin_Limit 786 | async def Reset_Sessions(bot:Advertising,message,user:User): 787 | try: 788 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 789 | except TimeoutError : 790 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 791 | return 792 | except:return 793 | Nums=RJ.Account(Nums,user) 794 | sccss='' 795 | for i in Nums: 796 | try: 797 | app = await i.Start() 798 | x=await app.invoke(ResetAuthorizations()) 799 | if x:sccss+=f'` +{int(i)} ` \n ' 800 | except Exception as e:RJ.Log(int(user),f'Terminate : {e}') 801 | finally: 802 | try:await app.stop(False) 803 | except:pass 804 | 805 | await message.reply_text(TEXTS.Terminated(sccss, len(sccss.split('\n'))) ,reply_markup=BUTTONS.Account_Setting) 806 | 807 | 808 | 809 | @Advertising.on_message(RJ.prv & RJ.regex('^📨 انتقال اکانت 📨') , group=0) 810 | @RJ.User_Details 811 | async def Transfer(bot:Advertising,message,user:User): 812 | try: 813 | Reciver=str(((await bot.Ask(int(user),TEXTS.Ask_Reciver,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 814 | Nums=str(((await bot.Ask(int(user),TEXTS.Ask_Nums,Msg=message,filters=RJ.filters.user(int(user)),reply_markup=BUTTONS.Cancel,timeout=120))).text) 815 | except TimeoutError : 816 | await message.reply_text(TEXTS.Time_Out,reply_markup=BUTTONS.Account_Setting) 817 | return 818 | except:return 819 | try: 820 | if Reciver.isdigit():Reciver=int(Reciver) 821 | Rec_Acc=(await bot.get_users(Reciver)) 822 | Reciver_name = Rec_Acc.mention 823 | Reciver=Rec_Acc.id 824 | except Exception as e: 825 | RJ.Log(int(user),f'Sending Account : {e}') 826 | await message.reply_text(TEXTS.Not_Regestered,reply_markup=BUTTONS.Account_Setting) 827 | return 828 | Nums=RJ.Account(Nums,user) 829 | Num_Texts='' 830 | for i in Nums: 831 | i.Transfer(int(Reciver)) 832 | Num_Texts+=f'{i}\n' 833 | if len(Num_Texts.split('\n')) > 50 : 834 | await message.reply_text(TEXTS.Transfered(Num_Texts,str(message.from_user.first_name),Reciver_name),reply_markup=BUTTONS.Account_Setting) 835 | await bot.send_message(int(Reciver),text=TEXTS.Transfered(Num_Texts,message.from_user.mention,Reciver_name),reply_markup=BUTTONS.Account_Setting) 836 | Num_Texts='' 837 | if len(Num_Texts.split('\n')) > 0 : 838 | await message.reply_text(TEXTS.Transfered(Num_Texts,str(message.from_user.first_name),Reciver_name),reply_markup=BUTTONS.Account_Setting) 839 | await bot.send_message(int(Reciver),text=TEXTS.Transfered(Num_Texts,message.from_user.mention,Reciver_name),reply_markup=BUTTONS.Account_Setting) 840 | 841 | 842 | # @Advertising.on_message(RJ.prv & RJ.regex('^\+\d') , group=0) 843 | # @RJ.User_Details 844 | # async def Number_Quick_Accsess(bot:Advertising,message,user:User): 845 | 846 | #---------------------------------------------------------------------------------| HELP |---------------------------------------------------------------------------------# 847 | def Len(l): 848 | try:return len(l) 849 | except:return 0 850 | 851 | @Advertising.on_message(RJ.prv & RJ.regex('^راهنما ❓') , group=0) 852 | @RJ.User_Details 853 | async def HELP(bot:Advertising,message,user:User): 854 | await message.reply_text(TEXTS.HELP(bool(user.Auto_pic),user.Auto_bio,user.AutoName,Len(user.All_numbers),user.R_Speed,user.A_Speed,Len(user.Banners),RJ.Owner_Username),reply_markup=BUTTONS.Accounts) 855 | --------------------------------------------------------------------------------