コード例 #1
0
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
コード例 #2
0
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 ''
        })
コード例 #3
0
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