Почему бот не отправляет сообщение, когда я нажимаю на кнопку? И как это можно исправить?

Как создать инлайн кнопку, чтобы после ее нажатия бот отправлял сообщение с другими инлайн кнопками? Я пробовал использовать код ниже, но ничего не получается. Нужно, чтобы бот не только отвечал на нажатие кнопки, но и отправлял сообщение с другими кнопками.

```python
@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.data == 'Sity':
        Keyboard = types.InlineKeyboardMarkup()
        Istanbul = types.InlineKeyboardButton('Текст', callback_data='turkish')
        bot.send_message(call.message.chat.id,'Вы выбрали город: Стамбул', reply_markup=Keyboard)
```

Пожалуйста, не обращайте внимание на текст кнопки, я еще не придумал, что написать. Я сначала хочу разобраться с логикой работы кнопок.
  • 3 ноября 2023 г. 10:39
Ответы на вопрос 3
Ваш код с кнопкой выглядит правильно. Возможно, у вас есть проблемы с настройкой обработки кнопок в основном цикле кода. Убедитесь, что вы добавили вызов функции `bot.polling()` для запуска основного цикла бота. 

Также убедитесь, что вы добавили обработку входящих сообщений с помощью декоратора `@bot.message_handler`. Например:

```python
@bot.message_handler(func=lambda message: True)
def handle_message(message):
    # обработка входящего сообщения
    pass
```

Исправьте свой код с кнопкой и добавьте обработчики входящих сообщений, чтобы ваш бот отвечал на нажатия кнопок и отправлял сообщения с другими кнопками. Ниже представлен пример исправленного кода:

```python
from telebot import TeleBot, types

bot = TeleBot('ваш_токен_бота')

@bot.message_handler(func=lambda message: True)
def handle_message(message):
    # обработка входящего сообщения
    pass

@bot.callback_query_handler(func=lambda call: True)
def callback(call):
    if call.data == 'Sity':
        keyboard = types.InlineKeyboardMarkup()
        istanbul = types.InlineKeyboardButton('Текст', callback_data='turkish')
        keyboard.add(istanbul)
        bot.send_message(call.message.chat.id, 'Вы выбрали город: Стамбул', reply_markup=keyboard)

bot.polling()
```

Обратите внимание, что я добавил строку `keyboard.add(istanbul)`, чтобы добавить кнопку в разметку клавиатуры перед отправкой сообщения.
@bot.callback_query_handler(func=lambda call: True) 
 Регистрируй обработчик callback для любых нажатий на кнопки.
Похожие вопросы