Beispiel #1
0
async def process_link(message: types.Message, manager: Manager, **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    if text:
        manager.state.link = text
        await message.reply("Установлена ссылка {}".format(text))
    else:
        link = manager.state.link
        if link:
            await message.reply("Ссылка: {}".format(link))
        else:
            await message.reply("Настройки ссылки не найдено")
Beispiel #2
0
async def reset_to_default(message: types.Message, manager: Manager, **kwargs):
    key = utils.trim_command_name(message, kwargs['command_name']).strip()
    if len(key):
        try:
            manager.state.reset(key)
            await message.reply(
                f"Для переменной {key} установлено значение: {getattr(manager.state, key)}"
            )
        except AttributeError:
            await message.reply(f"Переменной {key} не существует")
    else:
        manager.state.reset_all()
        await message.reply("Выполнен сброс к заводским настройкам")
Beispiel #3
0
async def update_level(message: types.Message, manager: Manager, **kwargs):
    status_ref = utils.trim_command_name(message, kwargs['command_name'])
    if len(status_ref):
        game_status = get_forced_game_status_or_none(status_ref)
        if game_status is None:
            game_status = StatusSchema(partial=True, unknown=EXCLUDE).load({})
            await message.reply(
                f'Не удалось распарсить игровой статус: {status_ref}')
    else:
        game_status = await manager.http_client.status()
    await message.reply(str(game_status))
    await update_level_status(manager.bot, manager,
                              **{'game_status': game_status})
Beispiel #4
0
async def process_test_code(message: types.Message, manager: Manager,
                            **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    verdict, game_status_ref = text.split(maxsplit=1)
    code_verdict = CodeVerdict(int(verdict))
    game_status = get_forced_game_status_or_none(game_status_ref)
    if game_status is None:
        return await message.reply(
            f"Не удалось загрузить новый статус: {game_status_ref}")
    kwargs['forced_code_verdict'] = code_verdict
    kwargs['game_status'] = game_status
    message.text = 'dr1'
    await process_code(message, manager, **kwargs)
Beispiel #5
0
async def process_bool_setting(message: types.Message, manager: Manager,
                               state_field: str, desc: str, command_name: str):
    """
    Updates bool settings from message in state.
    """
    text = utils.trim_command_name(message, command_name).strip()
    try:
        mode = utils.parse_bool(text)
        setattr(manager.state, state_field, mode)
        await message.reply(f"{desc} {utils.get_text_mode_status(mode)}")
    except ValueError:
        await message.reply(
            "Неверный режим использования, используйте 'on' или 'off'")
Beispiel #6
0
async def set_state_key_value(message: types.Message, manager: Manager,
                              **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    key, value = text.split()
    try:
        setattr(manager.state, key, value)
        await message.reply(
            f"Для переменной {key} установлено значение: {value}")
    except AttributeError:
        await message.reply(f"Переменной {key} не существует")
    except ValueError:
        await message.reply(
            f"{value} - недопустимое значение для переменной {key}")
    except TypeError:
        await message.reply(f"Не удалось присвоить значение переменной {key}")
Beispiel #7
0
async def process_tip(message: types.Message, manager: Manager, **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    if text.startswith('clean'):
        manager.state.reset('tip')
        await message.reply("Запиненная подсказка сброшена")
    elif text:
        try:
            sector, tip = text.split(maxsplit=1)
            sector = sector.strip()
        except Exception as e:
            await message.reply(
                "Неверный формат шаблона номера сектора '*' / 'all' / '' / 0-xx"
            )
            raise Exception(
                "Недостаточно данных для парсинга номера сектора и подсказки")
        if sector == '*' or sector == 'all' or sector == '':
            manager.state.set_tip_all_sectors(tip)
            await message.reply("Подсказка запинена на текущий уровень")
        else:
            try:
                sector_id = int(sector)
                if sector_id >= len(manager.state.koline.sectors):
                    await message.reply(
                        f"Сектора под номером: {sector_id} не существует")
                    raise Exception(
                        "В качестве номера сектора может быть: '*' / 'all' / '' / int_sector_id"
                    )
                if not manager.state.tip:
                    manager.state.tip = [[]] * len(
                        manager.state.koline.sectors)
                manager.state.set_tip_for_sector(tip, sector_id)
                await message.reply(
                    f"Подсказка запинена для сектора: {sector_id}")
            except Exception as e:
                await message.reply(
                    "Возникла ошибка, не удалось запиить подсказку")
                raise e
    else:
        tip_text = manager.state.tip
        if tip_text:
            await message.reply("Запиненная подсказка: {}".format(tip_text))
        else:
            await message.reply("Нет запиненной подсказки")
Beispiel #8
0
async def process_pattern(message: types.Message, manager: Manager, **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    # 'standar' is for stability to parse both standart and standard
    if 'standar' in text:
        manager.state.reset('code_pattern')
        await message.reply("Установлен стандартный шаблон кода")
    elif text:
        try:
            re.compile(text)
        except re.error:
            await message.reply(
                "'{}' не является регулярным выражением. Шаблон кода не установлен"
                .format(text))
        manager.state.code_pattern = text
        await message.reply("Шаблон кода установлен: {}".format(text))
    else:
        if manager.state.code_pattern:
            await message.reply("Шаблон кода: {}".format(
                manager.state.code_pattern))
        else:
            await message.reply("Шаблон кода: стандартный")
Beispiel #9
0
async def login(message: types.Message, manager: Manager, **kwargs):
    text = utils.trim_command_name(message, kwargs['command_name']).strip()
    login, passwd = text.split(maxsplit=1)
    login = login.strip()
    passwd = passwd.strip()
    await manager.http_client.log_in(login, passwd)