mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Add timer_bot sync and async example
This commit is contained in:
parent
56fbf491bc
commit
40465643b9
52
examples/asynchronous_telebot/timer_bot_async.py
Normal file
52
examples/asynchronous_telebot/timer_bot_async.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
# This is a simple bot with schedule timer
|
||||||
|
# https://github.com/ibrb/python-aioschedule
|
||||||
|
# https://schedule.readthedocs.io
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import os, aioschedule
|
||||||
|
from telebot.async_telebot import AsyncTeleBot
|
||||||
|
|
||||||
|
API_TOKEN = '<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 <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:
|
||||||
|
await aioschedule.run_pending()
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
await asyncio.gather(bot.infinity_polling(), scheduler())
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
asyncio.run(main())
|
43
examples/timer_bot.py
Normal file
43
examples/timer_bot.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# This is a simple bot with schedule timer
|
||||||
|
# https://schedule.readthedocs.io
|
||||||
|
|
||||||
|
import os, time, threading, schedule
|
||||||
|
from telebot import TeleBot
|
||||||
|
|
||||||
|
API_TOKEN = '<api_token>'
|
||||||
|
bot = TeleBot(API_TOKEN)
|
||||||
|
|
||||||
|
|
||||||
|
@bot.message_handler(commands=['help', 'start'])
|
||||||
|
def send_welcome(message):
|
||||||
|
bot.reply_to(message, "Hi! Use /set <seconds> to set a timer")
|
||||||
|
|
||||||
|
|
||||||
|
def beep(chat_id) -> None:
|
||||||
|
"""Send the beep message."""
|
||||||
|
bot.send_message(chat_id, text='Beep!')
|
||||||
|
return schedule.CancelJob # Run a job once
|
||||||
|
|
||||||
|
|
||||||
|
@bot.message_handler(commands=['set'])
|
||||||
|
def set_timer(message):
|
||||||
|
args = message.text.split()
|
||||||
|
if len(args) > 1 and args[1].isdigit():
|
||||||
|
sec = int(args[1])
|
||||||
|
schedule.every(sec).seconds.do(beep, message.chat.id).tag(message.chat.id)
|
||||||
|
else:
|
||||||
|
bot.reply_to(message, 'Usage: /set <seconds>')
|
||||||
|
|
||||||
|
|
||||||
|
@bot.message_handler(commands=['unset'])
|
||||||
|
def unset_timer(message):
|
||||||
|
schedule.clean(message.chat.id)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
threading.Thread(target=bot.infinity_polling, name='bot_infinity_polling', daemon=True).start()
|
||||||
|
while True:
|
||||||
|
schedule.run_pending()
|
||||||
|
time.sleep(1)
|
Loading…
Reference in New Issue
Block a user