Не отправляется сообщение при запросе
Я хотел сделать, чтобы при ответе "Да" в моем коде отправлялось сообщение, но оно не отправляется. Батник (сервер, через которого я запускаю бота) ошибки не выдает:
import telebot
import config
from telebot import types
client = telebot.TeleBot(config.token['token'])
@client.message_handler(commands = ['info', 'get_info'])
def user_info(message):
markup_inline = types.InlineKeyboardMarkup()
types_yes = types.InlineKeyboardButton(text = 'да', callback_data = 'yes')
types_no = types.InlineKeyboardButton(text = 'нет', callback_data = 'no')
markup_inline.add(types_yes, types_no)
client.send_message(message.chat.id, 'Здравствуйте, вас привествует бот Зэт, желаете увидеть прайс лист?',
reply_markup = markup_inline
)
@client.callback_query_handler(func = lambda call: True)
def answer(call):
if call.data == 'yes':
markup_inline2 = types.InlineKeyboardMarkup(resize_keyboard = True)
item_tg = types.KeyboardButton('Telegram')
item_ds = types.KeyboardButton('Disscord')
item_vk = types.KeyboardButton('VK')
item_s = types.KeyboardButton('Special')
markup_inline2.add(item_tg, item_vk, item_ds, item_s)
client.send_message(call.message.chat.id, 'Telegram - 50$; VK - недоступно; Disscord - недоступно. P.S:Для спец. заказов сюда - @s1renhead',
reply_markup = markup_inline2
)
client.polling(none_stop = True, interval = 0)
Ответы (2 шт):
Автор решения: Serg Bocharov
→ Ссылка
Вы ловите CallbackQuery
@client.callback_query_handler(func = lambda call: True)
def answer(call):
поэтому получать данные надо оттуда же. Т.е. брать не message.chat.id, а call.message.chat.id. Для вашего кода:
client.send_message(call.message.chat.id, 'Telegram - 50$; VK - недоступно; Disscord - недоступно. P.S:Для спец. заказов сюда - @s1renhead',
reply_markup = markup_inline2
)
UPDATE (не верный тип кнопок): Измените тип кнопок в этом коде:
markup_inline2 = types.InlineKeyboardMarkup(resize_keyboard = True)
item_tg = types.KeyboardButton('Telegram')
item_ds = types.KeyboardButton('Disscord')
item_vk = types.KeyboardButton('VK')
item_s = types.KeyboardButton('Special')
на этот:
item_ds = types.InlineKeyboardButton('Disscord', callback_data='Disscord')
item_vk = types.InlineKeyboardButton('VK', callback_data='VK')
item_s = types.InlineKeyboardButton('Special', callback_data='Special')
markup_inline2.row(item_tg, item_vk, item_ds, item_s)
Автор решения: shalor1k
→ Ссылка
Попробуйте сделать так:
@client.message_handler(content_types= ["text"])
def answer(message):
if message.text == 'yes':
#далее ваш код
#и всё же вернуть message.chat.id