@FLYven

Кто может помочь с телеграм ботом на библиотеке telebot?

У меня тут 2 бага небольших
в комментариях кода написал, что именно не работает
elif call.data == 'one':
            markup = types.InlineKeyboardMarkup()
            inc_button = types.InlineKeyboardButton('Подать заявку', callback_data='reg')
            markup.add(one_button)
            bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.id, text=message_inc, parse_mode='Markdown', reply_markup=markup)
            sub = "Тема письма"

        @bot.callback_query_handler(func=lambda call: call.data == 'reg')
        def start_registration_main(call):
            start_registration()

#
#В этом моменте регистрация, т.е. функция start_registration вызывается
#Если нажать на кнопку Подать заявку и написать любое сообщение
#Понятное дело регистрация должна запускаться по нажатию кнопки
#

def start_registration():

    @bot.message_handler(func=lambda message: True)
    def handle_message(message):
        chat_id = message.chat.id
        bot.send_message(chat_id, "Введите свои ФИО:")
        bot.register_next_step_handler(message, process_name_step)

    def process_name_step(message):
        chat_id = message.chat.id
        global name
        name = message.text
        bot.send_message(chat_id, "Введите свою почту:")
        bot.register_next_step_handler(message, process_uemail_step)

    def process_uemail_step(message):
        chat_id = message.chat.id
        global uemail
        uemail = message.text
        bot.send_message(chat_id, "Введите свой номер телефона:")
        bot.register_next_step_handler(message, process_phone_step)

    def process_phone_step(message):
        chat_id = message.chat.id
        global phone
        phone = message.text
        bot.send_message(chat_id, "Если у вас есть примечание, напишите.")
        bot.register_next_step_handler(message, process_note_step)

    def process_note_step(message):
        chat_id = message.chat.id
        reg_markup = types.InlineKeyboardMarkup(row_width=1)
        yes_butt = types.InlineKeyboardButton('Отправить заявку', callback_data='yes')
        reg_markup.add(yes_butt)
        global note
        note = message.text
        response = f"Заявка в {sub}.\nПожалуйста, проверьте свои данные\n\nФИО: {name}\nПочта: {uemail}\nНомер телефона: {phone}\nПримечание: {note}"
        bot.send_message(chat_id, response, reply_markup=reg_markup)
#
#
#В данном моменте не работает отправка письма при нажатии кнопки "Отправить заявку"
#Кнопка никак не реагирует не отправляет заявку
#
#
    @bot.callback_query_handler(func=lambda call: call.data == 'yes')
    def send_email_callback(call):
        email = "********@yandex.ru"
        password = "***"
        recipient = "******@gmail.com"

        msg = MIMEMultipart()
        msg['From'] = email
        msg['To'] = recipient
        msg['Subject'] = f"Новая заявка в {sub}"

        # add body to email
        body = f"Новая заявка в {sub}: \n\nФИО: {name}\nПочта: {uemail}\nНомер телефона: {phone}\nПримечание: {note}"
        msg.attach(MIMEText(body))

        # send the email
        with smtplib.SMTP_SSL('smtp.yandex.ru', 465) as mailserver:
            mailserver.set_debuglevel(True)
            mailserver.login(email, password)
            mailserver.sendmail(email, recipient, msg.as_string())

        print("Письмо успешно отправлено")
        bot.send_message(call.message.chat.id, "Ваша заявка отправлена, мы с вами свяжемся в ближайшее время")


Я надеюсь на вашу помощь, уже больше 20 часов не могу исправить данные проблемы.
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
SoreMix
@SoreMix
yellow
Почему бы не удалить это чудо
@bot.callback_query_handler(func=lambda call: call.data == 'reg')
        def start_registration_main(call):
            start_registration()


И не сделать
@bot.callback_query_handler(func=lambda call: call.data == 'reg')
def start_registration(call):


И вообще, нужно вынести все функции из других функций. Не объявляйте новые функции внутри других. Ради чего? Поэтому и не работает ничего
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы