Skip to content

Instantly share code, notes, and snippets.

@Aniketh01
Created May 6, 2020 16:27
Show Gist options
  • Save Aniketh01/15c9349a22f0d7d72eb9e29d65317f82 to your computer and use it in GitHub Desktop.
Save Aniketh01/15c9349a22f0d7d72eb9e29d65317f82 to your computer and use it in GitHub Desktop.
import logging
from telegram.ext import Updater, CommandHandler
KILL = 0
# Enable logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# Define a few command handlers. These usually take the two arguments update and
# context. Error handlers also receive the raised TelegramError object in error.
def start(update, context):
update.message.reply_text('Hi! Use /set <seconds> to set a timer')
def alarm(context):
"""Send the alarm message."""
default_dir = '/var/log/nawab/'
job = context.job
global KILL
with open(default_dir+"tid_store.txt", "r") as fp:
for line in fp:
if KILL == 0:
context.bot.send_message(job.context, text=str(line))
else:
KILL = 0
print("breaking")
break
def set_timer(update, context):
"""Add a job to the queue."""
chat_id = update.message.chat_id
try:
# Add job to queue and stop current one if there is a timer already
if 'job' in context.chat_data:
old_job = context.chat_data['job']
old_job.schedule_removal()
new_job = context.job_queue.run_repeating(alarm, 2, context=chat_id)
context.chat_data['job'] = new_job
update.message.reply_text('successfully started!')
except (IndexError, ValueError):
update.message.reply_text('Usage: /set <seconds>')
def unset(update, context):
"""Remove the job if the user changed their mind."""
if 'job' not in context.chat_data:
update.message.reply_text('You have no active timer')
return
global KILL
job = context.chat_data['job']
job.schedule_removal()
del context.chat_data['job']
KILL = 1
update.message.reply_text('Timer successfully unset!')
def error(update, context):
"""Log Errors caused by Updates."""
logger.warning('Update "%s" caused error "%s"', update, context.error)
def main():
"""Run bot."""
# Create the Updater and pass it your bot's token.
# Make sure to set use_context=True to use the new context based callbacks
# Post version 12 this will no longer be necessary
updater = Updater("Token", use_context=True)
# Get the dispatcher to register handlers
dp = updater.dispatcher
# on different commands - answer in Telegram
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("help", start))
dp.add_handler(CommandHandler("set", set_timer,
pass_job_queue=True,
pass_chat_data=True))
dp.add_handler(CommandHandler("unset", unset, pass_chat_data=True))
# log all errors
dp.add_error_handler(error)
# Start the Bot
updater.start_polling()
# Block until you press Ctrl-C or the process receives SIGINT, SIGTERM or
# SIGABRT. This should be used most of the time, since start_polling() is
# non-blocking and will stop the bot gracefully.
updater.idle()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment