Как сделать кнопнку возврата в aiogram
Прикладываю код, нужно чтобы по кнопке "back" был возврат либо к "dice" либо к "time", не могу разобраться как это сделать. Помогите пожалуйста.
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher, FSMContext
from aiogram.types import callback_query, InlineKeyboardButton, InlineKeyboardMarkup
from aiogram.utils import executor
from aiogram.dispatcher.filters import Text
import random
from config import TOKEN
import time
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(commands=['start'])
async def process_start_command(ping: types.Message):
keyboard = InlineKeyboardMarkup()
back_button = InlineKeyboardButton('Назад', callback_data='back')
keyboard.add(back_button)
a = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = ['dice', 'time']
a.add(*buttons)
await ping.answer('abc', reply_markup=a)
@dp.message_handler(Text(equals='dice'))
async def echo_message(msg: types.Message, state:FSMContext):
a = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = ['one', 'two', 'twenty', 'back']
a.add(*buttons)
await msg.answer('abc', reply_markup=a)
await state.reset_state(with_data=False)
if msg=='back':
a = types.ReplyKeyboardRemove()
@dp.message_handler(Text(equals='one'))
async def echo_message(msg: types.Message):
r = random.choice(range(1, 7))
await msg.answer(r)
@dp.message_handler(Text(equals='two'))
async def echo_message(msg: types.Message):
r = random.choice(range(1, 13))
await msg.answer(r)
@dp.message_handler(Text(equals='twenty'))
async def echo_message(msg: types.Message):
r = random.choice(range(1, 21))
await msg.answer(r)
#@dp.message_handler(Text(equals='back'))
#async def echo_message(msg: types.Message):
@dp.message_handler(Text(equals='time'))
async def echo_message(msg: types.Message, state:FSMContext):
a = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = ['30sec', '1', '5', 'back']
a.add(*buttons)
await msg.answer('abc', reply_markup=a)
await state.reset_state(with_data=False)
if msg=='back':
a = types.ReplyKeyboardRemove()
@dp.message_handler(Text(equals='close'))
async def echo_message(msg: types.Message):
global f
f = msg.text
@dp.message_handler(Text(equals='30sec'))
async def echo_message(msg: types.Message):
await msg.answer(f'Засек на 30 секунд')
b = time.perf_counter()
a = types.ReplyKeyboardMarkup(resize_keyboard=True)
buttons = ['close']
a.add(*buttons)
await msg.answer('abc', reply_markup=a)
f = msg.text
while f != 30:
c = time.perf_counter()
d = c - b
if d == 5:
await msg.answer('Таймер закончен')
break
else:
await msg.answer("Таймер сброшен")
if __name__ == '__main__':
executor.start_polling(dp)