远程马拉松授权Python

xmq68pz9  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(111)

我有以下问题:我正在尝试使用Telethon创建的会话授权一个电报客户端。当您在控制台中运行代码时,系统会根据需要请求与该帐户关联的电话号码,然后是从Telegram接收到的确认码。输入确认码后,没有任何React,但会出现一条授权成功的消息。在等待程序工作几分钟后,电报中有一条关于登录尝试不完整的消息。2你能告诉我是怎么回事吗?
这是我的代码,使会话:

from telethon import TelegramClient, events

api_id = MY_API_ID
api_hash = "MY_API_HASH"
client = TelegramClient('first_session', api_id, api_hash)

@client.on(events.NewMessage(outgoing=True, pattern=None))
async def greeting(event):
    chat = await event.get_chat()
    await client.send_message(chat, "Hello, World!")

client.start()
client.run_until_disconnected()

在终端中启动程序的结果见附图Launching in console

oknrviil

oknrviil1#

问题可能是您没有等待确认代码请求出现并完成后才运行其余代码。要解决此问题,您需要将run_until_disconnected方法 Package 在异步上下文中,并使用await关键字等待确认代码请求。
验证码:

from telethon import TelegramClient, events

api_id = MY_API_ID
api_hash = "MY_API_HASH"
client = TelegramClient('first_session', api_id, api_hash)

@client.on(events.NewMessage(outgoing=True, pattern=None))
async def greeting(event):
    chat = await event.get_chat()
    await client.send_message(chat, "Hello, World!")

async def main():
    await client.start()
    await client.run_until_disconnected()

asyncio.run(main())

相关问题