Для чего в телеграм ботах нужны сотояния?

Для чего в телеграм ботах нужны сотояния?
  • Вопрос задан
  • 361 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Aztart
Для разграничения выполнения определённых функций. Функции для одного состояния, не будут запускаться в другом и наоборот.

На примере библиотеки Aiogram
from aiogram import Bot, Dispatcher
from aiogram.utils.helper import Item, Helper

bot = Bot(token=BOT_TOKEN, parse_mode='HTML')
dp = Dispatcher(bot, storage=MemoryStorage())

#Создание двух состояний (Есть третье нулевое)
class ListOfStates(Help):
    STATE_0 = Item()
    STATE_1 = Item()

#Команда для нулевого состояния (Не присвоенного) для переключения бота в состояние STATE_0
@dp.message_handler(commands=['make_state'])
async def state_set(message: types.Message):
    state = dp.current_state()
    await state.set_state(ListOfStates.STATE_0)
    await message.answer('Бот в состоянии STATE_0')

#Команда для возвращения бота в нулевое состояние 
@dp.message_handler(commands=['comand'], state = ListOfStates.STATE_0())
async def state_answer(message: types.Message):
    state = dp.current_state()
    await state.reset_state()
    await message.answer('Бот в нулевом состоянии')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы