import asyncio
import aioschedule
from telebot import AsyncTeleBot
import config
API_TOKEN = config.TOKEN
bot = AsyncTeleBot(API_TOKEN)
async def beep(chat_id) -> None:
await bot.send_message(chat_id, text='Beep!')
aioschedule.clear(chat_id)
@bot.message_handler(commands=['help', 'start'])
async def send_welcome(message):
await bot.send_message(message.chat.id, "Hi! Use /set <seconds> 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 <seconds>')
@bot.message_handler(commands=['unset'])
def unset_timer(message):
aioschedule.clean(message.chat.id)
async def scheduler():
while True:
try:
await aioschedule.run_pending()
await asyncio.sleep(1)
except Exception:
break
async def main():
await asyncio.gather(bot.infinity_polling(), scheduler())
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())