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)
Пример #2
0
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()
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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')