Правила#

Основная информация#

Правила - инструмент для задания условий выполнения хендлера. Все правила находятся в модуле pyvdk.rules.
Пример создания правила:

from pyvdk.rules import TextRule


TextRule('Foo', lower=False)

Полный список правил можно найти здесь.

Так же разные правила можно совмещать, используя логические операторы. При этом образуется RulesBunch.

# rule and ((rule != rule) or (rule == rule)) xor not rule
bunch = rule & ((rule != rule) | (rule == rule)) ^ ~rule

Операторы, доступные для работы с правилами на данный момент: &, |, ^, ~, ==, !=.

RulesBunch#

Сам по себе RulesBunch является сгруппированным пучком правил. Его можно применять как обычное правило или как декоратор. Условием выполнения хендлера становятся выполнение условий, указанных при лейблинге, и условий банча.

from pyvdk.rules import RulesBunch

...
bunch = RulesBunch(rule1, rule2)  # эквивалент rule1 & rule2
...

@bot.on.message_new(bunch, text="foo")
def handler1(msg):
    ...


@bot.on.message_new(text="bar")
@bunch
def handler2(msg):
    ...

Причем декорировать им можно не только функции, но и классы.

@bunch
class Foo:
    @bot.on.message_new()
    def handler3(msg):
        ...

    @bot.on.message_new(text="foobar")
    def _handler4(msg):
        ...

Tip

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