@SKD115

Как исправить, так чтобы работало?

Есть код который должен пока что удалять 2 последних сообщения бота при нажатия на callback кнопку.
def register2(message):
    bot.forward_message(CHATID, message.chat.id, message.message_id)
    regoprs = types.InlineKeyboardMarkup()
    yesa = (types.InlineKeyboardButton(text='Добавить', callback_data='yesa'))
    nota = (types.InlineKeyboardButton(text='Отклонить', callback_data='nota'))
    regoprs.row(yesa, nota)
    bot.send_message(message.chat.id, "Выберите действие", reply_markup=regoprs)

    @bot.callback_query_handler(func=lambda call: True)
    def callback_inline(call):
        if call.data == yesa:
            bot.delete_message(message.chat.id,message.message_id)
        elif call.data == nota:
            bot.delete_message(message.chat.id,message.message_id)
            bot.delete_message(message.chat.id, message.message_id)

Весь код данной части
spoiler
@bot.message_handler(commands=['reg'])
def register(message):
    reg_user = str(message.from_user.username)
    reg2 = bot.send_message(message.chat.id, "Следующим сообщением отправьте ФИО, Школу, Класс, Год рождения")
    bot.register_next_step_handler(reg2, register2)


def register2(message):
    bot.forward_message(CHATID, message.chat.id, message.message_id)
    regoprs = types.InlineKeyboardMarkup()
    yesa = (types.InlineKeyboardButton(text='Добавить', callback_data='yesa'))
    nota = (types.InlineKeyboardButton(text='Отклонить', callback_data='nota'))
    regoprs.row(yesa, nota)
    bot.send_message(message.chat.id, "Выберите действие", reply_markup=regoprs)

    @bot.callback_query_handler(func=lambda call: True)
    def callback_inline(call):
        if call.data == yesa:
            bot.delete_message(message.chat.id,message.message_id)
        elif call.data == nota:
            bot.delete_message(message.chat.id,message.message_id)
            bot.delete_message(message.chat.id, message.message_id)
  • Вопрос задан
  • 21 просмотр
Решения вопроса 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
  1. у тебя обработчик колбека находиться внутри функции. это так не работает. Все обработчики должны быть на одном уровне и нужном порядке.

  2. в колбек дату кнопки ты вставил строку, а проверить хочешь переменную. конечно будет ошибки потому что нет переменных yesa или nota.


def register2(message):
    bot.forward_message(CHATID, message.chat.id, message.message_id)
    regoprs = types.InlineKeyboardMarkup()
    yesa = (types.InlineKeyboardButton(text='Добавить', callback_data='yesa'))
    nota = (types.InlineKeyboardButton(text='Отклонить', callback_data='nota'))
    regoprs.row(yesa, nota)
    bot.send_message(message.chat.id, "Выберите действие", reply_markup=regoprs)

-   @bot.callback_query_handler(func=lambda call: True)
-   def callback_inline(call):
+@bot.callback_query_handler(func=lambda call: True)
+def callback_inline(call):
-   if call.data == yesa:
+   if call.data == "yesa":
        bot.delete_message(message.chat.id,message.message_id)
-   elif call.data == nota:
+   elif call.data == "nota":
        bot.delete_message(message.chat.id,message.message_id)
        bot.delete_message(message.chat.id, message.message_id)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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