Beispiel #1
0
async def antiflood(msg):
    if msg.get('chat') and msg['chat']['type'].endswith('group') and msg.get(
            'from'):
        adm = await is_admin(msg['chat']['id'], msg['from']['id'])
        if not adm['user'] and adm['bot']:
            # Delete old rows.
            cursor.execute(
                'DELETE FROM antiflood WHERE chat_id = ? AND unix_time < ?',
                (msg['chat']['id'], int(time.time()) - 5))
            conn.commit()

            # Insert antiflood row.
            cursor.execute(
                'INSERT INTO antiflood (chat_id, user_id, unix_time) VALUES (?,?,?)',
                (msg['chat']['id'], msg['from']['id'], int(time.time())))
            conn.commit()

            # Get total rows count.
            cursor.execute(
                'SELECT COUNT(*) FROM antiflood WHERE chat_id = ? AND user_id = ?',
                (msg['chat']['id'], msg['from']['id']))
            msgs = cursor.fetchone()[0]

            if msgs == 5:
                await bot.sendMessage(msg['chat']['id'], 'Flood!')
                return True
Beispiel #2
0
def get_welcome(chat_id):
    cursor.execute(
        'SELECT welcome, welcome_enabled FROM chats WHERE chat_id = (?)',
        (chat_id, ))
    try:
        return cursor.fetchone()
    except IndexError:
        return None
Beispiel #3
0
def add_warns(chat_id, user_id, number):
    cursor.execute('SELECT * FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id))
    if cursor.fetchone():
        cursor.execute('UPDATE user_warns SET count = count + ? WHERE chat_id = ? AND user_id = ?',
                       (number, chat_id, user_id))
        conn.commit()
    else:
        cursor.execute('INSERT INTO user_warns (user_id, chat_id, count) VALUES (?,?,?)', (user_id, chat_id, number))
        conn.commit()
    return True
Beispiel #4
0
    def __init__(self, chat_id):
        # Supergoup and group IDs are negative.
        if chat_id < 0:
            cursor.execute('SELECT chat_lang FROM chats WHERE chat_id = ?',
                           (chat_id, ))
            try:
                self.language = cursor.fetchone()[0]
            except (IndexError, TypeError):
                self.language = 'en'
        else:
            cursor.execute('SELECT chat_lang FROM users WHERE user_id = ?',
                           (chat_id, ))
            try:
                self.language = cursor.fetchone()[0]
            except (IndexError, TypeError):
                self.language = 'en'
        if self.language not in langs:
            self.language = 'en'

        self.strings = strings[self.language]
Beispiel #5
0
def remove_user(chat_id, user_id):
    cursor.execute('SELECT antipedro_list FROM chats WHERE chat_id = ?',
                   (chat_id, ))
    user_list = json.loads(cursor.fetchone()[0])
    for num, user in enumerate(user_list):
        if user == user_id:
            del user_list[num]
    cursor.execute('UPDATE chats SET antipedro_list = ? WHERE chat_id = ?', (
        json.dumps(user_list),
        chat_id,
    ))
    conn.commit()
Beispiel #6
0
def add_user(chat_id, user_id):
    cursor.execute('SELECT anti_list FROM chats WHERE chat_id = ?',
                   (chat_id, ))
    user_list = json.loads(cursor.fetchone()[0])
    if user_id not in user_list:
        user_list.append(user_id)
        cursor.execute('UPDATE chats SET anti_list = ? WHERE chat_id = ?', (
            json.dumps(user_list),
            chat_id,
        ))
        conn.commit()
    return True
Beispiel #7
0
async def is_admin(chat_id, user_id, reply_id=None):
    if int(chat_id) < 0:  # Groups and supergoups IDs.
        dic = {}
        cursor.execute('SELECT cached_admins FROM chats WHERE chat_id = ?',
                       (int(chat_id), ))
        adms = cursor.fetchone()[0]
        if adms:
            cached_admins = json.loads(adms)
        else:
            cached_admins = {'expires': 0}

        if cached_admins['expires'] > time.time():
            adm_id = cached_admins['admins_list']
        else:
            adms = await bot.getChatAdministrators(chat_id)
            adm_id = []
            for ids in adms:
                adm_id.append(ids['user']['id'])
            cursor.execute(
                'UPDATE chats SET cached_admins = ? WHERE chat_id = ?',
                (json.dumps(
                    dict(admins_list=adm_id,
                         expires=int(time.time()) + 1200)), chat_id))
            conn.commit()

        if user_id in adm_id or user_id in sudoers:
            dic['user'] = True
        else:
            dic['user'] = False

        if reply_id in adm_id:
            dic['reply'] = True
        else:
            dic['reply'] = False

        if bot_id in adm_id:
            dic['bot'] = True
        else:
            dic['bot'] = False

    else:  # User IDs.
        dic = dict(user=False, reply=False, bot=False)

    return dic
Beispiel #8
0
def get_warns_limit(chat_id):
    cursor.execute('SELECT warns_limit FROM chats WHERE chat_id = ?', (chat_id,))
    return cursor.fetchone()[0]
Beispiel #9
0
def get_warns(chat_id, user_id):
    cursor.execute('SELECT count FROM user_warns WHERE chat_id = ? AND user_id = ?', (chat_id, user_id))
    return cursor.fetchone()[0]
Beispiel #10
0
def get_antipedro(chat_id):
    cursor.execute(
        'SELECT antipedro_enabled, antipedro_list FROM chats WHERE chat_id = ?',
        (chat_id, ))
    return cursor.fetchone()
Beispiel #11
0
def get_rules(chat_id):
    cursor.execute('SELECT rules FROM chats WHERE chat_id = (?)', (chat_id, ))
    try:
        return cursor.fetchone()[0]
    except IndexError:
        return None