Ejemplo n.º 1
0
delete_keyword_twilight = Twilight([
    FullMatch(r"删除"),
    FullMatch("群组", optional=True) @ "group_only",
    RegexMatch(r"(模糊|正则)", optional=True) @ "op_type",
    FullMatch("回复关键词#"),
    RegexMatch(r"[^\s]+") @ "keyword"
])


@channel.use(
    ListenerSchema(listening_events=[GroupMessage],
                   inline_dispatchers=[add_keyword_twilight],
                   decorators=[
                       BlackListControl.enable(),
                       Function.require("keyword_respondent",
                                        response_administrator=True,
                                        log=False)
                   ]))
async def add_keyword(app: Ariadne, message: MessageChain, group: Group,
                      member: Member, group_only: RegexResult,
                      op_type: RegexResult, keyword: RegexResult,
                      response: RegexResult):
    if not await user_permission_require(group, member, 2):
        await app.sendGroupMessage(group,
                                   MessageChain("权限不足,爬!"),
                                   quote=message.getFirst(Source))
        return
    op_type = ("regex" if op_type.result.asDisplay() == "正则" else
               "fuzzy") if op_type.matched else "fullmatch"
    response = await message_chain_to_json(response.result)
    keyword = keyword.result.copy()
Ejemplo n.º 2
0

@channel.use(
    ListenerSchema(
        listening_events=[GroupMessage],
        inline_dispatchers=[
            Twilight([
                UnionMatch("nokia", "鲁迅说", "王境泽", "喜报", "记仇", "狂爱", "狂粉", "低语",
                           "别说了", "一巴掌", "为所欲为", "馋身子", "切格瓦拉", "谁反对", "连连看",
                           "压力大爷", "你好骚啊", "食屎啦你", "五年", "滚屏") @ "prefix",
                RegexMatch(r"[\s\S]+") @ "content"
            ])
        ],
        decorators=[
            FrequencyLimit.require("memes", 2),
            Function.require(channel.module),
            BlackListControl.enable(),
            UserCalledCountControl.add(UserCalledCountControl.FUNCTIONS)
        ]))
async def memes(app: Ariadne, message: MessageChain, group: Group,
                prefix: RegexResult, content: RegexResult):
    prefix = prefix.result.asDisplay().strip()
    content = [content.result.asDisplay()]
    result = None
    if prefix == "nokia":
        result = await Memes.make_nokia(content)
    elif prefix == "鲁迅说":
        result = await Memes.make_luxunsay(content)
    elif prefix == "喜报":
        result = await Memes.make_goodnews(content)
    elif prefix == "记仇":
Ejemplo n.º 3
0
from sagiri_bot.utils import group_setting

saya = Saya.current()
channel = Channel.current()

channel.name("Repeater")
channel.author("SAGIRI-kawaii, nullqwertyuiop")
channel.description("一个复读插件,有两条以上相同信息时自动触发")

group_repeat = {}


@channel.use(
    ListenerSchema(
        listening_events=[GroupMessage],
        decorators=[Function.require(channel.module, log=False)],
    ))
async def repeater_handler(app: Ariadne, message: MessageChain, group: Group):
    if not await group_setting.get_setting(
            group, Setting.repeat) or not await group_setting.get_setting(
                group, Setting.switch):
        return
    global group_repeat
    if (message.has(Forward) or message.has(App) or message.has(Json)
            or message.has(Xml) or message.has(MarketFace)):
        group_repeat[group.id] = {
            "msg": message.asPersistentString(),
            "count": -1
        }
        return
    msg = message.copy()