Допустим в моем боте есть файл с командами:
postfile.py:
#Словарь с постами
posts = {'команда1': 1, 'команда2': 2}
И хэндлер:
from postfile import posts
...
...
@router.message(F.text.in_(posts))
async def print_post(message):
await message.answer(posts[message.text])
posts['команда 400'] = posts[message.text]
posts[message.text] == None
Итак, функция вызывается, когда бот получает текст 'команда 1' или 'команда 2'.
После этого из словаря убирается вызванная команда, и заменяется ключом 'команда 400'.
Ожидаемое поведение:
Юзер: команда1
Бот: 1
Юзер: команда 400
Бот: 1
Юзер: команда1:
Бот: (ничего не делает, команды в словаре больше нет)
Реальное поведение:
Юзер: команда1
Бот: 1
Юзер: команда 400
Бот: (ничего не делает)
Юзер: команда1:
Бот: (ошибка ключа) (функция вызывается, но ключа в словаре уже нет)
ИНАЧЕ ГОВОРЯ: Механизм, который управляет фильтром F.Text не в курсе изменений в словаре.
Как же с этим бороться?