Size: a a a

2020 May 29

AR

Alex RootJunior in aiogram [ru]
Либо писать свой тип/триггер который будет отслеживать айди на стороне БД.
источник

A

Andrey in aiogram [ru]
Спасибо
источник

нп

никита просто никита... in aiogram [ru]
кто шарит в aiogram когда пытаюсь await state.get_data() - вылетает ошибка (Task exception was never retrieved) - TypeError: cannot pickle '_ConnectionLocal' object, но при этом можно делать await state.update_data(переменная=значение) ??
источник

b

barelylegal in aiogram [ru]
Всем привет! Подскажите, как правильно в функцию хендлера передать локальную переменную? Например, курсор базы sqlite.
источник

G

Gabben in aiogram [ru]
barelylegal
Всем привет! Подскажите, как правильно в функцию хендлера передать локальную переменную? Например, курсор базы sqlite.
Через мидлварь
источник

b

barelylegal in aiogram [ru]
Gabben
Через мидлварь
Спасибо! Изучу!
источник

G

Gabben in aiogram [ru]
источник

G

Gabben in aiogram [ru]
barelylegal
Спасибо! Изучу!
Telegram
Alex RootJunior in aiogram [ru]
мидлвари работают со всеми типами событий из телеграма

есть несколько точек, куда мидлварью можно вклиниваться:
- pre_process: выполняется каждый раз перед началом фильтрации
- process: выполняется каждый раз после прохождения фильтра перед запуском хендлера
- post_process: выполняется каждый раз после обработки всего

итого, например, каждое сообщение проходит цепочку:
- pre_process update
- process update
- pre_process message
- filters
- process message
- handler
- post_process message
- post_process update

если ни один хендлер для сообщения не был запущен, выполняется следующая цепочка:
- pre_process update
- process update
- pre_process message
- filters
- post_process message
- post_process update


Мидлварь обязательно должна быть унаследована от BaseMiddleware

все методы для точек взаимодействия должны иметь названия:
on_<point>_<event_type>, то есть on_pre_process_message, on_post_process_update
более низкоуровневый вариант метод - trigger, он является главной точкой вызова мидлвари, по умолчанию…
источник

G

Gabben in aiogram [ru]
Пример мидлвари https://github.com/aiogram/aiogram/blob/dev-2.x/aiogram/contrib/middlewares/logging.py

В функцию мидлвари тебе приходит data: dict, кладешь в неё все что нужно
data["your_key"] = your_value
В хендлер тебе придет аргумент your_key

@dp.message_handler()
async def _(msg, your_key): ...


Ты можешь не указывать этот аргумент, если он в данном хендлере не нужен
источник

b

barelylegal in aiogram [ru]
Gabben
Пример мидлвари https://github.com/aiogram/aiogram/blob/dev-2.x/aiogram/contrib/middlewares/logging.py

В функцию мидлвари тебе приходит data: dict, кладешь в неё все что нужно
data["your_key"] = your_value
В хендлер тебе придет аргумент your_key

@dp.message_handler()
async def _(msg, your_key): ...


Ты можешь не указывать этот аргумент, если он в данном хендлере не нужен
источник

b

barelylegal in aiogram [ru]
Про мидлварь как раз не был заполнен раздел. https://aiogram.readthedocs.io/en/latest/dispatcher/middleware.html
источник

AR

Alex RootJunior in aiogram [ru]
никита просто никита
кто шарит в aiogram когда пытаюсь await state.get_data() - вылетает ошибка (Task exception was never retrieved) - TypeError: cannot pickle '_ConnectionLocal' object, но при этом можно делать await state.update_data(переменная=значение) ??
Что ты там в данные пихаешь?
источник

AR

Alex RootJunior in aiogram [ru]
сокет какой то?
источник

нп

никита просто никита... in aiogram [ru]
peewee.IntegerFiled
источник

нп

никита просто никита... in aiogram [ru]
Alex RootJunior
Что ты там в данные пихаешь?
сложный класс
источник

AR

Alex RootJunior in aiogram [ru]
никита просто никита
сложный класс
Каким образом коннект с БД должен у тебя упаковаться в сторедж? Там сокет
источник

нп

никита просто никита... in aiogram [ru]
ааа
источник

AR

Alex RootJunior in aiogram [ru]
Поле связано с моделью, модель с коннектом, коннект на сокете
источник

нп

никита просто никита... in aiogram [ru]
спасибо огромное, мозгов не хватало понять это
источник

🇷

🇷🇺Dima🇩🇪 in aiogram [ru]
Всем привет, подскажите плз, можно ли как-то узнать какое состояние(State) у юзера? использую aiogram, с установкой состояния вроде разобрался, но хочу проверить, правильно ли оно у меня работает и установилось ли нужное мне состояние.
dp.current_state(user=message.from_user.id) - выдает только адрес
<aiogram.dispatcher.storage.FSMContext object at 0x047C51F0>
источник