Проблема с питоновской библиотекой telebot
Мне нужно, чтобы в зависимости от нажатой кнопки, шла какая-то определенная ветка событий. Но, когда нажимается кнопка "наличие товаров" (функция nal
), бот не воспринимает сообщения пользователя, а в ветке "перевести рубли в юани" (функция RU
), воспринимает кнопку как введённый пользователем текст.
Подскажите, пожалуйста, что в коде нужно поправить?
import telebot;
from telebot import types
bot = telebot.TeleBot('ТУТ ТОКЕН')
bot.set_webhook()
@bot.message_handler(content_types=['text'])
def main(message):
if message.text=='/start':
keyboard = types.InlineKeyboardMarkup(); #наша клавиатура
key_val = types.InlineKeyboardButton(text='Перевести валюту', callback_data='val'); #кнопка «Да»
keyboard.add(key_val); #добавляем кнопку в клавиатуру
key_nal= types.InlineKeyboardButton(text='Проверить наличие товара', callback_data='nal');
keyboard.add(key_nal);
bot.send_message(message.from_user.id,'Выбери, что надо сделать:', reply_markup=keyboard)
if message.text == "/help":
bot.send_message(message.from_user.id, "Напиши число которое хочешь перевести из юаней в рубли или название товара товара через слэш(например /adik), чтобы проверить его наличие")
def val(message):
keyboard = types.InlineKeyboardMarkup();
key_RU = types.InlineKeyboardButton(text='Перевести рубли в юани', callback_data='RU');
keyboard.add(key_RU);
key_UR= types.InlineKeyboardButton(text='Перевести юани в рубли', callback_data='UR');
keyboard.add(key_UR);
bot.send_message(message.chat.id,'Что во что?', reply_markup=keyboard)
def RU(message):
if message.text.isdigit():
bot.send_message(message.from_user.id, str(int(message.text)*N)+' CNY')
else:
bot.send_message(message.chat.id, "Число пиши")
def UR(message):
if message.text.isdigit():
bot.send_message(message.from_user.id, str(int(message.text)/N)+' CNY')
else:
bot.send_message(message.chat.id, "Число пиши")
@bot.message_handler(content_types=['text'])
def nal(message):
if message.text in a:
bot.send_message(message.chat.id, 'Товар '+message.text+" есть в наличие.\n"+ "Размеры: "+ b[a.index(message.text)]+"\n"+"Цена: "+c[a.index(message.text)]+" CNY")
else:
bot.send_message(message.chat.id, "Товара нет в наличии. Перепроверьте, провильно ли вы ввели имя товара")
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call: types.CallbackQuery):
if call.data =='val':
val(call.message)
if call.data =='nal':
bot.send_message(call.message.chat.id, 'А теперь выбери какой товар посмотреть')
nal(call.message)
if call.data =='RU':
RU(call.message)
if call.data =='UR':
UR(call.message)
bot.polling(none_stop=True, interval=0)
Источник: Stack Overflow на русском