Spaces:
Runtime error
Runtime error
| import asyncio | |
| import random | |
| import sys | |
| from traceback import format_exc | |
| from telethon import TelegramClient | |
| from telethon.sessions import StringSession | |
| from telethon.tl.functions.channels import CreateChannelRequest | |
| from telethon.tl.functions.contacts import UnblockRequest | |
| DATA = {} | |
| ENV = """ | |
| API_ID={} | |
| API_HASH={} | |
| BOT_TOKEN={} | |
| SESSION={} | |
| MAIN_CHANNEL={} | |
| LOG_CHANNEL={} | |
| CLOUD_CHANNEL={} | |
| BACKUP_CHANNEL={} | |
| MONGO_SRV={} | |
| OWNER={} | |
| FORCESUB_CHANNEL={} | |
| FORCESUB_CHANNEL_LINK={} | |
| """ | |
| async def generate_session_string(): | |
| api_id = int(input("Enter your API_ID: ")) | |
| api_hash = input("Enter your API_HASH: ") | |
| if api_id and api_hash: | |
| async with TelegramClient(StringSession(), api_id, api_hash) as client: | |
| DATA["api_id"] = api_id | |
| DATA["api_hash"] = api_hash | |
| DATA["session"] = str(client.session.save()) | |
| return (str(client.session.save()), api_id, api_hash) | |
| print("API_ID and HASH Not Found!") | |
| sys.exit(1) | |
| def get_mongo(): | |
| srv = input("Enter your Mongo SRV: ") | |
| if srv.strip(): | |
| DATA["mongo_srv"] = srv | |
| return True | |
| DATA["mongo_srv"] = "" | |
| return False | |
| def get_forcesub(): | |
| fsub_id = input( | |
| "Enter ID of Channel Where You Want ForceSub\nNOTE: Bot Is Admin In That Channel: " | |
| ) | |
| fsub_link = input("Enter Invite Link From Which Subs Will Join The FSUB Channel: ") | |
| if fsub_id and fsub_link: | |
| DATA["fsub_id"] = fsub_id | |
| DATA["fsub_link"] = fsub_link | |
| return True | |
| DATA["fsub_link"] = "" | |
| DATA["fsub_id"] = "" | |
| return False | |
| async def create_channel(client, title): | |
| try: | |
| r = await client( | |
| CreateChannelRequest( | |
| title=title, | |
| about="Made By https://github.com/kaif-00z/AutoAnimeBot", | |
| megagroup=False, | |
| ) | |
| ) | |
| created_chat_id = r.chats[0].id | |
| return f"-100{created_chat_id}" | |
| except BaseException: | |
| print("Unable to Create Channel...") | |
| sys.exit(1) | |
| def generate_env(): | |
| txt = ENV.format( | |
| DATA["api_id"], | |
| DATA["api_hash"], | |
| DATA["bot_token"], | |
| DATA["session"], | |
| DATA["Ongoing Anime 2024"], | |
| DATA["Ongoing Anime Logs"], | |
| DATA["Ongoing Anime Samples And SS"], | |
| DATA["Ongoing Anime Backup"], | |
| DATA["mongo_srv"], | |
| DATA["owner_id"], | |
| DATA["fsub_id"], | |
| DATA["fsub_link"], | |
| ) | |
| with open(".env", "w") as f: | |
| f.write(txt.strip()) | |
| print("Succesfully Generated .env File Don't Forget To Save It! For Future Uses.") | |
| async def auto_maker(): | |
| string_session, api_id, api_hash = await generate_session_string() | |
| print(string_session) | |
| async with TelegramClient( | |
| StringSession(string_session), api_id, api_hash | |
| ) as client: | |
| print("Creating Bot Account...") | |
| who = await client.get_me() | |
| DATA["owner_id"] = who.id | |
| name = who.first_name + "'s Auto Anime Bot" | |
| if who.username: | |
| username = who.username + "_anime_bot" | |
| else: | |
| username = "ongoing_anime_" + (str(who.id))[5:] + "_bot" | |
| bf = "@BotFather" | |
| await client(UnblockRequest(bf)) | |
| await client.send_message(bf, "/cancel") | |
| await asyncio.sleep(1) | |
| await client.send_message(bf, "/newbot") | |
| await asyncio.sleep(1) | |
| isdone = (await client.get_messages(bf, limit=1))[0].text | |
| if isdone.startswith("That I cannot do.") or "20 bots" in isdone: | |
| print( | |
| "You Already Made 20 Bots In Your Current Account. You Have To Deleted One Bot To Run This Script." | |
| ) | |
| sys.exit(1) | |
| await client.send_message(bf, name) | |
| await asyncio.sleep(1) | |
| isdone = (await client.get_messages(bf, limit=1))[0].text | |
| if not isdone.startswith("Good."): | |
| print( | |
| "Please make a Bot from @BotFather and add it's token in BOT_TOKEN, as an env var and restart me." | |
| ) | |
| sys.exit(1) | |
| await client.send_message(bf, username) | |
| await asyncio.sleep(1) | |
| isdone = (await client.get_messages(bf, limit=1))[0].text | |
| await client.send_read_acknowledge("botfather") | |
| if isdone.startswith("Sorry,"): | |
| ran = random.randint(1, 100) | |
| username = "ongoing_anime_" + (str(who.id))[6:] + str(ran) + "_bot" | |
| await client.send_message(bf, username) | |
| await asyncio.sleep(1) | |
| isdone = (await client.get_messages(bf, limit=1))[0].text | |
| if isdone.startswith("Done!"): | |
| bot_token = isdone.split("`")[1] | |
| DATA["bot_token"] = bot_token | |
| print("Succesfully Created Bot Account...") | |
| print("Creating Channels...") | |
| for ch_name in [ | |
| "Ongoing Anime Logs", | |
| "Ongoing Anime 2024", | |
| "Ongoing Anime Samples And SS", | |
| "Ongoing Anime Backup", | |
| ]: | |
| try: | |
| chat_id = await create_channel(client, ch_name) | |
| await asyncio.sleep(3) | |
| await client.edit_admin( | |
| int(chat_id), | |
| username, | |
| post_messages=True, | |
| edit_messages=True, | |
| delete_messages=True, | |
| ban_users=True, | |
| pin_messages=True, | |
| add_admins=True, | |
| ) | |
| DATA[ch_name] = chat_id | |
| except BaseException: | |
| print("Error While Creating Channel And Promoting Bot..") | |
| print(format_exc()) | |
| sys.exit(1) | |
| print("Succesfully Created Channel...") | |
| print("Now If You Wana Skip Upcoming Inputs You Can Just Press Enter!!") | |
| db = get_mongo() | |
| if not db: | |
| print("Generating .env Without Mongo SRV. Now You Have To Add it Manually!") | |
| fsub = get_forcesub() | |
| if not fsub: | |
| print( | |
| "Generating .env Without FSUB Configs. Now You May Have To Add it Manually!" | |
| ) | |
| print("NOTE: Fsub config is optional!!!") | |
| generate_env() | |
| asyncio.run(auto_maker()) | |