Пример #1
0
def getUserData(discord_id: str):
    """
    Find user in airtable else return None
    """
    users = airtable.search("Discord", discord_id)

    if len(users) == 0:
        return None
    return users[0]  # if multiple users are returned, just grab the first one ¯\_(ツ)_/¯
Пример #2
0
def command_start(message):
    username = message.chat.username
    chat_id = message.from_user.id
    if username != None:
        try:
            usr_data = airtable.search('chat_id', str(chat_id))
            logging.info('Got some user data from airtable: ' + usr_data)
        except Exception:
            usr_data = airtable.search('chat_id', str(chat_id))  #try again

            if usr_data == []:  # if user hasn't used the "/start" command yet:
                try:
                    airtable.insert({'chat_id': str(chat_id)})  # save user id
                    logging.info('New user with id ' + str(chat_id) +
                                 ' was added to database')
                except Exception:
                    airtable.insert({'chat_id':
                                     str(chat_id)})  # try to save again
                    logging.info('2nd try. New user with id ' + str(chat_id) +
                                 ' was added to database')
                bot.send_message(
                    chat_id,
                    '''Привет, страж! Я - фрейм Xbox-клана Guardian.FM VEGA.
Моей задачей является автоматизация рутинных действий внутри клана. Вот что ты можешь сделать: '''
                )
                command_help(message)  # show the new user the help page
            else:
                cln_data = usr_data[0].get('fields')
                if cln_data.get('xboxlive') == None:
                    cln_data.update({'xboxlive': 'страж'})
                else:
                    pass
                bot.send_message(
                    chat_id, "И снова привет, " + cln_data.get('xboxlive') +
                    ". Чем могу помочь?")
        except Exception:
            bot.send_message(chat_id, err_message)
    else:
        bot.send_message(
            chat_id,
            '''❌❌❌ Ой-ей, похоже, у тебя не установлен телеграм-тэг. В таком случае, администрация клана не сможет тебя найти и пригласить в наш телеграм-чат. Что же делать делать?
Ты можешь установить тэг, <a href="https://telegramzy.ru/nik-v-telegramm/">как это сделать - описано в этой инструкции</a>. После этого ты сможешь заполнить анкету соискателя, написав /register.
''')
Пример #3
0
def find_match_by_discord_id(discord_id: str) -> (User, User):
    """Find match by discord id, so we can build a discord bot that matches people.

    discord_id should be of the form: "JaneDoe#1234"
    """
    users = airtable.search("Discord", discord_id)

    if len(users) == 0:
        raise DiscordUserNotFound("Could not find any users with that id.")
    user = users[0]  # if multiple users are returned, just grab the first one ¯\_(ツ)_/¯
    match = find_match(user)

    return user, match
Пример #4
0
def callback_worker(call):
    usr_data = []
    result = call.message.text.split('\n')
    print(result)
    firstline = result[0].split('@')
    nickname = firstline[1]
    print(nickname)
    try:
        usr_data = airtable.search('tg', nickname)
        print(usr_data)
    except:
        pass
    if call.data == "aprove":
        if usr_data == []:
            try:
                usr_data = airtable.search('tg', nickname)
            except:
                bot.send_message(call.message.chat.id,
                                 'Все сломалось, жмякни кнопку еще разок!')
        else:
            target_chat_id = usr_data[0].get('fields').get('chat_id')
            print(target_chat_id)
            msg = '\n<b>Пользователь принят в клан, не забудьте одобрить заявку в <a href="https://www.bungie.net/ru/ClanV2?groupid=2135560">Bungie.net</a>!</b>'
            bot.edit_message_text(chat_id=call.message.chat.id,
                                  message_id=call.message.message_id,
                                  text=call.message.text + msg,
                                  reply_markup=None)
            bot.send_message(
                target_chat_id,
                'Администрация клана рассмотрела вашу заявку. Добро пожаловать! Для координации и общения у нас есть <a href="https://t.me/joinchat/T-VtrgW1KbFcWfoo">чат</a>.'
            )
    elif call.data == "decline":
        bot.send_message(call.message.chat.id,
                         'Было принято решение отказать соискателю.')
        bot.send_message(
            target_chat_id,
            'Администрация клана рассмотрела вашу заявку. К сожалению, на данный момент мы не готовы вас принять.'
        )
Пример #5
0
def get_about(message):
    if message.text == '/reset':
        reset(message)
    elif message.text == '/help':
        command_help(message)
    else:
        about = message.text
        try:
            airtable.update_by_field('chat_id', str(message.from_user.id),
                                     {'about': about})
            user_data = airtable.search('chat_id', str(message.from_user.id))
        except Exception:
            bot.send_message(message.from_user.id, err_message)
            get_about(message)
        global clean_data
        clean_data = user_data[0].get('fields')
        msg = 'Telegram: @' + clean_data.get(
            'tg') + '\nXBL: ' + clean_data.get(
                'xboxlive'
            ) + '\nИмя: ' + clean_data.get('name') + '\nВозраст: ' + str(
                clean_data.get('age')) + '\nО себе: ' + clean_data.get('about')
        #keyboard block
        keyboard_aprove = telebot.types.InlineKeyboardMarkup(row_width=1)
        key_aprove = telebot.types.InlineKeyboardButton(text='Да',
                                                        callback_data='aprove')
        keyboard_aprove.add(key_aprove)
        key_decline = telebot.types.InlineKeyboardButton(
            text='Нет', callback_data='decline')
        keyboard_aprove.add(key_decline)

        bot.send_message(admin_chat, text=msg, reply_markup=keyboard_aprove)
        bot.send_message(
            message.from_user.id,
            'Если ты где-то что-то заполнил неправильно - не переживай. Ты можешь просто ввести /reset и снова заполнить анкету соискателя. Главное - без фанатизма.'
        )
        bot.send_message(
            message.from_user.id,
            'Если же все ок - нет причин волноваться, твоя заявка была передана на рассмотрение администрации. А пока можешь отправить заявку на вступление в <a href="https://www.bungie.net/ru/ClanV2?groupid=2135560">наш клан в Bungie.net</a> (если ты этого все еще не сделал).'
        )