Как реализовать отправку и получение запросов к боту на aiogram на fastapi через промежуточный vps?

У меня есть api сервер на fastapi. При запуске сервера закидываются вебхуки для нескольких ботов в списке bots:
async def set_webhook(bot):
    url = 'https://какой-то_адрес'
    webhook_url = url + '/webhook'
    token = generate_secret_token(32)

    await bot.set_webhook(webhook_url,
                          drop_pending_updates=True,
                          secret_token=token)
    return token

@app.on_event('startup')
async def on_startup():
    for bot_dict in bots:
        bot = Bot(token=bot_dict['token'],
                  default=DefaultBotProperties(parse_mode=ParseMode.HTML))
        secret_token = await set_webhook(bot)
        bot_by_secret[secret_token] = bot

Вот такой эндпоинд для приемки обновлений от ботов:
@app.post('/webhook', include_in_schema=False)
async def handle(request: Request):
    secret_token = request.headers.get('X-Telegram-Bot-Api-Secret-Token')
    if secret:
        try:
            request.state.bot = bot_by_secret[secret_token]
        except KeyError:
            return Response(status_code=403)

        request_data = await request.json()
        update = types.Update(**request_data)
        await request.state.dp._process_update(bot=request.state.bot,
                                               update=update)
        return Response()
    else:
        return Response(status_code=403)

Как сделать прием обновлений от ботов и их отправку через промежуточный vps?

С приемкой есть мысль закидывать вебхук уже с адресом промежуточного сервера, на этом сервере перенаправлять на основу, там выполнять какие-то вычисления и возвращать в обратном порядке.
Схема: TelegramAPI -> VPS -> Основной железный сервер -> VPS -> TelegramAPI

Но как перенастроить методы методы у класса Bot, такие как bot.set_webhook, bot.send_message и так далее, чтобы они шли через vps, а не напрямик? В документации не нашел ответов, но мб не там смотрел. Если есть какие-то примеры реализации, буду признателен.
Стандартная схема: Железо --[bot.set_webhook]--> Telegram API
Желаемая схема: Железо --[bot.set_webhook]--> VPS --[bot.set_webhook]--> Telegram API
  • Вопрос задан
  • 108 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы