telegram-bot на python отправка сообщений по расписанию
Я новичок, пишу бот у которого хочу реализовать следующий функционал (основной функционал): первый сценарий:
import random
import telebot
from telebot import types
from words import first, second, second_add, third, mes, pict
bot = telebot.TeleBot('TOKEN')
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.text == 'Привет':
bot.send_message(message.from_user.id, 'Привет!)')
keyboard = types.InlineKeyboardMarkup()
key_1 = types.InlineKeyboardButton(text='МУР', callback_data='МУР')
keyboard.add(key_1)
bot.send_message(message.from_user.id, text='Узнай!', reply_markup=keyboard)
elif message.text == '/help':
bot.send_message(message.from_user.id, text='Напиши Привет')
else:
bot.send_message(message.from_user.id, text='Я тебя не понимаю. Напиши Привет')
@bot.callback_query_handler(func=lambda call:True)
def callback_worker(call):
if call.data == 'МУР':
# random.choice(first) - из файла word генерируются уже заданные слова
msg = random.choice(first) + '' + random.choice(second) + '' + random.choice(second_add) + '' + random.choice(third) + '' + random.choice(pict)
sent_message = bot.send_message(call.message.chat.id, msg)
keyboard = types.InlineKeyboardMarkup()
key_1 = types.InlineKeyboardButton(text='МУР', callback_data='МУР')
keyboard.add(key_1)
bot.edit_message_reply_markup(chat_id=sent_message.chat.id, message_id=sent_message.message_id, reply_markup=keyboard)
bot.polling(none_stop=True, interval=0)
Второй сценарий
import asyncio
import random
from datetime import datetime
from toke import bot, chat_id
from words import mes, pict
async def main():
while True:
now = datetime.now()
if now.hour == 8 and now.minute == 22 and now.second == 0:
await send_message()
await asyncio.sleep(1)
async def send_message():
await bot.send_message(chat_id=chat_id, text='Какой-то текст' + random.choice(pict))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
Не могу запустить оба функционала одновременно. Пробовал, через multiprocessing в main.py, не работает. Объединяя все в один файл, так же не работает, бот ждет отправки сообщения по времени, а основной функционал, не работает. Так же переписывал основную часть через async, попытка не удалась. Так же функционал отправки пробовал реализовать через schedule. Если запускать второй код отдельно, сообщение он отправляет, но сразу же падает. Подскажите каким образом можно реализовать?
Источник: Stack Overflow на русском