Ejemplo n.º 1
0
    def get_email(self, message):
        """
        Проверяем и добавляем/обновляем email пользователя
        """
        pattern = compile(
            '(^|\s)[-a-zA-Z0-9_.]+@([-a-zA-Z0-9]+\.)+[A-Za-z]{2,6}(\s|$)')
        is_valid = pattern.match(message.text)

        # Проверка нового email, который ввёл пользователь
        if db.get_email(message.chat.id) == message.text:
            self.bot.send_message(
                message.chat.id,
                func.message_wrapper({
                    'headline':
                    'Ввод email',
                    'text':
                    'Вы ввели email-адрес, который используете в данный момент!\n\r\n\rНапишите ещё раз:'
                }),
                parse_mode="HTML")
        elif is_valid and len(message.text) > 7 and len(message.text) < 40:
            db.set_state(message.chat.id, State.EMAIL.value)
            db.update_email(message.chat.id, message.text)
            self.get_choice_menu(message)
        else:
            self.bot.send_message(
                message.chat.id,
                func.message_wrapper({
                    'headline':
                    'Ввод email',
                    'text':
                    'Вы ввели некорректный формат email-адреса!\n\r\n\rНапишите ещё раз:'
                }),
                parse_mode="HTML")
Ejemplo n.º 2
0
    def get_store_input(self, message, markup):
        """
        Возвращаем магазины канцтоваров
        """
        db.set_state(message.chat.id, State.STORES.value)

        self.bot.send_photo(message.chat.id,
                            open('images/other/miet.jpg', 'rb'),
                            caption="Схема расположения корпусов «МИЭТ»",
                            reply_markup=markup)

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'headline': 'Магазины канцтоваров',
                                  'text': 'На данный момент действует только один магазин канцторваров, в котором Вы также можете распечатать нужные документы!'}),
                              reply_markup=markup,
                              parse_mode="HTML")

        self.bot.send_photo(message.chat.id,
                            open("images/stores/1.jpg", "rb"),
                            caption="На фотографии представлен магазин канцелярских товаров")

        self.bot.send_message(message.chat.id,
                              text=func.message_wrapper({
                                  'text': '<b>Местоположение:</b> 3 корпус, 2 этаж, около главной лестницы\r\n'
                                          '<b>Возможности:</b> можно приобрести канцелярские товары или распечатать документы\r\n'
                                          '<b>Время работы:</b> пн. — пт.: 10:00 — 15:00'
                              }),
                              reply_markup=func.get_keyboard_inline_main(),
                              parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 3
0
    def get_department(self, message, markup = None):
        """
        Проверяем и возвращаем информацию о кафедре института
        """
        db_d = sqlite3.connect(self.db_path + 'departments.db')

        cursor = db_d.cursor()
        department_name = [message.text.upper()]

        cursor.execute("SELECT * FROM departments WHERE cipher = ?", department_name)
        data = cursor.fetchone()

        if data is None:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск кафедры',
                                      'text': 'К сожалению, кафедры с таким названием нет в базе данных!'
                                  }),
                                  reply_markup=func.get_keyboard_inline_departments(),
                                  parse_mode="HTML")
        else:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск кафедры',
                                      'text': '<b>Кафедра:</b> ' + data[1] + '\r\n'
                                      '<b>Заведующий кафедрой:</b> ' + data[3] + '\r\n'
                                      '<b>Аудитория:</b> ' + data[5] + '\r\n'
                                      '<b>Телефон:</b> ' + data[4] + '\r\n'
                                      '<b>E-mail:</b> ' + data[6] + '\r\n'
                                      '<b>Подробнее:</b> ' + data[7] + '\r\n'
                                  }),
                                  reply_markup=func.get_keyboard_inline_departments(),
                                  parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 4
