Пример #1
0
def endswith(text: str, *texts: str, strip: bool = True):
    if strip:
        return make_graph_deco(PrefixNode)(
            text[::-1],
            *map(lambda x: x[::-1], texts),
            key=key_message_content_string_reversed_lstripped)
    else:
        return make_graph_deco(PrefixNode)(
            text[::-1],
            *map(lambda x: x[::-1], texts),
            key=key_message_content_string_reversed)
Пример #2
0
from functools import partial

from ajenga.event import EventType
from ajenga.router.keyfunc import KeyFunctionImpl
from ajenga.router.std import EqualNode, make_graph_deco
from ajenga.router.trie import PrefixNode

key_event_type = KeyFunctionImpl(lambda event: event.type)
key_meta_type = KeyFunctionImpl(lambda event: event.meta_type)
key_meta_plugin = KeyFunctionImpl(lambda event: event.plugin)
key_channel = KeyFunctionImpl(lambda event: event.channel)

event_type_is = partial(make_graph_deco(EqualNode), key=key_event_type)
meta_type_is = partial(make_graph_deco(EqualNode), key=key_meta_type)
meta_plugin_is = partial(make_graph_deco(EqualNode), key=key_meta_plugin)
channel_is = partial(make_graph_deco(EqualNode), key=key_channel)


def channel(channel: str):
    return event_type_is(EventType.Custom) & channel_is(channel)


from . import message
from .message import is_message
Пример #3
0
def startswith(text: str, *texts: str, strip: bool = True):
    if strip:
        return make_graph_deco(PrefixNode)(text, *texts, key=key_message_content_string_lstripped)
    else:
        return make_graph_deco(PrefixNode)(text, *texts, key=key_message_content_string)
Пример #4
0
def equals(text: str, *texts: str, strip: bool = True):
    if strip:
        return make_graph_deco(EqualNode)(text, *texts, key=key_message_content_string_stripped)
    else:
        return make_graph_deco(EqualNode)(text, *texts, key=key_message_content_string)
Пример #5
0
def has(msg_type: Type[MessageElement], *or_more: Type[MessageElement]):
    return make_graph_deco(MessageTypeNode)(msg_type, *or_more)
Пример #6
0
key_message_content_string_reversed_stripped = KeyFunctionImpl(
    lambda event: event.message.as_plain()[::-1].strip())
key_message_content_string_reversed_lstripped = KeyFunctionImpl(
    lambda event: event.message.as_plain()[::-1].lstrip())

key_message_qq = KeyFunctionImpl(lambda event: event.sender.qq)
key_message_group = KeyFunctionImpl(lambda event: event.group)
key_message_permission = KeyFunctionImpl(lambda event: event.sender.permission)

is_message = event_type_is(*MessageEventTypes)
is_friend = event_type_is(EventType.FriendMessage)
is_group = event_type_is(EventType.GroupMessage)
is_temp = event_type_is(EventType.TempMessage)
is_private = is_friend | is_temp

qq_from = partial(make_graph_deco(EqualNode), key=key_message_qq)
group_from = partial(make_graph_deco(EqualNode), key=key_message_group)

permission_is = partial(make_graph_deco(EqualNode), key=key_message_permission)


def equals(text: str, *texts: str, strip: bool = True):
    if strip:
        return make_graph_deco(EqualNode)(text, *texts, key=key_message_content_string_stripped)
    else:
        return make_graph_deco(EqualNode)(text, *texts, key=key_message_content_string)


def startswith(text: str, *texts: str, strip: bool = True):
    if strip:
        return make_graph_deco(PrefixNode)(text, *texts, key=key_message_content_string_lstripped)