theurs
@theurs

Как сделать вебхуки для телебота?

Поделитесь хорошо работающим примером.

В вариант с фласком мне непрерывно летят какие то непонятные обновления, на тестового бота, и цпу сильно нагружен, но при это работает более менее нормально, непонятно что происходит и почему так https://github.com/eternnoir/pyTelegramBotAPI/blob...

Вариант с fastapi работает на первый взгляд нормально но если присмотреться то у него явные проблемы, обновления часто залипают, ошибок нет, выглядит так будто запросы просто приходят с большим опозданием, ип адрес с которого приходят обновления отвечает на пинги с задержкой 2мс, он где то совсем близко. В реальном боте callback кнопки сильно лагают, уведомления вообще не отправляются (те которые о том что бот что то делает).
https://github.com/eternnoir/pyTelegramBotAPI/blob...

668a06c59d426906819572.png
Это HTTP 1.1 так и должно быть?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# This is a simple echo bot using decorators and webhook with fastapi
# It echoes any incoming text messages and does not use the polling method.


import logging
import time

import telebot

import cfg


API_TOKEN = cfg.test_token


logger = telebot.logger
telebot.logger.setLevel(logging.INFO)

bot = telebot.TeleBot(API_TOKEN)


@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    """
    Handle '/start' and '/help'
    """
    bot.reply_to(message,
                 ("Hi there, I am EchoBot.\n"
                  "I am here to echo your kind words back to you."))

@bot.message_handler(func=lambda message: True, content_types=['text'])
def echo_message(message):
    """
    Handle all other messages
    """
    bot.reply_to(message, message.text)


# Remove webhook, it fails sometimes the set if there is a previous webhook
#bot.remove_webhook()
#time.sleep(1)

if hasattr(cfg, 'WEBHOOK_DOMAIN') and hasattr(cfg, 'WEBHOOK_PORT') and hasattr(cfg, 'WEBHOOK_SSL_CERT') and hasattr(cfg, 'WEBHOOK_SSL_PRIV'):
    bot.run_webhooks(
        listen=cfg.WEBHOOK_DOMAIN,
        port = cfg.WEBHOOK_PORT,
        certificate=cfg.WEBHOOK_SSL_CERT,
        certificate_key=cfg.WEBHOOK_SSL_PRIV
    )
else:
    bot.polling(timeout=90, long_polling_timeout=90)
  • Вопрос задан
  • 18 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы