@nurs948

Почему бот не отправляет сообщение?

import telebot
from telebot import types

API_TOKEN = 'lorem_ipsum'

bot = telebot.TeleBot(API_TOKEN)
goods = ('./goods.json')


@bot.message_handler(commands=['help', 'start'])
def send_welcome(message):
    bot.reply_to(message, """\
    Добро пожаловать в наш магазин детской одежды!\
    """)
    markup = telebot.types.InlineKeyboardMarkup(row_width=1)
    button1 = telebot.types.InlineKeyboardButton(text=' Контакты', 
    callback_data='contacts')
    button2 = telebot.types.InlineKeyboardButton(text=' Адреса', 
    callback_data='address')
    button3 = telebot.types.InlineKeyboardButton(text=' Поиск товара по номеру', 
    callback_data='search')
    markup.add(button1, button2, button3)
    bot.send_message(chat_id=message.chat.id, 
    text='Выберите одну из команд ниже',reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == 'contacts':
        print('press button "contacts"')
    if call.data == 'address':
        print('press button "address"')
    if call.data == 'search':
        def contacts(message):
            bot.send_message(chat_id = message.chat_id, 
            text='Напишите номер товара',callback_data='good_id')
        print('press button "search"')


bot.polling()


Все работает отлично, однако после старта когда нажимаю на копку "button3" ничего не происходит, а бот должен по идее отправит пользователю запрос. В чем может быть ошибка? дебагер ничего не выводит. Обработка callbackdata работает, но функция под ним не работает
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer (Node.js/Angular)
Потому что в этом блоке:
if call.data == 'search':
        def contacts(message):
            bot.send_message(chat_id = message.chat_id, 
            text='Напишите номер товара',callback_data='good_id')
        print('press button "search"')

Вы просто объявляете функцию contacts, которая не вызывается, вынесите функцию за пределы callback_inline и вызывайте ее как contacts(message) либо вообще уберите определение функции
Ответ написан
Ваш ответ на вопрос

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

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