169 похожих чатов

Такой момент, когда идёт команда в боте - то нужно

state сбрасывать. state.finish() под каждый handler выглядит не очень. Хочется где то в мидлваре сразу же поймать, так делают ? И если да то как) Тоесть ток один вариант в голове - pre process message - юзер айди поймать и через redis библиотеку. Как то можно ещё это реализовать получше?

21 ответов

29 просмотров

Если меньше 100 раз то не придумывай. Пиши везде

᠌᠌- Автор вопроса
Aile
Если меньше 100 раз то не придумывай. Пиши везде

Это означает, что state можно ловить только в хендлерах? Как параметр state: FSMState

᠌᠌
Это означает, что state можно ловить только в хенд...

Его можно и ловить и создавать везде

Прикол в том, что люди разбивают хендлеры на файлы по своей логике И оно хреново получается

TheLastRay (:
Прикол в том, что люди разбивают хендлеры на файлы...

Разбивай по нормальной логике =) Везде ж пишут: хэндлеры срабатывают по первому набору фильтров, который вернул True

᠌᠌
Да я разбил на файлы

Объясняю Где-то в относительно новом гайде груши найди альт регистрацию хендлеров Импортируй все команды из других файлов в main файл и объяви все хендлеры в одном файле в нужном порядке, ссылаясь ими на функции в других файлах

᠌᠌- Автор вопроса

У меня идут регистрации в каждом файле и ту функцию импортирую в main и там также в одну функцию каждый хендлер по порядку

᠌᠌
У меня идут регистрации в каждом файле и ту функци...

Вот убери все регистрации в каждом файле Оставь голые функции А объяви их все в одном файле в правильном порядке — вынеся все state * функции наверх

Ну не лови их

И что, что в разных файлах? Команды-то разные

Смотри конкретный пример import file1 import file2 import file3 В файле 1 объявлен обработчик на состояние search на любой текст В файле 2 объявлен обработчик на состояние * Поэтому обработчик файла 1 перебивает команду в файле 2, когда бот находится в стейте search

Groosha
И что, что в разных файлах? Команды-то разные

у него обработка не команд, а любого сообщения ¯\_(ツ)_/¯

TheLastRay (:
Смотри конкретный пример import file1 import file...

Неправильное заявление У тебя может быть хэндлер `@dp.message_handler(commands="alice", state="state1") А после зареганным @dp.message_handler(commands="bob", state="*") И когда юзер в состоянии "state1", то команда "bob" сработает нормально, т.к. набор фильтров commands="alice", state="state1" вернёт False из-за несовпадения команды

Groosha
Неправильное заявление У тебя может быть хэндлер ...

Ты не видишь подпись "на любой текст"? у него хендлер не на команду у него хендлер на текстовое сообщение

Причём сам же пишет "ID только из чисел". Тут прям напрашивается фильтр на числа

Groosha
https://t.me/aiogram_ru/1052471

Ну вот он этот дурак И я даю ему конкретное решение, которое ему поможет, без переделывания кода)

Groosha
Причём сам же пишет "ID только из чисел". Тут прям...

Ну кстати да В этом конкретном случае такое прокатит

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

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
102
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Как добавить ссылку в Быстрый доступ в Проводнике windows 10? Нашёл, как на power shell сделать, но может есть способ через Дельфи?
А
31
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
@rouse_79 а ты не знаешь простого способа определить что приложение запущено из под среды delphi?
Михаил
16
Я тут пытаюсь переработать архитектуру подсистемы памяти ядра во что-то осмысленное. Есть pmm, который создает набор range’ей(пока что только для ядра, потом для юзерспейса), ...
Evg Resh
19
Обязательно ли смена методологии обучения алфавиту при смене алфавита(реформе письменности) - нет. А при смене глиненых табличек на попирус, нужно ли менять методологию обучен...
Spiker01
8
Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
Карта сайта