Как изменить state для пользователя по id в aiogram при ошибке:

Такой код:

state = dp.current_state(chat=chat_id, user=user_id)
await state.set_state(User.accepted)

выдает ошибку: TypeError: Dispatcher.current_state() takes 1 positional argument but 2 were given как я понял, единственным его аргументом есть self и даже при оставлении только аргумента user_id выдает такую ошибку.


Ответы (1 шт):

Автор решения: KJlUK_KJIAK

Эта ошибка возникает, потому что метод current_state() является методом экземпляра класса Dispatcher, а не статическим методом или методом класса. Таким образом, первый аргумент метода current_state() должен быть экземпляром класса Dispatcher, который называется self. Вместо передачи chat_id и user_id как аргументы в current_state(), они должны быть переданы в конструктор класса State вместе с идентификатором состояния, которое вы хотите установить.

Пример правильного использования метода current_state() для установки состояния User.accepted:

state = dp.current_state(chat=update.message.chat_id, user=update.message.from_user.id)
await state.set_state(state=State(User.accepted))

Здесь dp - это экземпляр класса Dispatcher, а update - это объект класса telegram.Update, представляющий входящее сообщение от пользователя.

→ Ссылка