Skip to content

消息读取

ChatLuna 是在 Koishi 下的插件。Koishi 作为一个聊天机器人框架,自身也有一套消息元素的机制。

为了让 LLM 能够正确理解各种消息元素(如@提及、表情、图片等),ChatLuna 提供了一个消息转换机制,将这些元素转换为文本形式。

用法

messageTransformer 中添加消息转换器即可:

typescript
const dispose = ctx.chatluna.messageTransformer.intercept(
    'at',
    async (session, element, message) => {
        const name = element.attrs['name']
        const id = element.attrs['id']

        if (name && id !== session.bot.selfId) {
            message.content += `[at:${name}:${id}]`
        }
    }
)   

ctx.effect(() => dispose)

在大部分情况下,将消息元素转换为文本,添加到 message.content 中即可。

API 参考

intercept 方法接收两个参数:

返回值 () => void 用于清理资源。建议使用 ctx.effect(() => dispose) 确保资源被正确释放。

页面历史

在 CC-BY-SA-4.0 许可下发布