[ci skip] update timerbot.py to use chat_data

This commit is contained in:
Jannes Höke 2016-12-13 21:57:37 +01:00
parent 71530f404d
commit a37add39f4

View file

@ -22,10 +22,9 @@ import logging
# Enable logging # Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.DEBUG) level=logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
timers = dict()
# Define a few command handlers. These usually take the two arguments bot and # Define a few command handlers. These usually take the two arguments bot and
@ -39,7 +38,7 @@ def alarm(bot, job):
bot.sendMessage(job.context, text='Beep!') bot.sendMessage(job.context, text='Beep!')
def set(bot, update, args, job_queue): def set(bot, update, args, job_queue, chat_data):
"""Adds a job to the queue""" """Adds a job to the queue"""
chat_id = update.message.chat_id chat_id = update.message.chat_id
try: try:
@ -51,7 +50,7 @@ def set(bot, update, args, job_queue):
# Add job to queue # Add job to queue
job = Job(alarm, due, repeat=False, context=chat_id) job = Job(alarm, due, repeat=False, context=chat_id)
timers[chat_id] = job chat_data['job'] = job
job_queue.put(job) job_queue.put(job)
update.message.reply_text('Timer successfully set!') update.message.reply_text('Timer successfully set!')
@ -60,23 +59,22 @@ def set(bot, update, args, job_queue):
update.message.reply_text('Usage: /set <seconds>') update.message.reply_text('Usage: /set <seconds>')
def unset(bot, update): def unset(bot, update, chat_data):
"""Removes the job if the user changed their mind""" """Removes the job if the user changed their mind"""
chat_id = update.message.chat_id
if chat_id not in timers: if 'job' not in chat_data:
update.message.reply_text('You have no active timer') update.message.reply_text('You have no active timer')
return return
job = timers[chat_id] job = chat_data['job']
job.schedule_removal() job.schedule_removal()
del timers[chat_id] del chat_data['job']
update.message.reply_text('Timer successfully unset!') update.message.reply_text('Timer successfully unset!')
def error(bot, update, error): def error(bot, update, error):
logger.warn('Update "%s" caused error "%s"' % (update, error)) logger.warning('Update "%s" caused error "%s"' % (update, error))
def main(): def main():
@ -88,8 +86,11 @@ def main():
# on different commands - answer in Telegram # on different commands - answer in Telegram
dp.add_handler(CommandHandler("start", start)) dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", start)) dp.add_handler(CommandHandler("help", start))
dp.add_handler(CommandHandler("set", set, pass_args=True, pass_job_queue=True)) dp.add_handler(CommandHandler("set", set,
dp.add_handler(CommandHandler("unset", unset)) pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
dp.add_handler(CommandHandler("unset", unset, pass_chat_data=True))
# log all errors # log all errors
dp.add_error_handler(error) dp.add_error_handler(error)