Size: a a a

2017 August 01

OA

Oleg A. 🇷🇺 in aiogram [ru]
Возможно и игру потом
источник
2017 August 02

AR

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

AR

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

AR

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

OA

Oleg A. 🇷🇺 in aiogram [ru]
А чем отличаются такие варианты?

@dp.message_handler(state='*', commands=['cancel'])

@dp.message_handler(commands=['cancel'])
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
первый не будет работать, если не прошёл в Entry Point?
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
Опечатка
# Ignore command is user is not in any (defined) state
# Ignore command if user is not in any (defined) state
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
@JRootJunior опять же, это хорошо, если у тебя ветвление и очерёдность срабатывания не сильно заморочены.

Представь ситуацию, когда есть

@стейт1, стейт 2, стейт 3
def функция 1

@стейт 3, стейт 4
def функция 2

@стейт 4, стейт 1, стейт 2
def функция 3

@стейт 2
def функция 4


Везде, где стейт написал, там ещё и условие должно быть, не стал громоздить, чтобы наглядно было.
Так вот, если в стейт 1 у меня очерёдность срабатывания расчитана в порядке: хендлер функции 1, если не сработал, то хендлер функции 3

А вот в стейт 2 наоборот.

Тут мы упираемся в конфликт очерёдности.
И делать двойные декораторы в этой ситуации нельзя
Придётся либо дублировать целиком функции, размещая их в нужном порядке. Либо делать подфункцию и вызывать её из двух других.
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
этот же пример без декорационных хендлеров

def функция 1
def функция 2
def функция 3
def функция 4


стейт1 = [
   условие х: функция 1
   условие у: фунция 3
]

стейт2 = [
   условие z: функция 3
   условие h: функция 1
]
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
прозрачнее ведь? 🙂
источник

AR

Alex RootJunior in aiogram [ru]
Oleg A. 🇷🇺
А чем отличаются такие варианты?

@dp.message_handler(state='*', commands=['cancel'])

@dp.message_handler(commands=['cancel'])
state="*" означает, что обрабатываться будут все состояния.
В примере: /cancel работает всегда, а /start - только если текущее состояние не установлено (is None)
источник

AR

Alex RootJunior in aiogram [ru]
Oleg A. 🇷🇺
первый не будет работать, если не прошёл в Entry Point?
Второй не будет работать, если состояние не None.
источник

AR

Alex RootJunior in aiogram [ru]
Oleg A. 🇷🇺
@JRootJunior опять же, это хорошо, если у тебя ветвление и очерёдность срабатывания не сильно заморочены.

Представь ситуацию, когда есть

@стейт1, стейт 2, стейт 3
def функция 1

@стейт 3, стейт 4
def функция 2

@стейт 4, стейт 1, стейт 2
def функция 3

@стейт 2
def функция 4


Везде, где стейт написал, там ещё и условие должно быть, не стал громоздить, чтобы наглядно было.
Так вот, если в стейт 1 у меня очерёдность срабатывания расчитана в порядке: хендлер функции 1, если не сработал, то хендлер функции 3

А вот в стейт 2 наоборот.

Тут мы упираемся в конфликт очерёдности.
И делать двойные декораторы в этой ситуации нельзя
Придётся либо дублировать целиком функции, размещая их в нужном порядке. Либо делать подфункцию и вызывать её из двух других.
Возможно еще добавлю возможность указывать порядок сортировки хэндлеров. Сейчас они работают в порядке добавления.
источник

AR

Alex RootJunior in aiogram [ru]
Oleg A. 🇷🇺
этот же пример без декорационных хендлеров

def функция 1
def функция 2
def функция 3
def функция 4


стейт1 = [
   условие х: функция 1
   условие у: фунция 3
]

стейт2 = [
   условие z: функция 3
   условие h: функция 1
]
сейчас никто не мешает использовать механизм регистрации хэндлеров без декораторов, при чем есть не один способ это сделать
dp.register_message_handler(callback_foo, state='foo', func=check1)
dp.register_message_handler(callback_foo, state='foo', commans=['bar'])


либо же dp.message_handlers.register(callback, [CommandsFilter(['baz']), StateFilter(dp, 'baz')])
источник

AR

Alex RootJunior in aiogram [ru]
в последнем варианте есть возможность добавить хэндлер в начало списка передав параметр index (например index=0) (по умолчанию добавляются в конец списка)
источник

AR

Alex RootJunior in aiogram [ru]
aiogram - это довольно простая и полностью асинхронная обертка над Telegram Bot API, написана на Python 3.6 с использованием asyncio и aiohttp. Позволяет делать Ваших ботов более простыми и быстрыми.

Официальные ресурсы:
- Новости: @aiogram_live
- Сообщество: @aiogram
- Русскоязычное сообщество: @aiogram_ru
- Pip: https://pypi.python.org/pypi/aiogram
- Документация: http://aiogram.readthedocs.io
- Репозиторий: https://bitbucket.org/illemius/aiogram
- Issues/Bug tracker: https://bitbucket.org/illemius/aiogram/issues
- Тестовый бот: @aiogram_bot (отключен)

#aiogram
источник
2017 August 03

OA

Oleg A. 🇷🇺 in aiogram [ru]
Уговорил 🙂
Installing collected packages: aiogram
Successfully installed aiogram-0.3.3
источник

AR

Alex RootJunior in aiogram [ru]
данная FSM будет в 0.3.4 %)
источник

OA

Oleg A. 🇷🇺 in aiogram [ru]
Когда ещё можно потестить библиотеку, как не в 3 часа ночи )))
источник

AR

Alex RootJunior in aiogram [ru]
а 0.3.4 будет опубликована на протяжении 2-3 дней
источник