Esempio n. 1
0
async def member_handler(message: types.ChatMember):
    global logging
    try:
        db = SQL(db_path)
        text, keyboard = None, None
        user = db.get_user(message['chat']['id'])
        log_text, update, greeting = Auth.logs.chat_member(
            message, db.get_user(message['chat']['id']))
        if greeting:
            text = 'Добро пожаловать, снова'
            if user is None:
                await asyncio.sleep(1)
                text, keyboard = first_start(message)
                if message['chat']['type'] == 'channel':
                    text = None
        logging.append(log_text)
        db.update('users', message['chat']['id'], update) if update else None
        keyboard = keyboard if message['chat']['type'] != 'channel' else None
        await Auth.async_message(bot.send_message,
                                 id=message['chat']['id'],
                                 text=text,
                                 keyboard=keyboard)
        db.close()
    except IndexError and Exception:
        await Auth.dev.async_except(message)
Esempio n. 2
0
async def sender(message,
                 user,
                 text=None,
                 keyboard=None,
                 log_text=None,
                 **a_kwargs):
    global logging
    dump = True if 'Впервые' in str(log_text) else None
    task = a_kwargs['func'] if a_kwargs.get('func') else bot.send_message
    kwargs = {
        'log': log_text,
        'text': text,
        'user': user,
        'message': message,
        'keyboard': keyboard,
        **a_kwargs
    }
    response, log_text, update = await Auth.async_message(task, **kwargs)
    if log_text is not None:
        logging.append(log_text)
        if dump:
            head, _, _ = Auth.logs.header(Auth.get_me)
            await Auth.async_message(bot.send_message,
                                     id=Auth.logs.dump_chat_id,
                                     text=f'{head}{log_text}')
    if update:
        db = SQL(db_path)
        db.update('users', user['id'], update)
        db.close()
    return response
Esempio n. 3
0
async def red_messages(message: types.Message):
    try:
        db = SQL(db_path)
        text, keyboard = None, None
        user = db.get_user(message['chat']['id'])
        if user and message['migrate_to_chat_id']:
            db.update('users', user['id'], {
                'username': '******',
                'reaction': '🅾️'
            })
        await sender(message, user, text, keyboard, log_text=True)
        db.close()
    except IndexError and Exception:
        await Auth.dev.async_except(message)
Esempio n. 4
0
def google_files():
    while True:
        try:
            db = SQL(db_path)
            files = drive_client.files(parents=main_folder)
            for file in files:
                image = db.get_image_by_id(file['id'])
                if image:
                    if image['last_update'] < file['modifiedTime']:
                        drive_client.download_file(file_id=file['id'],
                                                   file_path=image['path'])
                        db.update('images', file['id'],
                                  {'last_update': file['modifiedTime']})
            sleep(5)
        except IndexError and Exception:
            Auth.dev.thread_except()
Esempio n. 5
0
def google_update():
    global google_users_ids
    while True:
        try:
            sleep(2)
            db = SQL(db_path)
            users = db.get_updates()
            if len(users) > 0:
                client = gspread.service_account('google.json')
                worksheet = client.open('UNITED USERS').worksheet(
                    os.environ['folder'])
                for user in users:
                    del user['updates']
                    if str(user['id']) in google_users_ids:
                        text = 'обновлен'
                        row = google_users_ids.index(str(user['id'])) + 1
                    else:
                        text = 'добавлен'
                        row = len(google_users_ids) + 1
                        google_users_ids.append(str(user['id']))
                    google_row = f'A{row}:{ascii_uppercase[len(user)-1]}{row}'

                    try:
                        user_range = worksheet.range(google_row)
                    except IndexError and Exception as error:
                        if 'exceeds grid limits' in str(error):
                            worksheet.add_rows(1000)
                            user_range = worksheet.range(google_row)
                            sleep(5)
                        else:
                            raise error

                    for index, value, col_type in zip(range(len(user)),
                                                      user.values(),
                                                      users_columns):
                        value = Auth.time(
                            value, form='iso',
                            sep='_') if '<DATE>' in col_type else value
                        value = 'None' if value is None else value
                        user_range[index].value = value
                    worksheet.update_cells(user_range)
                    db.update('users', user['id'], {'updates': 0}, True)
                    Auth.dev.printer(f"Пользователь {text} {user['id']}")
                    sleep(1)
        except IndexError and Exception:
            Auth.dev.thread_except()
Esempio n. 6
0
async def editor(call, user, text, keyboard, log_text=None):
    global logging
    await bot.answer_callback_query(call['id'])
    kwargs = {
        'log': log_text,
        'call': call,
        'text': text,
        'user': user,
        'keyboard': keyboard
    }
    response, log_text, update = await Auth.async_message(
        bot.edit_message_text, **kwargs)
    if log_text is not None:
        logging.append(log_text)
    if update:
        db = SQL(db_path)
        db.update('users', user['id'], update)
        db.close()
    return response