0
    def get_subdivision(self, message):
        """
        Проверяем и возвращаем информацию о подразделении института
        """
        db_s = sqlite3.connect(self.db_path + 'subdivisions.db')

        cursor = db_s.cursor()
        subdivision_name = [message.text.upper()]

        cursor.execute("SELECT * FROM subdivisions WHERE cipher = ?", subdivision_name)
        data = cursor.fetchone()

        if data is None:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск подразделения',
                                      'text': 'К сожалению, подразделений с таким названием нет в базе данных!'
                                  }),
                                  reply_markup=func.get_keyboard_inline_subdivisions(),
                                  parse_mode="HTML")
        else:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск подразделения',
                                      'text': '<b>Подразделение:</b> ' + data[1] + '\r\n'
                                              '<b>Руководитель:</b> ' + data[3] + '\r\n'
                                              '<b>Аудитория:</b> ' + data[5] + '\r\n'
                                              '<b>Телефон:</b> ' + data[4] + '\r\n'
                                              '<b>Email:</b> ' + data[6] + '\r\n'
                                              '<b>Подробнее:</b> ' + data[7]
                                  }),
                                  reply_markup=func.get_keyboard_inline_subdivisions(),
                                  parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 5
0
    def get_teacher(self, message):
        db_t = sqlite3.connect(self.db_path + 'teachers.db')
        cursor = db_t.cursor()

        teacher_name = message.text.lower().title()
        cursor.execute("SELECT * FROM teachers WHERE name LIKE ?", ('%{}%'.format(teacher_name),))
        data = cursor.fetchall()

        cursor.execute("SELECT COUNT(*) FROM teachers WHERE name LIKE ?", ('%{}%'.format(teacher_name),))
        count = cursor.fetchone()

        i = 0
        for row in data:
            name = row[1] if row[1] is not None else 'не указано'
            department = row[2] if row[2] is not None else 'не указано'
            occupation = row[3] if row[3] is not None else 'не указана'
            place = row[4] if row[4] is not None else 'не указана'
            phone = row[5] if row[5] is not None else 'не указан'
            mail = row[6] if row[6] is not None else 'не указан'
            link = row[7] if row[7] is not None else 'не указано'
            photo = row[8]

            if photo is not None:
                try:
                    self.bot.send_photo(chat_id=message.chat.id, photo=photo)
                except:
                    photo = None

            self.bot.send_message(chat_id=message.chat.id,
                              text=func.message_wrapper({
                                  'text': '<b>ФИО:</b> ' + name + '\r\n'
                                          '<b>Подразделение:</b> ' + department + '\r\n'
                                          '<b>Должность:</b> ' + occupation + '\r\n'
                                          '<b>Аудитория:</b> ' + place + '\r\n'
                                          '<b>Телефон:</b> ' + phone + '\r\n'
                                          '<b>E-mail:</b> ' + mail + '\r\n'
                                          '<b>Подробнее:</b> ' + link
                              }),
                              reply_markup=func.get_keyboard_inline_teachers() if i == (count[0] - 1) else False,
                              parse_mode="HTML")

            i += 1


        if count[0] == 0:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск преподавателя',
                                      'text': 'К сожалению, преподавателя с такими инициалами нет в базе данных!'
                                  }),
                                  reply_markup=func.get_keyboard_inline_teachers(),
                                  parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 6
0
    def get_first_buffet(self, message):
        """
        Возвращает первый слайд галереи
        """
        row = db.get_buffets(int(message.text), 1)
        next_button_text = message.text + "_2"

        markup = types.ReplyKeyboardRemove()
        keyboard = types.InlineKeyboardMarkup()
        button_menu = types.InlineKeyboardButton(text="Перейти в меню", callback_data="menu")
        button_next = types.InlineKeyboardButton(text=">", callback_data=next_button_text)
        keyboard.add(button_menu, button_next)

        current_photo = 'images/buffets/' + str(row[2]) + '.jpg'
        self.bot.send_photo(message.chat.id,
                            open(current_photo, 'rb'),
                            reply_markup=markup,
                            caption=row[4])

        self.bot.send_message(chat_id=message.chat.id,
                              text=func.message_wrapper({
                              'text': '<b>Местоположение:</b> ' + row[4] + '.\r\n'
                                      '<b>График работы:</b> ' + row[5] + '.'
                              }),
                              reply_markup=keyboard,
                              parse_mode="HTML")

        db.set_state(message.chat.id, State.BUFFETS_GALLERY.value)
Ejemplo n.º 7
0
    def get_buffet_input(self, message, markup):
        """
        Возвращаем сообщение с просьбой о вводе корпуса, в котором он сейчас находится
        """
        db.set_state(message.chat.id, State.BUFFETS.value)

        self.bot.send_photo(message.chat.id,
                            open('images/other/miet.jpg', 'rb'),
                            caption="Схема расположения корпусов «МИЭТ»",
                            reply_markup=markup)

        # Добавляем основную клавиатуру
        markup = types.ReplyKeyboardMarkup()
        item_1 = types.KeyboardButton('1')
        item_2 = types.KeyboardButton('2')
        item_3 = types.KeyboardButton('3')
        item_4 = types.KeyboardButton('4')
        item_5 = types.KeyboardButton('5')
        markup.row(item_1, item_2, item_3, item_4, item_5)

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'headline': 'Поиск столовой или буфета',
                                  'text': 'Выберите номер корпуса, в котором Вы находитесь сейчас или поблизости:'}),
                              reply_markup=markup,
                              parse_mode="HTML")
Ejemplo n.º 8
0
    def get_menu(self, message):
        """
        Обрабатываем и возвращаем сообщение с основным меню
        """
        db.set_state(message.chat.id, State.MENU.value)

        # Добавляем клавиатуру с выбором пунктов меню
        markup = types.ReplyKeyboardMarkup()
        item_1 = types.KeyboardButton('🗓')
        item_2 = types.KeyboardButton('👩‍💼👨‍💼')
        item_3 = types.KeyboardButton('🚪')
        item_4 = types.KeyboardButton('🗄')
        item_5 = types.KeyboardButton('🍲🌮')
        item_6 = types.KeyboardButton('🖨📐')
        item_7 = types.KeyboardButton('📞')
        item_8 = types.KeyboardButton('📋')
        markup.row(item_1, item_2, item_3, item_4)
        markup.row(item_5, item_6, item_7, item_8)

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'headline': 'Главное меню',
                                  'text': '1. 🗓 посмотреть расписание @Schedule_MIET_bot;\r\n'
                                  '2. 👩‍💼👨‍💼 узнать информацию о преподавателе;\r\n'
                                  '3. 🚪 найти кафедру;\r\n'
                                  '4. 🗄 найти подразделение;\r\n'
                                  '5. 🍲🌮 найти столовую или буфет поблизости;\r\n'
                                  '6. 🖨📐 найти магазин канцтоваров или киоск, где можно распечатать документы;\r\n'
                                  '7. 📞 сообщить о проблеме или задать вопрос;\r\n'
                                  '8. 📋 справка по работе с ботом /help.\r\n\r\n'
                                  'Выберите подходящее действие:'
                              }),
                              reply_markup=markup,
                              parse_mode="HTML")
Ejemplo n.º 9
0
    def get_choice_menu(self, message):
        """
        Обрабатываем и возвращаем меню выбора
        """
        db.set_state(message.chat.id, str(State.CHOICE.value))

        # Добавляем встроенную клавиатуру
        keyboard = types.InlineKeyboardMarkup()
        button_ask = types.InlineKeyboardButton(text="Задать вопрос",
                                                callback_data="question")
        button_issue = types.InlineKeyboardButton(text="Сообщить о проблеме",
                                                  callback_data="issue")
        button_change = types.InlineKeyboardButton(text="Изменить email",
                                                   callback_data="change")

        # Добавляем кнопки
        keyboard.add(button_ask)
        keyboard.add(button_issue)
        keyboard.add(button_change)

        # Отправляем сообщение
        self.bot.send_message(
            message.chat.id,
            func.message_wrapper({
                'headline':
                'Меню выбора',
                'text':
                'Здесь Вы можете задать нам интересующий вопрос или сообщить нам о возникшей проблеме при работе с @mietINFO!\n\rВыберите подходящее действие:'
            }),
            reply_markup=keyboard,
            parse_mode="HTML")
Ejemplo n.º 10
0
 def get_choice_error(self, message):
     """
     Возвращаем ошибку выбора, если пользователь не нажал на кнопку
     """
     self.bot.send_message(message.chat.id,
                           func.message_wrapper({
                               'headline': 'Выбор действия',
                               'text': 'Вы не выбрали ни одного из предложенных действий!\r\n'
                                       'Нажмите на одну из предложенных кнопок:'}),
                           parse_mode="HTML")
