def get_lang(message): if not (message.text == 'ru' or message.text == 'en'): bot.send_message(message.chat.id, "Language can be only en or ru!") else: dbworker.set_data(message.chat.id, 'lang', message.text) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_LANG_ET: bot.send_message(message.chat.id, '''So, there is your output file!''') bot.send_document( message.chat.id, Caesar.encrypt_text( dbworker.get_data(message.chat.id, 'file'), dbworker.get_data(message.chat.id, 'shift'), dbworker.get_data(message.chat.id, 'lang')).encode('UTF-8')) dbworker.clear_data(message.chat.id) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_LANG_DT: bot.send_message(message.chat.id, '''So, there is your output file!''') bot.send_document( message.chat.id, Caesar.decrypt_text( dbworker.get_data(message.chat.id, 'file'), dbworker.get_data(message.chat.id, 'shift'), dbworker.get_data(message.chat.id, 'lang')).encode('UTF-8')) dbworker.clear_data(message.chat.id) dbworker.set_state(message.chat.id, dbconfiguration.CAESAR, bot)
def sending_photo_for_age(message): # Те, що це фотографія, ми вже перевірили в хендлері, ніяких додаткових дій не потрібно. bot.send_message( message.chat.id, "Чудово! Почекай трішки, я проаналізую фотографію та дам відповідь)") # Дізнаємось відносний шлях до фото file_info = bot.get_file(message.photo[len(message.photo) - 1].file_id) # Повна URL-адреса фотографії url_photo = 'https://api.telegram.org/file/bot' + config.token + '/' + file_info.file_path image = apiface.ClImage(url=url_photo) # Отримуємо json-відповідь проаналізованого фото response = apiface.model.predict([image]) # Витягуємо вік з відповіді try: age = response["outputs"][0]["data"]["regions"][0]["data"]["face"][ "age_appearance"]["concepts"][0]["name"] # print(f'Людині на фото приблизно {age}') bot.send_message(message.chat.id, f'Людині на фото приблизно {age}') except: bot.send_message(message.chat.id, 'Кумедно, але на фото не людина 🧐') # Переводимо користувача в нормальний стан dbworker.set_data(message.chat.id, config.States.S_START.value)
def handle_start_help(message): if (dbworker.get_data(str(message.chat.id) + 'name')): bot.send_message( message.chat.id, f"Привіт, {dbworker.get_data(str(message.chat.id) + 'name')}!") else: bot.send_message(message.chat.id, "Привіт! Як я можу до тебе звертатись?") dbworker.set_data(message.chat.id, config.States.S_ENTER_NAME.value)
def user_entering_question(message): try: # Отримуємо відповідь від API r = requests.get(url=config.yes_or_no_api) # Декодуємо JSON response = r.json() except: bot.send_message(message.chat.id, 'Нажаль не вдалось отримати відповідь 😔') return # Надсилаємо відповідь if (response["answer"] == "yes"): bot.send_message(message.chat.id, 'Так') else: bot.send_message(message.chat.id, 'Ні') bot.send_video_note(message.chat.id, response["image"]) dbworker.set_data(message.chat.id, config.States.S_START.value)
def get_shift(message): try: shift = int(message.text) if shift <= 0: raise ValueError except ValueError: bot.send_message(message.chat.id, "Secret key must be natural number!") else: dbworker.set_data(message.chat.id, 'shift', shift) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_SHIFT_ENCRYPT: bot.send_message(message.chat.id, '''So, there is your output file!''') bot.send_document( message.chat.id, Caesar.encrypt(dbworker.get_data(message.chat.id, 'file'), dbworker.get_data(message.chat.id, 'shift'))) dbworker.set_state(message.chat.id, dbconfiguration.CAESAR, bot) dbworker.clear_data(message.chat.id) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_SHIFT_DECRYPT: bot.send_message(message.chat.id, '''So, there is your output file!''') bot.send_document( message.chat.id, Caesar.decrypt(dbworker.get_data(message.chat.id, 'file'), dbworker.get_data(message.chat.id, 'shift'))) dbworker.set_state(message.chat.id, dbconfiguration.CAESAR, bot) dbworker.clear_data(message.chat.id) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_SHIFT_ET: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_LANG_ET, bot) bot.send_message(message.chat.id, '''Input language (ru or en)!''') if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_SHIFT_DT: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_LANG_DT, bot) bot.send_message(message.chat.id, '''Input language (ru or en)!''')
def get_file(message): raw = bot.get_file(message.document.file_id) downloaded_file = bot.download_file(raw.file_path) dbworker.set_data(message.chat.id, 'file', downloaded_file) bot.send_message(message.chat.id, '''Success (get file)!''') if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_FILE_ENCRYPT: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_SHIFT_ENCRYPT, bot) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_FILE_DECRYPT: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_SHIFT_DECRYPT, bot) bot.send_message( message.chat.id, '''Send me any natural number (this is your secret key).''')
def get_file_txt(message): if message.document.mime_type == 'text/plain': raw = bot.get_file(message.document.file_id) downloaded_file = bot.download_file(raw.file_path) dbworker.set_data(message.chat.id, 'file', downloaded_file.decode('UTF-8')) bot.send_message(message.chat.id, '''Success (get txt file)!''') if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_FILE_ET: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_SHIFT_ET, bot) if dbworker.get_current_state( message.chat.id) == dbconfiguration.CAESAR_FILE_DT: dbworker.set_state(message.chat.id, dbconfiguration.CAESAR_SHIFT_DT, bot) bot.send_message( message.chat.id, '''Send me any natural number (this is your secret key).''') else: bot.send_message(message.chat.id, 'Document type must be txt!')
def funcname(message): bot.send_message(message.chat.id, 'Для того, щоб я визначив вік, закинь мені фото на якому одна людина.\n' \ + 'Якщо на фото буде декілька людей то я визначу вік випадково для когось одного.') # Переводимо користувача в стан надсилання фотографії для визначення віку dbworker.set_data(message.chat.id, config.States.S_SEND_PIC_FOR_AGE.value)
def user_entering_name(message): # В випадку з іменем не будемо нічого перевіряти bot.send_message(message.chat.id, "Чудове ім'я, запам'ятаю!") dbworker.set_data(str(message.chat.id) + 'name', message.text) dbworker.set_data(message.chat.id, config.States.S_START.value)
def set_name(message): bot.send_message(message.chat.id, "Тож, як тебе звати?") dbworker.set_data(message.chat.id, config.States.S_ENTER_NAME.value)
def yes_or_no(message): # Запитуємо користувача на яке питання потрібно відповісти так або ні bot.send_message(message.chat.id, 'Введіть питання на яке потрібно відповісти так або ні') # Переводимо користувача в стан введення запитання dbworker.set_data(message.chat.id, config.States.S_ENTER_QUESTION.value)