Стоп команда для телеграм бот aiogram?
Есть код бота, не получается реализовать кнопку для остановки while True.
await message.answer(f'Приветствую вас, {message.from_user.username}!', reply_markup=menu_kb)
async def end_point(message: types.Message):
await message.answer(f'Пока, {message.from_user.username}!')
async def moscow_set_price(message: types.Message):
await message.answer('Введите желаемую стоимость билета (Москва)')
await MoscowState.price_m.set()
async def spb_set_price(message: types.Message, state: FSMContext):
price_msc = message.text
await state.update_data(price_m=price_msc)
await message.answer('Введите желаемую стоимость билета (Питер)')
await SpbState.price_s.set()
async def results(message: types.Message, state: FSMContext):
price_spb = message.text
await state.update_data(price_s=price_spb)
data = await state.get_data()
price_m = data['price_m']
price_s = data['price_s']
await state.finish()
price_list.append(price_m)
price_list.append(price_s)
i_markup = InlineKeyboardMarkup(row_width=1)
i_button = InlineKeyboardButton(text='Начать', callback_data='start')
i_markup.add(i_button)
await message.answer('Начать поиск?', reply_markup=i_markup)
@dp.callback_query_handler(lambda callback_query: callback_query.data == 'start')
async def search(call: CallbackQuery, state: FSMContext):
price_m = price_list[0]
price_s = price_list[1]
await state.finish()
telegram = get_notifier('telegram')
await call.message.answer('Обработка запроса ⌛')
time.sleep(5)
while True:
stop = call.message.text
if stop == '/restart':
break
else:
for i in range(7):
date_m = MONDAY[i]
date_f = FRIDAY[i]
result_list_msc = parser_msc(date_m, int(price_m))
result_list_spb = parser_spb(date_f, int(price_s))
date_monday = datetime.datetime(int(date_m[:4]), int(date_m[4:6]), int(date_m[6:])).strftime('%d.%m.%Y')
date_friday = datetime.datetime(int(date_f[:4]), int(date_f[4:6]), int(date_f[6:])).strftime('%d.%m.%Y')
if result_list_msc == []:
message_no_results = f'Подходящих рейсов из Москвы на {date_monday} по этой стоимости не нашлось'
logging.append(message_no_results)
pass
# telegram.notify(token=TOKEN, chat_id=chat_id, message=message_no_results)
else:
for j in result_list_msc:
messages = f'Рейс из Москвы на {date_monday}: {j} ниже указанной стоимости! Спешите купить билет!'
logging.append(messages)
telegram.notify(token=TOKEN, chat_id=chat_id, message=messages)
if result_list_spb == []:
message_no_results = f'Подходящих рейсов из Питера на {date_friday} по этой стоимости не нашлось'
logging.append(message_no_results)
pass
else:
for a in result_list_spb:
messages = f'Рейс из Питера на {date_friday}: {a} ниже указанной стоимости! Спешите купить билет!'
logging.append(messages)
telegram.notify(token=TOKEN, chat_id=chat_id, message=messages)
await call.message.answer(f'Logs - {logging}')
time.sleep(10)
def register_handlers_main(dp: Dispatcher):
dp.register_message_handler(start_point, commands=['start'])
dp.register_message_handler(end_point, commands=['end'])
dp.register_message_handler(moscow_set_price, commands=['Поиск'])
dp.register_message_handler(spb_set_price, state=MoscowState.price_m)
dp.register_message_handler(results, state=SpbState.price_s, run_task=search)
dp.register_message_handler(start_point, commands=['restart'])
Проблема в том, что не получается перехватить сообщение с командой /restart