Кнопки в телеграмм боте
Не получается доавить кнопки во второй функции "ans"
import telebot
from telebot import types
from time import sleep
bot = telebot.TeleBot("MY_TOKEN")
@bot.message_handler(commands=["start"])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Ассортимент магазина", callback_data= "assort")
btn2 = types.InlineKeyboardButton("Заказ товаров", callback_data= "zakaz")
btn3 = types.InlineKeyboardButton("Связь с менеджером", callback_data= "svaz")
markup.row(btn1)
markup.row(btn2, btn3)
bot.send_message(message.chat.id, f"Привет, {message.from_user.first_name}, что вас интересует?", reply_markup= markup)
@bot.callback_query_handler(func=lambda call: True)
def ans(callback):#Кнопки
if callback.data == "assort":
bot.send_message(callback.message.chat.id, "Вот такой ассортимент")
elif callback.data == "zakaz":
bot.send_message(callback.message.chat.id, "Заказывайте у нас товар")
elif callback.data == "svaz":
msg = bot.send_message(callback.message.chat.id, "Напишите свое сообщение")
bot.register_next_step_handler(msg, nes)
def nes(message):
name = message.text
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Ответить на сообщение", callback_data= "otv")
btn2 = types.InlineKeyboardButton("Внести в ЧС", callback_data= "cs")
markup.add(btn1, btn2)
bot.send_message(MY_ID, f"Новое сообщение от пользователя:\n-{name}\n ID пользователя: {message.chat.id}", reply_markup= markup)
bot.send_message(message.chat.id, "Ожидайте ответа менеджера")
@bot.callback_query_handler(func=lambda call: True)
def ans(call):
if call.data == "otv":
msg = bot.send_message("MY_ID", "Вот такой ассортимент")
bot.register_next_step_handler(msg, otve)
elif call.data == "cs":
msg = bot.send_message("MY_ID", "Заказывайте у нас товар")
bot.register_next_step_handler(msg, cs)
def otve(message):
nm = message.text
bot.send_message(message.chat.id, f"Ответ от менеджера:\n{nm}")
def cs(message):
nm = message.text
bot.send_message(message.chat.id, f"Ответ от менеджера:\n{nm}")
bot.polling(none_stop= True)
Ответы (1 шт):
Автор решения: Nick
→ Ссылка
Не совсем понятен вопрос, но у тебя первая функция ans перехватывает вторую. Для решения этой проблемы укажи условие в хендлере, которое будет их делить.
@bot.message_handler(commands=["start"])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Ассортимент магазина", callback_data= "start_assort")
btn2 = types.InlineKeyboardButton("Заказ товаров", callback_data= "start_zakaz")
btn3 = types.InlineKeyboardButton("Связь с менеджером", callback_data= "start_svaz")
@bot.callback_query_handler(func=lambda call: 'start_' in call.data)
def start_ans(callback):#Кнопки
...
А тут отдельно для админа
def nes(message):
name = message.text
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Ответить на сообщение", callback_data= "admin_otv")
btn2 = types.InlineKeyboardButton("Внести в ЧС", callback_data= "admin_cs")
markup.add(btn1, btn2)
bot.send_message(MY_ID, f"Новое сообщение от пользователя:\n-{name}\n ID пользователя: {message.chat.id}", reply_markup= markup)
bot.send_message(message.chat.id, "Ожидайте ответа менеджера")
@bot.callback_query_handler(func=lambda call: 'admin_' in call.data)
def ans(call):
if call.data == "admin_otv":
msg = bot.send_message("MY_ID", "Вот такой ассортимент")
bot.register_next_step_handler(msg, otve)
elif call.data == "admin_cs":
msg = bot.send_message("MY_ID", "Заказывайте у нас товар")
bot.register_next_step_handler(msg, cs)