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)
Exemple #2
0
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)
Exemple #3
0
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)
Exemple #4
0
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!')
Exemple #8
0
def funcname(message):
    bot.send_message(message.chat.id, 'Для того, щоб я визначив вік, закинь мені фото на якому одна людина.\n' \
                     + 'Якщо на фото буде декілька людей то я визначу вік випадково для когось одного.')
    # Переводимо користувача в стан надсилання фотографії для визначення віку
    dbworker.set_data(message.chat.id, config.States.S_SEND_PIC_FOR_AGE.value)
Exemple #9
0
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)
Exemple #10
0
def set_name(message):
    bot.send_message(message.chat.id, "Тож, як тебе звати?")
    dbworker.set_data(message.chat.id, config.States.S_ENTER_NAME.value)
Exemple #11
0
def yes_or_no(message):
    # Запитуємо користувача на яке питання потрібно відповісти так або ні
    bot.send_message(message.chat.id,
                     'Введіть питання на яке потрібно відповісти так або ні')
    # Переводимо користувача в стан введення запитання
    dbworker.set_data(message.chat.id, config.States.S_ENTER_QUESTION.value)