Ejemplo n.º 11
0
    def get_feedback(self, message, markup):
        """
        Возвращаем информацию об обратной связи
        """
        db.set_state(message.chat.id, State.FEEDBACK.value)

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'headline': 'Обратная связь',
                                  'text': 'Вы можете сообщить нам о возникшей у Вас проблеме или задать вопрос касательно работы этого бота!'}),
                              reply_markup=markup,
                              parse_mode="HTML")

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'text': 'Для этого воспользуйтесь другим нашим ботом: @mietINFO_feedback_bot'}),
                              reply_markup=func.get_keyboard_inline_main(),
                              parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 12
0
    def get_start(self, message):
        """
        Обрабатываем и возвращаем стартовое сообщение
        """
        db.set_state(message.chat.id, State.START.value)

        self.bot.send_message(message.chat.id,
                         func.message_wrapper({
                             'headline': 'Начало работы',
                             'text': 'Нажмите /menu, чтобы выбрать подходящее действие.\n\rЕсли у Вас возникнут вопросы, введите команду /help'}),
                         reply_markup=func.get_keyboard_inline_main(),
                         parse_mode="HTML")
Ejemplo n.º 13
0
    def get_teacher_input(self, message, markup = None):
        """
        Возвращаем сообщение с просьбой о вводе данных преподавателя
        """
        db.set_state(message.chat.id, State.TEACHERS.value)

        if markup is not None:
            self.bot.send_message(message.chat.id,
                                  func.message_wrapper({
                                      'headline': 'Поиск преподавателя',
                                      'text': 'Введите фамилию, ФИ или ФИО преподавателя:'
                                  }),
                                  reply_markup=markup,
                                  parse_mode="HTML")
        else:
            self.bot.send_message(message.chat.id,
                                  func.message_wrapper({
                                      'headline': 'Поиск преподавателя',
                                      'text': 'Введите фамилию, ФИ или ФИО преподавателя:'
                                  }),
                                  parse_mode="HTML")
Ejemplo n.º 14
0
 def get_email_input(self, message):
     """
     Обрабатываем и возвращаем стартовое сообщение
     """
     self.bot.send_message(
         message.chat.id,
         func.message_wrapper({
             'headline':
             'Ввод email',
             'text':
             'Для того, чтобы мы могли Вам ответить, введите Ваш email:'
         }),
         parse_mode="HTML")
Ejemplo n.º 15
0
 def get_choice(self, call):
     """
     Возвращаем одно из выбранных действий меню
     """
     if call.data == "question":
         db.set_state(call.message.chat.id, State.QUESTION.value)
         self.bot.edit_message_text(
             chat_id=call.message.chat.id,
             message_id=call.message.message_id,
             text=func.message_wrapper({
                 'headline':
                 'Ввод вопроса',
                 'text':
                 'Напишите вопрос, который Вас интересует (15-300 символов):'
             }),
             parse_mode="HTML")
     elif call.data == "issue":
         db.set_state(call.message.chat.id, State.ISSUE.value)
         self.bot.edit_message_text(
             chat_id=call.message.chat.id,
             message_id=call.message.message_id,
             text=func.message_wrapper({
                 'headline':
                 'Ввод проблемы',
                 'text':
                 'Опишите проблему, которая у Вас возникла (15-300 символов):'
             }),
             parse_mode="HTML")
     elif call.data == "change":
         db.set_state(call.message.chat.id, State.EMAIL.value)
         self.bot.edit_message_text(chat_id=call.message.chat.id,
                                    message_id=call.message.message_id,
                                    text=func.message_wrapper({
                                        'headline':
                                        'Ввод email',
                                        'text':
                                        'Введите новый email:'
                                    }),
                                    parse_mode="HTML")
Ejemplo n.º 16
0
    def get_schedule(self, message, markup):
        """
        Возвращаем сообщение с информацией о расписании занятий
        """
        db.set_state(message.chat.id, State.SCHEDULE.value)

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'headline': 'Расписание занятий',
                                  'text': 'Вы можете узнать расписание занятий для своей группы двумя способами:'}),
                              reply_markup=markup,
                              parse_mode="HTML")

        self.bot.send_message(message.chat.id,
                              func.message_wrapper({
                                  'text': '1. воспользоваться сторонним ботом: @Schedule_MIET_bot\n\r'
                                          '2. посмотреть на сайте МИЭТа: http://miet.ru/schedule'
                              }),
                             reply_markup=func.get_keyboard_inline_main(),
                              parse_mode="HTML")

        db.set_state(message.chat.id, State.FINISH.value)
