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()
@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 == "记仇":
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()