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 ¯\_(ツ)_/¯
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. ''')
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
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, 'Администрация клана рассмотрела вашу заявку. К сожалению, на данный момент мы не готовы вас принять.' )
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> (если ты этого все еще не сделал).' )