Spaces:
Sleeping
Sleeping
| #devggn | |
| from pyrogram import filters, Client | |
| from devgagan import app | |
| from pyromod import listen | |
| import random | |
| import os | |
| import string | |
| from devgagan.core.mongo import db | |
| from devgagan.core.func import subscribe, chk_user | |
| from config import API_ID as api_id, API_HASH as api_hash | |
| from pyrogram.errors import ( | |
| ApiIdInvalid, | |
| PhoneNumberInvalid, | |
| PhoneCodeInvalid, | |
| PhoneCodeExpired, | |
| SessionPasswordNeeded, | |
| PasswordHashInvalid, | |
| FloodWait | |
| ) | |
| def generate_random_name(length=7): | |
| characters = string.ascii_letters + string.digits | |
| return ''.join(random.choice(characters) for _ in range(length)) # Editted ... | |
| async def delete_session_files(user_id): | |
| session_file = f"session_{user_id}.session" | |
| memory_file = f"session_{user_id}.session-journal" | |
| session_file_exists = os.path.exists(session_file) | |
| memory_file_exists = os.path.exists(memory_file) | |
| if session_file_exists: | |
| os.remove(session_file) | |
| if memory_file_exists: | |
| os.remove(memory_file) | |
| # Delete session from the database | |
| if session_file_exists or memory_file_exists: | |
| await db.delete_session(user_id) | |
| return True # Files were deleted | |
| return False # No files found | |
| async def clear_db(client, message): | |
| user_id = message.chat.id | |
| files_deleted = await delete_session_files(user_id) | |
| if files_deleted: | |
| await message.reply("β Your session data and files have been cleared from memory and disk.") | |
| else: | |
| await message.reply("β οΈ You are not logged in, no session data found.") | |
| async def generate_session(_, message): | |
| joined = await subscribe(_, message) | |
| if joined == 1: | |
| return | |
| # user_checked = await chk_user(message, message.from_user.id) | |
| # if user_checked == 1: | |
| # return | |
| user_id = message.chat.id | |
| number = await _.ask(user_id, 'Please enter your phone number along with the country code. \nExample: +19876543210', filters=filters.text) | |
| phone_number = number.text | |
| try: | |
| await message.reply("π² Sending OTP...") | |
| client = Client(f"session_{user_id}", api_id, api_hash) | |
| await client.connect() | |
| except Exception as e: | |
| await message.reply(f"β Failed to send OTP {e}. Please wait and try again later.") | |
| try: | |
| code = await client.send_code(phone_number) | |
| except ApiIdInvalid: | |
| await message.reply('β Invalid combination of API ID and API HASH. Please restart the session.') | |
| return | |
| except PhoneNumberInvalid: | |
| await message.reply('β Invalid phone number. Please restart the session.') | |
| return | |
| try: | |
| otp_code = await _.ask(user_id, "Please check for an OTP in your official Telegram account. Once received, enter the OTP in the following format: \nIf the OTP is `12345`, please enter it as `1 2 3 4 5`.", filters=filters.text, timeout=600) | |
| except TimeoutError: | |
| await message.reply('β° Time limit of 10 minutes exceeded. Please restart the session.') | |
| return | |
| phone_code = otp_code.text.replace(" ", "") | |
| try: | |
| await client.sign_in(phone_number, code.phone_code_hash, phone_code) | |
| except PhoneCodeInvalid: | |
| await message.reply('β Invalid OTP. Please restart the session.') | |
| return | |
| except PhoneCodeExpired: | |
| await message.reply('β Expired OTP. Please restart the session.') | |
| return | |
| except SessionPasswordNeeded: | |
| try: | |
| two_step_msg = await _.ask(user_id, 'Your account has two-step verification enabled. Please enter your password.', filters=filters.text, timeout=300) | |
| except TimeoutError: | |
| await message.reply('β° Time limit of 5 minutes exceeded. Please restart the session.') | |
| return | |
| try: | |
| password = two_step_msg.text | |
| await client.check_password(password=password) | |
| except PasswordHashInvalid: | |
| await two_step_msg.reply('β Invalid password. Please restart the session.') | |
| return | |
| string_session = await client.export_session_string() | |
| await db.set_session(user_id, string_session) | |
| await client.disconnect() | |
| await otp_code.reply("β Login successful!") | |