#!/usr/bin/python3 # This is a simple bot with schedule timer # https://github.com/ibrb/python-aioschedule # https://schedule.readthedocs.io import asyncio import aioschedule from telebot.async_telebot import AsyncTeleBot API_TOKEN = '' bot = AsyncTeleBot(API_TOKEN) async def beep(chat_id) -> None: """Send the beep message.""" await bot.send_message(chat_id, text='Beep!') aioschedule.clear(chat_id) # return schedule.CancelJob not working in aioschedule use tag for delete @bot.message_handler(commands=['help', 'start']) async def send_welcome(message): await bot.reply_to(message, "Hi! Use /set to set a timer") @bot.message_handler(commands=['set']) async def set_timer(message): args = message.text.split() if len(args) > 1 and args[1].isdigit(): sec = int(args[1]) aioschedule.every(sec).seconds.do(beep, message.chat.id).tag(message.chat.id) else: await bot.reply_to(message, 'Usage: /set ') @bot.message_handler(commands=['unset']) def unset_timer(message): aioschedule.clean(message.chat.id) async def scheduler(): while True: await aioschedule.run_pending() await asyncio.sleep(1) async def main(): await asyncio.gather(bot.infinity_polling(), scheduler()) if __name__ == '__main__': asyncio.run(main())