def wrapper(*args, **kwargs): update, ctx = args try: if update.message.chat.id not in ctx.bot.user_ids: raise UserAuthError return func(*args, **kwargs) except UserAuthError: ctx.bot._log.error('User authorization error') ctx.bot._log.error(get_user_info(update)) print_access_error(update)
def cmd_stop(update, ctx): """Terminate bot.""" msg = f'Stopping {ctx.bot.first_name} bot' log.info(msg) log.debug(get_user_info(update)) update.message.reply_text(msg) ctx.bot.thread_manager.stop_threads() ctx.bot.proc_manager.stop_processes() thread = Thread(target=ctx.bot.stop_polling) thread.start()
def cmd_getfullpic(update, ctx, cam_id, cam_meta, event_id): """Get and send full snapshot from the camera.""" log.info('Full cam snapshot requested') log.debug(get_user_info(update)) payload = { 'event': Events.TAKE_SNAPSHOT, 'event_id': event_id, 'params': { 'resize': False } } ctx.bot.event_manager.send_event(cam_id, payload)
def cmd_getpic(update, ctx, cam_id, cam_meta, event_id): """Get and send resized snapshot from the camera.""" log.info('Resized cam snapshot from %s requested', cam_meta.description) log.debug(get_user_info(update)) payload = { 'event': Events.TAKE_SNAPSHOT, 'event_id': event_id, 'params': { 'resize': True } } ctx.bot.event_manager.send_event(cam_id, payload)
def cmd_alert_off(update, ctx, cam_id, cam_meta, event_id): """Disable camera's Alert Mode.""" log.info('Disabling camera\'s alert mode requested') log.debug(get_user_info(update)) payload = { 'event': Events.CONFIGURE_ALARM, 'event_id': event_id, 'name': Alarms.ALARM, 'params': { 'switch': False } } ctx.bot.event_manager.send_event(cam_id, payload)
def cmd_help(update, ctx, append=False, requested=True, cam_id=None): """Send help message to telegram chat.""" if requested: log.info('Help message has been requested') log.debug(get_user_info(update)) update.message.reply_text( 'Use /list command to list available cameras and commands\n' 'Use /stop command to fully stop the bot') elif append: presentation = build_commands_presentation(ctx.bot, cam_id) update.message.reply_html( f'<b>Available commands</b>\n\n{presentation}\n\n/list cameras') log.info('Help message has been sent')