Кнопки в телеграмм боте

Не получается доавить кнопки во второй функции "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)
→ Ссылка