how to login manually to telegram account with pyrogram without interactive console

Viewed 1398

I'm using python's pyrogram lib to login to multiple accounts I need to create a function just to send verification code to account and then read it from other user input ( not the default pyrogram login prompt )

when I use send_code it sends code and waits for user input from console and that what I don't want it to do I need simply a function that takes phone number as parameter and send confirmation code to it and a function then to login with that confirmation code ( got from user input somewhere else , eg: from telegram message to a linked bot or ....

2 Answers

I found a way to do it but with Telethon :

client = TelegramClient('sessionfile',api_id,api_hash)
def getcode():
    code = ... # get the code from somewhere ( bot, file etc.. )
    return code

client.start(phone=phone_number,password=password,code_callback=getcode)

this will login , gets confirmation code from specific function and then uses it to login , and store session file

Here's how you can achieve that with pyrogram:

from pyrogram import Client


async def main():
    api_id = YOUR_API_ID
    api_hash = "YOUR_API_HASH"
    phone_number = "YOUR_PHONE_NUMBER"
    client = Client(":memory:", api_id, api_hash)
    await client.connect()
    sent_code_info = await client.send_code(phone_number)
    phone_code = input("Please enter your phone code: ")  # Sent phone code using last function
    await client.sign_in(phone_number, sent_code_info.phone_code_hash, phone_code)

For more info check the implementation of String Session Bot which implements Pyrogram as well as Telethon, particularly this function.

Related