@AlmazKayum

Как связать хэндлеры Amazon AWS Lambda с хэндлерами PyTelegramBotApi?

В этом видео подробно описано, как сделать webhook для телеграм бота с помощью Amazon AWS https://www.youtube.com/watch?v=8aeoTryJqyo
без сертификатов, хостингов и довольно таки просто.
Создается хэндлер в коде например entry.point и через амазон авс туда передаются обновления от телеграм.
Вопрос: как связать все это с хэндлерами библиотеки PyTelegramBotApi?
Если есть кто разбирается, скиньте пожалуйста примеры кода.
  • Вопрос задан
  • 743 просмотра
Пригласить эксперта
Ответы на вопрос 1
@nmelis
Здравствуйте, наверное ответ именно вам уже не актуален, но я отвечу для других, которые будут искать ответ на подобный вопрос!

Так: Я выбрал Фласк и PyTelegramBotApi, фласк можно не брать, но с ним мне было проще
# main.py
from flask import Flask
import telebot

app = Flask(__name__)
bot = telebot.TeleBot(os.getenv('TELEGRAM_BOT_TOKEN'),  threaded=False)

@app.route('/' + os.getenv('TELEGRAM_BOT_TOKEN'), methods=['GET', 'POST'])
def telegram_bot_handler():
    if flask.request.headers.get('content-type') == 'application/json':
        json_string = flask.request.get_data().decode('utf-8')
        update = telebot.types.Update.de_json(json_string)
        bot.process_new_updates([update])
        return json_string, 200
    else:
        print('You NOT made it!')
        flask.abort(403)

@app.route('/set_webhook')
def set_webhook(): # чтобы легко можно было установить веб хук
    bot.remove_webhook()
    sleep(1)
    try:
        return str(bot.set_webhook('{}{}'.format(os.getenv('WEBHOOK_TELEGRAM'), os.getenv( 'TELEGRAM_BOT_TOKEN')))), 200
    except telebot.apihelper.ApiException:
        pass
    return '', 200

@bot.message_handler(func=lambda message: True, commands=['help'])
def hello_command(message):
    tg.bot.reply_to(message, "Help text")

В хендлере AWS Lambda указываем main:app
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект