Size: a a a

2020 November 17

Тᅠ

Туночка ᅠᅠ... in aiogram [ru]
А зачем тогда CommandObj args
источник

F🍭

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

F🍭

Fenicu 🍭 in aiogram [ru]
где ты увидел это
источник

Тᅠ

Туночка ᅠᅠ... in aiogram [ru]
выше пролистай
источник

Тᅠ

Туночка ᅠᅠ... in aiogram [ru]
if self.args
источник

ЕП

Евгений Петров... in aiogram [ru]
Fenicu 🍭
я сейчас и пытаюсь донести груше, что надо доставать из мидлваря)
Я понимаю, что из миддлвари, но у меня остаются два вопроса:
1) как это сократит количество обращений к БД? Из того, что я вижу, ты просто вместо хэндлера делаешь запрос к БД из миддлвари. По количеству всё то же самое.
2) Как работает эта (https://t.me/aiogram_ru/348811) магия? Почему data["settings"] прокидывается в хэндлер как аргумент settings, а, например, data["db_users"] не становится аргументом db_users? WTF?
источник

F🍭

Fenicu 🍭 in aiogram [ru]
Евгений Петров
Я понимаю, что из миддлвари, но у меня остаются два вопроса:
1) как это сократит количество обращений к БД? Из того, что я вижу, ты просто вместо хэндлера делаешь запрос к БД из миддлвари. По количеству всё то же самое.
2) Как работает эта (https://t.me/aiogram_ru/348811) магия? Почему data["settings"] прокидывается в хэндлер как аргумент settings, а, например, data["db_users"] не становится аргументом db_users? WTF?
1) по количеству не тоже самое
я делаю 1 запрос в мидлваре, если оно нужно в фильтрах, я достаю из мидлваря как раз результат этого запроса, так же если мне понадобится, я могу использовать его и в хендлере не делая ещё одного запроса

пример:
в мидлваре есть проверка на бан пользователя в самом боте, чтобы бот его игнорировал. Что я делаю?
делаю запрос в мидлваре, чекаю параметр ban, если забанен, то raise CancelHandler()
если нет, то пропускаю апдейт в хендлеры

теперь есть потребность в самом хендлере получить данные пользователя, что я сделаю? второй запрос в бд? (первый в мидлваре) нет, я достану из мидлваря тот самый запрос
источник

F🍭

Fenicu 🍭 in aiogram [ru]
чтобы можно было достать какие-то данные из мидлваря я пихаю их в data
источник

F🍭

Fenicu 🍭 in aiogram [ru]
они опциональны, если мне нужно только User, то я пишу аргумент User, если не нужен, не пишу
источник

ЕП

Евгений Петров... in aiogram [ru]
Fenicu 🍭
1) по количеству не тоже самое
я делаю 1 запрос в мидлваре, если оно нужно в фильтрах, я достаю из мидлваря как раз результат этого запроса, так же если мне понадобится, я могу использовать его и в хендлере не делая ещё одного запроса

пример:
в мидлваре есть проверка на бан пользователя в самом боте, чтобы бот его игнорировал. Что я делаю?
делаю запрос в мидлваре, чекаю параметр ban, если забанен, то raise CancelHandler()
если нет, то пропускаю апдейт в хендлеры

теперь есть потребность в самом хендлере получить данные пользователя, что я сделаю? второй запрос в бд? (первый в мидлваре) нет, я достану из мидлваря тот самый запрос
" что я сделаю? второй запрос в бд? (первый в мидлваре) нет, я достану из мидлваря тот самый запрос"
Именно. А без миддлвари у тебя был бы один запрос, но в самом хэндлере. Т.е. да, дублирование кода, но по количеству запросов одно и то же.
источник

ЕП

Евгений Петров... in aiogram [ru]
ну да ладно, меня больше второй вопрос даже интересует. Вот там ваще магия
источник

F🍭

Fenicu 🍭 in aiogram [ru]
ну, я рассматриваю вариант без дублирования кода
источник

F🍭

Fenicu 🍭 in aiogram [ru]
мы же умные ребята
источник

ЕП

Евгений Петров... in aiogram [ru]
По поводу дублирования с тобой полностью согласен, тут спору нет вообще
источник

F🍭

Fenicu 🍭 in aiogram [ru]
а так, то, что ты пихаешь в data, то будет доступно по соответствующему ключу в хендлере
источник

F🍭

Fenicu 🍭 in aiogram [ru]
data["chlen"] = "член"

@message_handler()
async def _(message, chlen):
источник

ЕП

Евгений Петров... in aiogram [ru]
Fenicu 🍭
data["chlen"] = "член"

@message_handler()
async def _(message, chlen):
TIL
источник

ЕП

Евгений Петров... in aiogram [ru]
Спасибо!!
источник

🤔T

🤔 Thoughtful in aiogram [ru]
Fenicu 🍭
data["chlen"] = "член"

@message_handler()
async def _(message, chlen):
Oof
источник

ЕП

Евгений Петров... in aiogram [ru]
Fenicu 🍭
а так, то, что ты пихаешь в data, то будет доступно по соответствующему ключу в хендлере
Вот где это, блеать :(
источник