Как решить проблему с двойным callbackdata в библиотеке telebot?

Как избежать ситуации, когда вторая кнопка возвращает значение первой в боте для сбора обратной связи? Первая кнопка работает должным образом, в то время как вторая возвращает данные из первой. К сведению: во вторую кнопку добавлен текст "test" и изменен текст, отображаемый после сбора информации. Как можно настроить код так, чтобы сообщение с второй кнопки выводилось правильно? Код доступен по ссылке: https://dpaste.org/524oF.
  • 26 февраля 2024 г. 20:38
Ответы на вопрос 2
Для решения проблемы с двойным callbackdata в библиотеке telebot, необходимо уникализировать значения callback_data для каждой кнопки. 

В вашем коде, у вас одинаковое значение callback_data для обеих кнопок - '1'. Из-за этого при нажатии на вторую кнопку она возвращает значение первой кнопки. Чтобы исправить это, вы можете изменить значения callback_data для кнопок на уникальные значения, например '1' и '2'.

Пример исправленного кода:

```python
import telebot
from telebot import types

bot = telebot.TeleBot('token')

@bot.message_handler(commands=['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    item1 = types.InlineKeyboardButton("Button 1", callback_data='1') # уникальное значение callback_data для первой кнопки
    item2 = types.InlineKeyboardButton("Button 2", callback_data='2') # уникальное значение callback_data для второй кнопки
    markup.add(item1, item2)
    bot.send_message(message.chat.id, "Choose a button:", reply_markup=markup)
    
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == '1':
        bot.send_message(call.message.chat.id, "You clicked button 1")
    elif call.data == '2':
        bot.send_message(call.message.chat.id, "You clicked button 2")

bot.polling()
```

После такой правки, каждая кнопка теперь будет возвращать уникальное значение и проблема с двойным callback_data будет решена.
Потому что callback_data ( sendinfo ) одной кнопки является началом callback_data ( sendinfo2 ) второй кнопки 
Обрабатывайте эти две кнопки в одном месте, да и весь сбор данных делайте не через миллион состояний, достаточно через одно.
Либо перемещайте второй обработчик выше первого, либо обрабатывайте всё в одном
Похожие вопросы