Как сделать, что-бы работала функция while:True и bot.polling()?

Рейтинг: 1Ответов: 1Опубликовано: 27.02.2023

Нужно сделать так, что-бы бот отправлял сообщение в заданное время, и при этом что-бы работали команды, возможно ли это, если да то буду очень благодарен если покажете как. ChatGPT мне сказал что такое возможно только на aiogram, сам использую telebot. Если убираю bot.polling(), то как не странно не работают команды, но при этом прекрасно работает отправка по времени, если добавляю bot.polling(), то наоборот, команды работают, а вот отправка по времени нет. Вот сам код:

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'hi')
chat_id = ********
def send_message():
    bot.send_message(chat_id, 'Привет, как дела?')

schedule.every().day.at("10:00").do(send_message)
schedule.every().day.at("20:00").do(send_message)

while True:
    schedule.run_pending()
    time.sleep(1)

    bot.polling()

Ответы

▲ 1Принят

Я уже нашел решение

def start_polling():
    bot.polling(none_stop=True)

polling_thread = threading.Thread(target=start_polling)
polling_thread.start()
chat_id = *******
def send_message():
    bot.send_message(chat_id, 'Привет, как дела?')
schedule.every().day.at("20:35").do(send_message)
schedule.every().day.at("20:00").do(send_message)

while True:
    schedule.run_pending()
    time.sleep(1)