Для того, чтобы ожидать нажатие кнопки, можно использовать функционал InlineKeyboardMarkup вместо ReplyKeyboardMarkup.
InlineKeyboardMarkup позволяет создавать кнопки, которые могут быть нажатыми, и при нажатии на них бот получает обновление callback_query, которое содержит информацию о нажатой кнопке и чате, в котором произошло нажатие.
Вот как можно изменить ваш код, чтобы использовать InlineKeyboardMarkup:
import telebot
from telebot import types
import config
bot = telebot.TeleBot(config.token)
ADMINS = [1111111]
doska = []
@bot.message_handler(commands=['start'])
def start(message):
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Доска Почета", callback_data="doska")
btn2 = types.InlineKeyboardButton("❓ Задать вопрос", callback_data="question")
markup.add(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я бот инженерной школы".format(message.from_user), reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def callback_query(call):
if call.data == "doska":
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Назад", callback_data="back")
btn2 = types.InlineKeyboardButton("Редактировать", callback_data="edit")
markup.add(btn1)
if call.message.chat.id in ADMINS:
markup.add(btn2)
bot.send_message(call.message.chat.id, text="test text",reply_markup=markup)
elif call.data == "back":
markup = types.InlineKeyboardMarkup()
btn1 = types.InlineKeyboardButton("Доска Почета", callback_data="doska")
btn2 = types.InlineKeyboardButton("❓ Задать вопрос", callback_data="question")
markup.add(btn1, btn2)
bot.send_message(call.message.chat.id, text="Вы вернулись в главное меню", reply_markup=markup)
if __name__ == '__main__':
print("bot start work")
bot.infinity_polling()