Beispiel #1
0
async def sql(mes: Message):
    if mes.from_user.id != ADMIN:
        return
    mode = int(re.search(r'/sql (.)', mes.text).group(1))
    poll = mes.text[7:]
    await mes.answer(await db_req(mes, mode, poll))
    uc.loading()
Beispiel #2
0
async def reg_as(mes: Message):
    if mes.from_user.id != ADMIN:
        return
    if mes.reply_to_message is None:
        await mes.answer('Error')
        return
    if not uc.select_id(mes.reply_to_message.from_user.id):
        await mes.answer('Not in database')
        return

    mes.db.query('UPDATE users SET role = ? WHERE id = ?',
                 [mes.text[8:], mes.reply_to_message.from_user.id])
    uc.loading()
Beispiel #3
0
async def gs(mes: Message):
    #journal_log(mes)
    if mes.chat.type != 'private':
        return
    if not uc.select(**{'id': mes.from_user.id, 'guild_tag': 'AT'}):
        await mes.answer('Доступ запрещён.')
        return
    if len(mes.text) < 5:
        await mes.answer('/gs [id] [id] [id] ...')
        return

    if len(mes.text) == 5 and mes.text[4:].startswith('0'):
        mes.db.query('UPDATE users SET trade = ? WHERE id = ?',
                     ['', mes.from_user.id])
        await mes.answer('Правила очищены!')
    else:
        mes.db.query('UPDATE users SET trade = ? WHERE id = ?',
                     [mes.text[4:], mes.from_user.id])
        await mes.answer('Правила установлены!')
    uc.loading()
Beispiel #4
0
async def hero_analyz(mes: Message):
    # Сбор данных
    parse = re.search(HERO_PARSE, mes.text)
    for emblem in list(CASTLE_EMBLEMS):
        if parse.group('castle') == emblem:
            castle = CASTLE_EMBLEMS.get(emblem)
            break
        else:
            castle = 'ERROR'

    if uc.select_id(mes.from_user.id):
        mes.db.query(
            'UPDATE users SET username = ?, nickname = ?, lvl = ?, class = ?, guild_tag = ?, castle = ? WHERE id = ?',
            [
                mes.from_user.username,
                parse.group('nickname'),
                int(parse.group('lvl')),
                parse.group('class'),
                parse.group('guild_tag'), castle, mes.from_user.id
            ])
    else:
        mes.db.query(
            'INSERT INTO users (id, username, nickname, lvl, class, guild_tag, castle) values (?,?,?,?,?,?,?)',
            [
                mes.from_user.id, mes.from_user.username,
                parse.group('nickname'),
                parse.group('lvl'),
                parse.group('class'),
                parse.group('guild_tag'), castle
            ])

    # Автоназначение Командира и Админа по умолчанию
    if mes.chat.id == ADMIN:
        mes.db.query('UPDATE users SET role = 2 WHERE id = ?', [ADMIN])
    elif mes.chat.id == GUILD_MASTER:
        mes.db.query('UPDATE users SET role = 3 WHERE id = ?', [GUILD_MASTER])

    # Update cash
    uc.loading()
async def new_loc(mes: Message):
    if not datetime.datetime.now() - mes.forward_date < datetime.timedelta(
            days=2):
        return

    # Определение это локация или альянс и расфасовка в словарь
    result = re.search(NEW_LOC_INPUT_PARSE, mes.text).groupdict()
    result = {k: v for k, v in result.items() if v is not None}
    code = result.get("loc_code", result.get("head_code"))

    # Определение есть ли данная точка в БД
    if mes.db.check('SELECT * FROM loc WHERE code = ?', [code]):
        l = await mes.answer('Данная локация уже есть в базе.')
        await asyncio.sleep(2)
        await bot.delete_message(mes.chat.id, mes.message_id)
        await asyncio.sleep(8)
        await l.delete()
        return

    name = result.get("loc_name", result.get("head_name"))
    lvl = int(result.get("loc_lvl", "99"))
    type = LOC_TYPES.get(name.split(' ')[-1], '🎪 ')

    check = mes.db.check('SELECT code from loc WHERE name = ? and lvl = ?',
                         [name, lvl])
    if check:
        if check[0].startswith('NoneCode'):
            mes.db.query('UPDATE loc SET code = ? WHERE name = ? and lvl = ?',
                         [code, name, lvl])
        else:
            mes.db.query('INSERT INTO loc (name, lvl, code) VALUES (?,?,?)',
                         [name, lvl, code])
    else:
        mes.db.query('INSERT INTO loc (name, lvl, code) VALUES (?,?,?)',
                     [name, lvl, code])

    # Награда за нахождение
    top = mes.db.check('SELECT top_loc FROM users WHERE id = ?',
                       [mes.from_user.id])
    if top:
        mes.db.query('UPDATE users SET top_loc = top_loc + 1 WHERE id = ?',
                     [mes.from_user.id])
        uc.loading()

    # Оповещение о новой локации
    answer = type + name + ("" if lvl == 99 else " lvl. " + str(lvl))
    text = f'Обнаружена новая локация!\n\n<b>{answer}</b>\n  └ <code>{code}</code>\n\nНашедший: @{mes.from_user.username}'
    chats = mes.db.checkall('SELECT id FROM chats WHERE new_loc_ntf = 1', [])

    if not chats:
        await mes.answer('Новая локация! {}'.format(
            'Зачислен +1 балл! (/top)'
            if top else 'Балл не засчитан, требуется регистрация.'))
        return

    for chat in chats:
        try:
            await bot.send_message(chat[0], text)
        except:
            pass
        await asyncio.sleep(0.3)
    await mes.answer(
        'Новая локация! {}'.format('Зачислен +1 балл!' if top else
                                   'Балл не засчитан, требуется регистрация.'))