Ejemplo n.º 17
0
    def get_buffets_gallery(self, call):
        """
        Возвращаем новый слайд галереи или меню выбора
        """
        if call.data == "menu":
            self.get_menu(call.message)
        else:
            self.bot.delete_message(chat_id=call.message.chat.id,
                               message_id=call.message.message_id - 1)

            self.bot.delete_message(chat_id=call.message.chat.id,
                               message_id=call.message.message_id)

            key = call.data.split("_")
            prev_button_text = key[0] + "_" + str(int(key[1]) - 1)
            next_button_text = key[0] + "_" + str(int(key[1]) + 1)

            row = db.get_buffets(int(key[0]), int(key[1]))

            markup = types.ReplyKeyboardRemove()
            keyboard = types.InlineKeyboardMarkup()
            if prev_button_text:
                button_prev = types.InlineKeyboardButton(text="<", callback_data=prev_button_text)

            if next_button_text:
                button_next = types.InlineKeyboardButton(text=">", callback_data=next_button_text)

            button_menu = types.InlineKeyboardButton(text="Перейти в меню", callback_data="menu")

            if int(key[1]) > 1 and int(key[1]) < (db.get_buffets_count(int(key[0]))[0] - 1):
                keyboard.add(button_prev, button_menu, button_next)
            elif int(key[1]) == 1:
                keyboard.add(button_menu, button_next)
            elif int(key[1]) == (db.get_buffets_count(int(key[0]))[0] - 1):
                keyboard.add(button_prev, button_menu)
            else:
                keyboard.add(button_menu)

            current_photo = 'images/buffets/' + str(row[2]) + '.jpg'
            self.bot.send_photo(call.message.chat.id,
                           open(current_photo, 'rb'),
                           reply_markup=markup,
                           caption=row[3])

            self.bot.send_message(chat_id=call.message.chat.id,
                             text=func.message_wrapper({
                                 'text': '<b>Местоположение:</b> ' + row[4] + '\r\n'
                                         '<b>График работы:</b> ' + row[5] + ''
                             }),
                             reply_markup=keyboard,
                             parse_mode="HTML")
Ejemplo n.º 18
0
    def get_department_input(self, message, markup = None):
        """
        Возвращаем сообщение с просьбой о вводе аббревиатуры кафедры
        """
        db.set_state(message.chat.id, State.DEPARTMENTS.value)
        db_d = sqlite3.connect(self.db_path + 'departments.db')

        cursor = db_d.cursor()
        cursor.execute("SELECT * FROM departments")
        data = cursor.fetchall()

        # Формируем список доступных кафедр
        i = 1
        subdivisions = ''
        for row in data:
            subdivisions += str(i) + '. ' + row[1] + '\r\n'
            i += 1


        if markup is not None:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск кафедры',
                                      'text': 'В данный момент добавлены следующие кафедры МИЭТа:\r\n\r\n' + subdivisions + '\r\n'
                                                                                                                            'Введите аббревиатуру кафедры, которая указана выше (Например, ВМ-2):'
                                  }),
                                  reply_markup=markup,
                                  parse_mode="HTML")
        else:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск кафедры',
                                      'text': 'В данный момент добавлены следующие кафедры МИЭТа:\r\n\r\n' + subdivisions + '\r\n'
                                                                                                                            'Введите аббревиатуру кафедры, которая указана выше (Например, ВМ-2):'
                                  }),
                                  parse_mode="HTML")
Ejemplo n.º 19
0
    def get_subdivision_input(self, message, markup = None):
        """
        Возвращаем сообщение с просьбой о вводе аббревиатуры подразделения
        """
        db.set_state(message.chat.id, State.SUBDIVISION.value)
        db_s = sqlite3.connect(self.db_path + 'subdivisions.db')

        cursor = db_s.cursor()
        cursor.execute("SELECT * FROM subdivisions")
        data = cursor.fetchall()

        # Формируем список доступных подразделений
        i = 1
        subdivisions = ''
        for row in data:
            subdivisions += str(i) + '. ' + row[1] + '\r\n'
            i += 1


        if markup is not None:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск подразделения',
                                      'text': 'В данный момент добавлены следующие подразделения МИЭТа:\r\n\r\n' + subdivisions + '\r\n'
                                                                                                                                  'Введите аббревиатуру подразделения, которая указана выше (Например, ДОСУП):'
                                  }),
                                  reply_markup=markup,
                                  parse_mode="HTML")
        else:
            self.bot.send_message(chat_id=message.chat.id,
                                  text=func.message_wrapper({
                                      'headline': 'Поиск подразделения',
                                      'text': 'В данный момент добавлены следующие подразделения МИЭТа:\r\n\r\n' + subdivisions + '\r\n'
                                                                                                                                  'Введите аббревиатуру подразделения, которая указана выше (Например, ДОСУП):'
                                  }),
                                  parse_mode="HTML")
