@HardX

Есть ли какой-то способ прохода по заданным в переменной состояниям в AIOgramm Python?

Есть класс с прописанными состояниями FSM:

class FSMAdminFull(StatesGroup):
adress = State() #1 ввод адреса
podiezd = State() #2 ввод номера подьезда
photo1 = State() #3 загрузка фото1 и.т.д
photo2 = State()
photo3 = State()
photo4 = State()
photo5 = State()
photo6 = State()
photo7 = State()
photo8 = State()
photo9 = State()
photo10 = State()

Как реализовать проход по конктерным состояниям, заданным например списком id_states = [1,2,7,10]
Понятно что можно проверять у каждого хендлера if state in id_states:
и впринципе это работает, только вот message.answer берется из текущего состояния, и при переходе на следущее состояние бот ждет ответа от пользователя, а мне нужно чтоб при переходе на нужное состояние, бот присылал описание действия пользователя.

Пример:
1,2 состояние всегда активны,
во 2 состоянии:
await message.answer('Отлично, мы находимся в каком-то подьезде')
await message.answer('сделайте фото 1') #действие для 3 состояния
await state.next() # т.е. переходим к 3 состоянию

в 3м состоянии проверяем if state in id_states:
если нет, то await state.next() # т.е. переходим к 4 состоянию
и.т.д

при переходе на состояние из списка, бот ждет действия от пользователя (т.е. загрузки фото), но пользователь то об этом не знает, у него в чате висит сообщение от бота: 'сделайте фото 1'

вот я и не могу придумать, как реализовать.
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
photo1 = State() #3 загрузка фото1 и.т.д
photo2 = State()
photo3 = State()

Всякий раз, когда ловишь себя на том, что пишешь вот такую фигню, создавай массив или словарь вместо отдельных переменных.
Тогда и вопрос прохода по номерам/ключам снимается.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы