微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FastAPI 和 Telethon 应用程序

如何解决FastAPI 和 Telethon 应用程序

我正在处理我的电报客户端,首先我需要添加电报授权。这是我如何实现它的代码

async def get_telegram_client(session: str = None) -> TelegramClient:
    return TelegramClient(
        StringSession(session),api_id=settings.TELEGRAM_API_ID,api_hash=settings.TELEGRAM_API_HASH
    )

@router.post('/code')
async def send_authorizarion_code(payload: TelegramSendCode):
    client = await get_telegram_client()
    await client.connect()
    try:
        await client.send_code_request(payload.phone)
    except FloodWaitError as e:
        return {
            'FloodWaitError': {
               'phone_number': e.request.phone_number,'seconds': e.seconds
        }}
    else:
        return {
            'msg': 'code sent','session': client.session.save()
        }


@router.post('/auth')
async def authorize(payload: TelegramAuth):
    client = await get_telegram_client(payload.session)
    await client.connect()
    await client.send_code_request(payload.phone)
    await client.sign_in(code=payload.code,phone=payload.phone)
    return {'msg': 'signed in'}

但问题是 sign_in() 方法需要先调用 send_code_request() 方法,因此在端点 authorize() 中我在同一个会话中第二次调用它 => 用户将收到 2 个相同的代码.

如何在 2 个 API 端点中编写电报授权流程,并且在 sign_in() 之前不执行 send_code_request() 方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。