Ejemplo n.º 20
0
    def get_help(self, message):
        """
        Обрабатываем и возвращаем сообщение помощи (справки)
        """
        db.set_state(message.chat.id, State.HELP.value)

        # Добавляем встроенную клавиатуру с кнопкой меню
        keyboard = types.InlineKeyboardMarkup()
        button_menu = types.InlineKeyboardButton(text="Перейти в меню", callback_data="menu")
        keyboard.add(button_menu)

        self.bot.send_message(message.chat.id,
                         func.message_wrapper({
                             'headline': 'Список доступных команд',
                             'text': '<b>Основные команды:</b>\r\n'
                                     '/start - стартовое сообщение\r\n'
                                     '/menu - главное меню\r\n'
                                     '/help - справка по работе с ботом.\r\n\r\n'
                                     '<b>Дополнительные команды:</b>\r\n'
                                     '/teacher - поиск преподавателя\r\n'
                                     '/department - поиск кафедры\r\n'
                                     '/subdivision - поиск подразделения.'}),
                         reply_markup=keyboard,
                         parse_mode="HTML")
Ejemplo n.º 21
0
    def get_answer(self, message):
        """
        Отправляем вопрос или проблему администратору на почту
        """
        if len(message.text) >= 15 and len(message.text) <= 300:
            if message.from_user.first_name and message.from_user.last_name:
                user_name = message.from_user.first_name + " " + message.from_user.last_name
            elif message.from_user.first_name:
                user_name = message.from_user.first_name
            else:
                user_name = message.from_user.username

            if db.get_state(message.chat.id) == State.QUESTION.value:
                self.bot.send_message(
                    message.chat.id,
                    func.message_wrapper({
                        'headline':
                        'Вопрос принят на рассмотрение',
                        'text':
                        'Мы обязательно пришлём Вам ответ на заданный вопрос!'
                    }),
                    parse_mode="HTML")

                # Отправляем вопрос пользователя на почту администратора
                mail.send(
                    user_name, db.get_email(message.chat.id),
                    "Новый вопрос от " + user_name,
                    "Пользователь " + user_name +
                    " написал следующий вопрос:\r\n" + message.text)
            else:
                self.bot.send_message(
                    message.chat.id,
                    func.message_wrapper({
                        'headline':
                        'Проблема принята на рассмотрение',
                        'text':
                        'Мы обязательно проанализируем и пришлём Вам ответ!'
                    }),
                    parse_mode="HTML")

                # Отправляем проблему пользователя на почту администратора
                mail.send(
                    user_name, db.get_email(message.chat.id),
                    user_name + " сообщил о возникшей проблеме",
                    "Пользователь " + user_name +
                    " описал следующую проблему, с которой он столкнулся:\r\n"
                    + message.text)

            # Возвращаем пользователя в меню
            self.get_choice_menu(message)
        else:
            if db.get_state(message.chat.id) == State.QUESTION.value:
                self.bot.send_message(
                    message.chat.id,
                    func.message_wrapper({
                        'headline':
                        'Ошибка',
                        'text':
                        'Вы ввели некорректный формат вопроса!\n\rДлина вопроса меньше 15 или больше 300 символов!\n\rНапишите вопрос ещё раз:'
                    }),
                    parse_mode="HTML")
            else:
                self.bot.send_message(
                    message.chat.id,
                    func.message_wrapper({
                        'headline':
                        'Ошибка',
                        'text':
                        'Вы ввели некорректный формат проблемы!\n\rДлина проблемы меньше 15 или больше 300 символов!\n\rНапишите проблему ещё раз:'
                    }),
                    parse_mode="HTML")