开发 Telegram API 机器人中的 Pyrogram 问题

问题描述 投票:0回答:1

我目前正在使用 Pyrogram 开发 Telegram API 机器人,但我遇到了一个正在努力解决的问题。目的是收集用户的电话号码,保存它,与该号码建立会话,并请求登录代码。在下一步中,用户需要发送登录代码。然而,每次尝试创建客户端时,我都会收到一个新代码,这使得维护不完整的会话来检索登录代码变得具有挑战性。

这是我的代码片段:


# Function to create and initialize the Pyrogram client
async def create_and_initialize_client(api_id, api_hash, phone_number):
    # Provide a unique name for your client
    client: Client = Client(phone_number, api_id, api_hash, phone_number=phone_number)
    client.start()
    
async def continue_session(api_id, api_hash, phone_number, login_code):
    client: Client = Client(phone_number, api_id, api_hash, phone_number=phone_number)
    # Add code for continuing the session

我还面临第二个问题:我找不到解释如何将登录代码传递到会话中的文档。任何有关这些问题的指导或帮助将不胜感激。

提前谢谢您!

我尝试过的:

我尝试使用提供的代码片段创建并初始化 Pyrogram 客户端。我预计客户端会在多次尝试中保留会话,从而使我能够接收正在进行的会话的登录代码。但是,每次创建新客户端时,都会生成新代码,从而阻止建立连续会话。

预期结果:

理想情况下,我想了解如何创建一个维护会话状态的客户端,以便我可以在同一会话中成功接收登录代码。此外,如果您能提供有关将登录代码传递到会话中的指导,我们将不胜感激。

python telegram-bot pyrogram
1个回答
0
投票

如果您的问题是在请求代码后不知道如何输入代码,那么您应该注意以下功能:

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)

但是,如果您不清楚为什么 Telegram 机器人中用户发送的代码不起作用,那么我必须让您失望的是,此类功能无法实现。用户在帖子下的评论中解决了这个问题,指出代码立即变为非活动状态。

如果您熟悉 Web 开发,则可以实施解决方法。您可以发出一个链接供用户输入代码,从而为每个用户生成一个新链接。此方法可以规避该问题,但这取决于您要完成的任务。

© www.soinside.com 2019 - 2024. All rights reserved.