Как для тг бота сделать одновременно слушатель сообщений и выполнение чего-то в цикле?

Начал изучать пайтон, хочу сделать простого бота, который чекает рсс ленту и посылает в канал ссылку, если есть новый пост. Но при этом хочу сделать возможность отключать новости и добавлять фиды. Для этого нужно, чтобы бот слушал сообщения. Ниже код, который я пробовал. Переставлял местами опрос бота и цикл, но работает что-то одно. Подскажите, что почитать, где посмотреть. Боты с похожими функциями смотрел в гитхабе, но там что-то очень сложное
import telebot, time
from config.config import BOT_TOKEN

bot = telebot.TeleBot(BOT_TOKEN)


@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
    bot.reply_to(message, "Howdy, how are you doing?")


@bot.message_handler(func=lambda message: True)
def echo_all(message):
    bot.reply_to(message, message.text)


bot.polling()

while True:
    print('Hello')
    time.sleep(1)
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Советую почитать про основы работы асинхронных программ.

Но если на пальцах, считай, что из bot.polling() программа не выйдет до своего завершения. Она там будет крутиться, ждать события, и дёргать обработчики.

Поэтому всё, что ты хочешь научить бота делать, нужно делать
  • ИЛИ в рамках фреймворка (какого кстати? pyTelegramBotAPI? Он это не умеет)
  • ИЛИ в рамках отдельного потока, который запускать до вызова bot.polling()
  • ИЛИ вообще в рамках отдельного скрипта, который вызывать по крону.

Если в рамках потока, нужно будет посмотреть, позволяет ли телебот вызывать методы из другого потока.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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