Как изменить 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 шт):
Эта ошибка возникает, потому что метод 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, представляющий входящее сообщение от пользователя.