@Jfr0s

Не работает schedule, почему?

Ввел schedule чтобы каждые 2 секунды отсылалось сообщение, но почесу то он только раз отсилает и крашится. В чем причина?
Вот код:
import telebot
from telebot import types
import schedule

bot = telebot.TeleBot('token')


@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=3)
    but1 = types.KeyboardButton('/☁️remind☁️')
    markup.add(but1)
    n = f"<b>Привет {message.from_user.first_name}!</b>\nВиберіть що вам потрібно:\n/☁️remind☁️ -напоминания."
    bot.send_message(message.chat.id, n, parse_mode='html',
                     reply_markup=markup)

@bot.message_handler(commands=['☁️remind☁️'])
def remind_start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
    but1 = types.KeyboardButton("Включить")
    but2 = types.KeyboardButton("Выключить")
    markup.add(but1, but2)
    r_mes = bot.send_message(
        message.chat.id, "Варианты: ", parse_mode='html', reply_markup=markup)
    bot.register_next_step_handler(r_mes, r_check_mes)


def job(message):
    bot.send_message(message.chat.id, "текст", parse_mode='html')


def r_check_mes(message):
    x = message.text
    if x == 'Включить':
        schedule.every(2).seconds.do(job(message))
    elif x == 'Выключить':
        schedule.cancel_job(job(message))


bot.polling(none_stop=True)
  • Вопрос задан
  • 1001 просмотр
Решения вопроса 1
Ты не внимательно прочитал документацию schudle, там нужно обновлять информацию каждую секунду
while True:
    schedule.run_pending()
    time.sleep(1)

Полный пример:
def r_check_mes(message):
    x = message.text
    if x == 'Включить':
        schedule.every(2).seconds.do(lambda: job(message))
    elif x == 'Выключить':
        schedule.cancel_job(lambda: job(message))
    while True:
           schedule.run_pending()
           time.sleep(1)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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