def add_cave(name: str, content: MessageChain) -> int: for elem in content: if isinstance(elem, MultimediaElement): elem.id = None elem.url = None entry = CaveEntry(name=name, content=content.asPersistentString()) entry.save() return entry.id
async def chat_record(message: MessageChain, group: Group, member: Member): content = "".join([plain.text for plain in message.get(Plain)]).strip() filter_words = re.findall(r"\[mirai:(.*?)\]", content, re.S) for i in filter_words: content = content.replace(f"[mirai:{i}]", "") seg_result = jieba.lcut(content) if content else '' await orm.add( ChatRecord, { "time": datetime.datetime.now(), "group_id": group.id, "member_id": member.id, "persistent_string": message.asPersistentString(), "seg": "|".join(seg_result) if seg_result else '' })
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() for i in msg.__root__: if isinstance(i, MultimediaElement): i.url = "" message_serialization = msg.asPersistentString() if group.id not in group_repeat.keys(): group_repeat[group.id] = {"msg": message_serialization, "count": 1} else: if message_serialization == group_repeat[group.id]["msg"]: if group_repeat[group.id]["count"] == -1: return count = group_repeat[group.id]["count"] + 1 if count == 2: group_repeat[group.id]["count"] = count msg = message.include(Plain, Image, At, Quote, AtAll, Face, Poke) if msg.asDisplay() == "<! 不支持的消息类型 !>": group_repeat[group.id] = { "msg": msg.asPersistentString(), "count": -1, } return return await app.sendGroupMessage(group, msg.asSendable()) else: group_repeat[group.id]["count"] = count return else: group_repeat[group.id]["msg"] = message_serialization group_repeat[group.id]["count"] = 1