@bot.message_handler(commands=['start'])
def handle_text1(message):
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row("Каталог", "Акция")
user_markup.row("Корзина", "Доставка")
bot.send_message(message.from_user.id, "Здравствуй, {0}!".format(message.from_user.first_name),reply_markup=user_markup)
bot.send_message(message.from_user.id, "Выберете раздел", reply_markup=user_markup)
Class Keyboard
def __init__(self, bot):
self.bot = bot
def main_menu(self,message):
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row("Каталог", "Акция")
user_markup.row("Корзина", "Доставка")
user_markup.row("/start")
self.bot.send_message(message.from_user.id, "Выберете раздел", reply_markup=user_markup)
def katalog_menu(self, message):
catdog_markup = telebot.types.ReplyKeyboardMarkup(True, False)
catdog_markup.row("Корм для собак", "Корм для кошек")
catdog_markup.row("Вернуться назад")
catdog_markup.row("Главная")
self.bot.send_message(message.from_user.id, "Выберете раздел", reply_markup=catdog_markup)
def katalog_dog(self, message):
dog_markup = telebot.types.ReplyKeyboardMarkup(True, False)
dog_markup.row("Для щенков и юниоров")
dog_markup.row("Для взрослых", "Для пожилых")
dog_markup.row("Вернуться назад")
dog_markup.row("Главная")
self.bot.send_message(message.from_user.id, "Выберете раздел", reply_markup=dog_markup)
@bot.message_handler(func=lambda mess: 'Вернуться назад' == mess.text, content_types=['text'])
def handle_text(message):
user_position = Keyboard
if user_position(keyboard.katalog_menu(message)):
keyboard.main_menu(message)
elif user_position(keyboard.katalog_dog(message)):
keyboard.katalog_menu(message)
if 'Назад' in message.text:
await message.answer("Ты вернулся в главное меню", reply_markup=kb.markup_home)
@dp.message_handler(state=Update_account.UpdateFirstName)
async def answer_first_name(message: types.Message, state: FSMContext):
text = message.text
if text == "Назад":
await message.answer('Ты вернулся назад', reply_markup=kb.update_account)
await Update_account.Update.set()
else:
<тут действие если не нажата кнопка "Назад">
надеюсь не будите кидаться палками ибо это тот метод каким я выкручиваюсь . в общем у меня каждое сообщение это объект , в котором есть своим кнопки и так далее , кнопки я также преопредилил из модуля pytelegrambotapi , так что бы каждая кнопка имела свои объект сообщения , и естественно реализовал конечный автомат , что позволило мне , создать словарь у которого ключ это позиция из автомата , в котором находиться обькт сообщения и кнопок а также ключ на предыдущее сообщение .
Это позволяет реализовать кнопку назад таким образом : при нажатии кнопки , оно смотрит в каком положении автомат , находит это в словаре и смотрит какое пред идущее сообщение после чего вызывает его , вот и всё .
Надеюсь я помог комуто , не ругайтесь за граматику :)link = { 1:{ 'message' : MLanguage_1.Message_language , 'prev' : None , 'rus' : BRus.Rus , 'eng' : BEng.Eng , } , 2:{ 'message' : MAgreement_2.Message_Agreement , 'prev' : None, 'agreement' : BAgreement.Agreement , 'agree' : BAgree.Agree , 'ignore' : BIgnore.Ignore } , -2:{ 'message' : MIgnore__2.Message_Ignor , 'prev' : 2 , 'back' : BReturn.Return, } , 3:{ 'message' : MMain.Message_Main_Menu , 'prev' : None , 'trading' : BTrading.Trading , 'panic' : BPanic.Panic , 'settings' : BSettings.Settings , 'help' : BHelp.Help , 'referal' : BReferal.Referal , 'cabinet' : BCabinet.Cabinet } , 7:{ 'message' : MHelp.Message_Help, #сам обьект сообшения 'prev' : 3 , #значение предидушкго сообщения # кнопки 'faq' : BFAQ.FAQ , 'service' : BService.Service , 'back' : BBack.Back } # при нажатии кнопки назад bot.send_message(chat_id=self.data.from_user.id , message=link[link[self.status]['prev']]['message']())
вот сам словарь :)