Exemplo n.º 1
0
def handle_start_help(message, session, user):
    """Обработка /start /help команд

    Необходимо менять help_str - приветсвие бота.
    При желании можно отделить help.
    Незарегистрированные пользователи перенаправлются регистрироваться.
    Текущий вариант предусматривает автоматическое заполнение admin_id.
    Логика: первый отправивший /start (/help) и становиться админом : )
    Алгоритм: если admin_id пустой, то id написавшего пользователя и становиться admin_id
    ВНИМАНИЕ! После автозаполнения admin_id требуется перезапуск бота. Чтобы считать admin_id заново.
    @! пофиксить
    """
    global admin_id
    help_str = '''Добро пожаловать.

    Этот бот поможет вам организовать "Тайного Санту" и поучаствовать в игре самому.'''
    #Ниже заполнение пустого admin_id
    if not admin_id:
        admin_id = str(message.from_user.id)
        config['BASE']['Admin_id'] = admin_id
        with open(config_file, 'w') as configfile:
            config.write(configfile)

    bot.send_message(message.chat.id, help_str)
    #Редирект незарегенного пользователя на регистрацию.
    if not (user.registrationDone):
        register_flow(bot, message, session)
Exemplo n.º 2
0
def handle_start_help(message):
    """Обработка /start /help команд

    Необходимо менять help_str - приветсвие бота.
    При желании можно отделить help.
    Незарегистрированные пользователи перенаправлются регистрироваться.
    Текущий вариант предусматривает автоматическое заполнение admin_id.
    Логика: первый отправивший /start (/help) и становиться админом : )
    Алгоритм: если admin_id пустой, то id написавшего пользователя и становиться admin_id
    ВНИМАНИЕ! После автозаполнения admin_id требуется перезапуск бота. Чтобы считать admin_id заново.
    @! пофиксить
    """
    global admin_id
    db_connector.save_to_log('user', message)
    help_str = '''Добро пожаловать.

    Здесь можн проходить квесты - приключения в реальности. Выбирите себе квест и наслаждайтесь.'''
    #Ниже заполнение пустого admin_id
    if not admin_id:
        admin_id = str(message.from_user.id)
        config['BASE']['Admin_id'] = admin_id
        with open(config_file, 'w') as configfile:
            config.write(configfile)

    bot.send_message(message.chat.id, help_str)
    #Редирект незарегенного пользователя на регистрацию.
    if not (db_connector.is_user_registered(message.from_user.id)):
        register_flow(bot, message)
Exemplo n.º 3
0
def handle_register(message):
    """Обработка регистарции пользователя.

    Ссылается на модуль, в котором реализована регистрация пользователя.
    Перехватывает все сообщения незарегистрированного пользователя.
    По результатам в таблице users у пользователя должна быть RegistrationDone==1
    По умолчанию менять не надо, детали смотри в registration.py
    """
    db_connector.save_to_log('user', message)
    register_flow(bot, message)
Exemplo n.º 4
0
def routing(message):
    session = DBSession()
    try:
        user = session.query(User).filter_by(
            telegramid=message.from_user.id).first()
        if not user:
            user = User(telegramid=message.from_user.id)
            session.add(user)
            user.operation = Operation()
            session.commit()
        if user.operation is None:
            user.operation = Operation()
            session.commit()
        db_connector.save_to_log(
            from_who='user',
            message=message)  # Сохранение входящего сообщения в БД.
        text = utils.text_lower_wo_command(message)
        if not user.active:
            bot.send_message(message.chat.id, 'Вы заблокированы.')
        elif text in ('start', 'help'):
            handle_start_help(message, session, user)
        elif not user.registrationDone or user.operation.current_operation == opRegister:
            register_flow(bot, message, session)
        elif text in admin_functions.admin_commands:
            #Для правильной работы необходим заполненный admin_id в config
            admin_functions.admin_flow(bot, message, session)
        elif text in standard.create_group or user.operation.current_operation == create_group.opGroup:
            create_group.route_flow(bot, message, session)
        elif text in standard.find_group or user.operation.current_operation == join_group.opGroup:
            join_group.route_flow(bot, message, session)
        else:
            not_found(message)
        session.commit()
    except Exception as e:
        session.rollback()
        raise e
    finally:
        session.close()