[Python] Authorization in telegram bot by code fails

Discussão em 'Python' iniciado por Stack, Maio 24, 2025.

  1. Stack

    Stack Membro Participativo

    I am writing a telegram bot with telethon which gets access to several chats in the account and parses messages from it into the database. When I try to use this bot I try to login, Telegram sends me authentication code. When I send this authentication code to the bot, authentication fails and telegram sends me such a message:


    Nobody gained access to your chats because the login was not completed. The code was entered correctly, but sign in was not allowed, because this code was previously shared by your account. Please don't share login codes with others, because they allow anyone to log in to your account and access your chats.
    ​

    Here is a code snippet of authentication:

    async def handle_app_info(bot, event):
    global app_state, last_message_id
    user_id = event.message.peer_id.user_id
    response = event.message.text
    parts = response.split()

    if len(parts) != 4:
    error_message = "Error: Invalid input format. Please provide all required information."
    await bot.send_message(user_id, error_message)
    return

    phone_number, app_id, app_hash, app_name = parts

    client = TelegramClient(StringSession(), app_id, app_hash)
    await client.connect()
    if not await client.is_user_authorized():
    await client.send_code_request(phone_number)

    message = "Please enter the code sent to your Telegram app:"
    await bot.send_message(user_id, message)

    # Set user state to WAITING_CODE
    db.set_user_state(user_id, states.WAITING_CODE)

    # Set user state to WAITING_CODE
    app_state = AppState.WAITING_CODE
    last_message_id = event.message.id

    # Store the client object and phone number in the respective dictionaries
    clients[user_id] = client
    phone_numbers[user_id] = phone_number
    app_ids[user_id] = app_id
    app_hashes[user_id] = app_hash
    app_names[user_id] = app_name


    async def handle_code(bot, event):
    global app_state, last_message_id
    user_id = event.message.peer_id.user_id
    # Handle code input by the user
    code = event.message.text

    # Retrieve the client object and phone number from the respective dictionaries
    client = clients[user_id]
    phone_number = phone_numbers[user_id]
    app_id = app_ids[user_id]
    app_hash = app_hashes[user_id]
    app_name = app_names[user_id]

    # Sign in the user with the code they provided
    try:
    await client.sign_in(phone_number, code)
    except Exception as e:
    await bot.send_message(user_id, f"Failed to sign in: {e}")
    return


    # Save the session string
    session_string = client.session.save()

    # Save all connection data to the database
    db.save_connection_data(user_id, phone_number, app_id, app_hash, app_name, session_string)

    message = "Your Telegram app has been successfully connected to the bot."
    await bot.send_message(user_id, message)

    # Reset user state
    app_state = AppState.MAIN_MENU
    last_message_id = event.message.id
    # Reset user state
    db.set_user_state(user_id, states.MAIN_MENU)


    I have tried to disable 2FA on telegram, but it has not help.

    Does anybody have an idea what I am doing wrong? Thanks for your help

    Continue reading...

Compartilhe esta Página