diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index d3e6c9d..a862fa7 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,12 +1,57 @@ import { defineConfig } from 'vitepress' +import timeline from 'vitepress-markdown-timeline' +import taskLists from "markdown-it-task-lists" +import mathjax3 from 'markdown-it-mathjax3' +import footnote_plugin from 'markdown-it-footnote' export default defineConfig({ lang: 'zh-CN', base: '/Karin', title: 'karin', description: '基于 Kritor 进行开发的nodejs机器人框架', + markdown: { + // 全局代码块行号显示 + lineNumbers: true, + image: { + // 开启图片懒加载 + lazyLoading: true, + }, + config: (md) => { + // 时间线 + md.use(timeline) + // 任务列表 + md.use(taskLists) + // 公式 + md.use(mathjax3) + // 脚注 + md.use(footnote_plugin) + }, + }, + vue: { + template: { + compilerOptions: { + isCustomElement: (tag) => customElements.includes(tag), + }, + }, + }, + // 移除地址的.html + cleanUrls: true, + // 显示最后更新时间 + lastUpdated: true, + head: [ + ['link', { rel: 'icon', href: '/Karin/logo.png' }], + ], themeConfig: { siteTitle: 'Karin主页', + logo: { + src: '/logo.png', + }, + // 深浅模式文字翻译 + darkModeSwitchLabel: '深浅模式', + editLink: { + pattern: 'https://github.com/KarinJS/Karin/edit/docs/docs/:path', + text: '在 GitHub 上编辑此页面', + }, outline: { level: [2, 4], label: '页面导航' @@ -124,8 +169,28 @@ export default defineConfig({ ], }, socialLinks: [ - { icon: 'github', link: 'https://github.com/KarinJS/Karin' } + { icon: 'github', link: 'https://github.com/KarinJS/Karin' }, + { + icon: { + svg: '', + }, + link: 'https://gitee.com/KarinJS/Karin', + } ], + footer: { + message: "Released under the GPL-3.0 License", + copyright: "Copyright © 2024 Karin", + }, + docFooter: { + prev: '上一页', + next: '下一页', + }, + lastUpdatedText: '最后编辑于', + outlineTitle: '本页大纲', + // 侧边栏文字更改 + sidebarMenuLabel: '目录', + // 返回顶部文字修改 + returnToTopLabel: '返回顶部', search: { provider: 'algolia', options: { @@ -175,3 +240,94 @@ export default defineConfig({ } } }) + + +const customElements = [ + 'mjx-container', + 'mjx-assistive-mml', + 'math', + 'maction', + 'maligngroup', + 'malignmark', + 'menclose', + 'merror', + 'mfenced', + 'mfrac', + 'mi', + 'mlongdiv', + 'mmultiscripts', + 'mn', + 'mo', + 'mover', + 'mpadded', + 'mphantom', + 'mroot', + 'mrow', + 'ms', + 'mscarries', + 'mscarry', + 'mscarries', + 'msgroup', + 'mstack', + 'mlongdiv', + 'msline', + 'mstack', + 'mspace', + 'msqrt', + 'msrow', + 'mstack', + 'mstack', + 'mstyle', + 'msub', + 'msup', + 'msubsup', + 'mtable', + 'mtd', + 'mtext', + 'mtr', + 'munder', + 'munderover', + 'semantics', + 'math', + 'mi', + 'mn', + 'mo', + 'ms', + 'mspace', + 'mtext', + 'menclose', + 'merror', + 'mfenced', + 'mfrac', + 'mpadded', + 'mphantom', + 'mroot', + 'mrow', + 'msqrt', + 'mstyle', + 'mmultiscripts', + 'mover', + 'mprescripts', + 'msub', + 'msubsup', + 'msup', + 'munder', + 'munderover', + 'none', + 'maligngroup', + 'malignmark', + 'mtable', + 'mtd', + 'mtr', + 'mlongdiv', + 'mscarries', + 'mscarry', + 'msgroup', + 'msline', + 'msrow', + 'mstack', + 'maction', + 'semantics', + 'annotation', + 'annotation-xml', +] diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts new file mode 100644 index 0000000..bc00fa3 --- /dev/null +++ b/docs/.vitepress/theme/index.ts @@ -0,0 +1,28 @@ +/* .vitepress\theme\index.ts */ +import DefaultTheme from 'vitepress/theme' +import mediumZoom from 'medium-zoom' +import { onMounted, watch, nextTick } from 'vue' +import { useData, useRoute } from 'vitepress' +import 'vitepress-markdown-timeline/dist/theme/index.css' +import './style/index.css' + +export default { + extends: DefaultTheme, + /** 响应式图片缩放 */ + setup () { + const route = useRoute() + const initZoom = () => { + // 响应式的图片放大缩小 + // mediumZoom('[data-zoomable]', { background: 'var(--vp-c-bg)' }); // 默认 + mediumZoom('.main img', { background: 'var(--vp-c-bg)' }) // 不显式添加{data-zoomable}的情况下为所有图像启用此功能 + } + onMounted(() => { + initZoom() + }) + watch( + () => route.path, + () => nextTick(() => initZoom()) + ) + const { frontmatter } = useData() + }, +} \ No newline at end of file diff --git a/docs/.vitepress/theme/style/index.css b/docs/.vitepress/theme/style/index.css new file mode 100644 index 0000000..42fab3e --- /dev/null +++ b/docs/.vitepress/theme/style/index.css @@ -0,0 +1,3 @@ +@import './var.css'; +@import './vp-code-group.css'; +@import './mathjax3.css'; \ No newline at end of file diff --git a/docs/.vitepress/theme/style/mathjax3.css b/docs/.vitepress/theme/style/mathjax3.css new file mode 100644 index 0000000..99a540f --- /dev/null +++ b/docs/.vitepress/theme/style/mathjax3.css @@ -0,0 +1,9 @@ +mjx-container { + display: inline-block; + margin: auto 2px -2px; +} + +mjx-container>svg { + margin: auto; + display: inline-block; +} \ No newline at end of file diff --git a/docs/.vitepress/theme/style/var.css b/docs/.vitepress/theme/style/var.css new file mode 100644 index 0000000..abc5029 --- /dev/null +++ b/docs/.vitepress/theme/style/var.css @@ -0,0 +1,60 @@ +/* var.css */ +/* */ +:root { + /* 主题色,浅色模式,深紫色调 */ + /* 鼠标滑过高亮色,代码块高亮色,加粗高亮色 */ + --vp-c-brand-1: #5224b6; + /* --vp-c-brand-1-2: #5224b6; */ + --vp-c-brand-2: #352984; + --vp-c-brand-3: #6d68c1; + /* 主页logo大图底色 设置右图像渐变 */ + --vp-home-hero-image-background-image: linear-gradient(-45deg, #f6abe9 50%, #ebe0ba 50%); + --vp-home-hero-image-filter: blur(150px); +} + +/* 主题色,浅色模式,深紫色调 */ +.dark { + --vp-c-brand-1: #C8ABFA; + --vp-c-brand-2: #3c30a4; + --vp-c-brand-3: #352984; +} + +/* 移除链接跳转下划线 */ +.vp-doc a { + text-decoration: none; +} + +/* 提示框背景颜色 */ +:root { + --vp-custom-block-tip-bg: var(--vp-c-green-soft); + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #6B7BF8, #F68BC6); +} + +/* 提示框 */ +.custom-block.tip { + border-color: var(--vp-c-green-2); +} + +/* 警告框 */ +.custom-block.warning { + /* border-color: #d97706; */ + border-color: var(--vp-c-yellow-2); +} + +/* 危险框 */ +.custom-block.danger { + /* border-color: #f43f5e; */ + border-color: var(--vp-c-red-2); +} + +/** 响应式图片缩放覆盖范围 */ +/** 最顶层 */ +.medium-zoom-overlay { + z-index: 20; +} + +.medium-zoom-image { + z-index: 9999 !important; + /* 给的值是21,但是实测盖不住,直接999 */ +} \ No newline at end of file diff --git a/docs/.vitepress/theme/style/vp-code-group.css.css b/docs/.vitepress/theme/style/vp-code-group.css.css new file mode 100644 index 0000000..a370272 --- /dev/null +++ b/docs/.vitepress/theme/style/vp-code-group.css.css @@ -0,0 +1,27 @@ +/* .vitepress\theme\style\vp-code-group.css */ + +/* 代码块tab */ +.vp-code-group .tabs { + padding-top: 30px; +} + +/* 代码块tab-顶部小圆点 */ +.vp-code-group .tabs::before { + background: #fc625d; + border-radius: 50%; + box-shadow: 20px 0 #fdbc40, 40px 0 #35cd4b; + content: ' '; + height: 12px; + width: 12px; + left: 12px; + margin-top: -20px; + position: absolute; +} + + +/* 代码组 */ +.vp-code-group { + color: var(--vp-c-black-soft); + border-radius: 8px; + box-shadow: 0 10px 30px 0 rgb(0 0 0 / 40%); +} \ No newline at end of file diff --git a/docs/api/api.md b/docs/api/api.md index e69de29..e380fd7 100644 --- a/docs/api/api.md +++ b/docs/api/api.md @@ -0,0 +1 @@ +# 正在编写中,咕咕咕~ \ No newline at end of file diff --git a/docs/api/index.md b/docs/api/index.md index 24241ec..4bcbcd7 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -1,6 +1,6 @@ # 目录 -> 咕咕咕~ +> 正在编写中,咕咕咕~ ## 标准API diff --git a/docs/api/message.md b/docs/api/message.md index 09145ee..92616f5 100644 --- a/docs/api/message.md +++ b/docs/api/message.md @@ -3,7 +3,7 @@ > 文档存在一定的滞后性或者错误,如有问题请提交issue~ ::: tip 提示 -如果你不知道如何使用API,请查看[调用方法](./index.md#调用方法) +如果你不知道如何使用 API,请查看 [**调用方法**](./index.md#调用方法) ::: [[toc]] @@ -17,15 +17,15 @@ Api: `SendMessage` | `contact` | [点击跳转](./contact.md#contact) | 是 | 发送目标 | | `elements` | [elements](../plugins/elements.md) | 是 | 消息内容 | -::: warning 温馨提示 -请各位开发者尽量使用`array`,其他类型的值可能会在未来版本中被废弃 +::: warning 注意 +请各位开发者尽量使用 `array` ,其他类型的值可能会在未来版本中被废弃 ::: ::: code-group ```js [请求示例1] // 主动发送消息 直接调用Api -import { segment } from '#Karin' +import { segment } from 'node-karin' const contact = { scene: 'private', @@ -43,7 +43,7 @@ await this.e.bot.SendMessage(contact, elements) ```js [请求示例2] // 主动发送消息 调用封装过的Api -import { Bot } from '#Karin' +import { Bot } from 'node-karin' const self_id = 123456789 const contact = { @@ -58,7 +58,7 @@ await Bot.sendMsg(self_id, contact, '这只一条主动消息') ```js [请求示例3] // 被动回复消息 -import { segment } from '#Karin' +import { segment } from 'node-karin' const elements = [ segment.at(123456789), @@ -89,7 +89,7 @@ Api: `RecallMessage` ::: code-group ```js [请求示例] -import { Bot } from '#Karin' +import { Bot } from 'node-karin' const self_id = 123456789 const contact = { @@ -109,6 +109,8 @@ const res = await bot.RecallMessage(contact, message_id) // 此api标准是没有返回值的,如果撤回消息失败,karin会直接抛出一个错误 res = {} ``` +::: + ## 通过`message_id`获取消息 @@ -122,7 +124,7 @@ Api: `GetMessage` ::: code-group ```js [请求示例] -import { Bot } from '#Karin' +import { Bot } from 'node-karin' const self_id = 123456789 const contact = { @@ -165,10 +167,11 @@ res = { } ``` +::: ## 通过`message_seq`获取消息 Api: `GetMessageBySeq` -此Api是通过`message_seq`获取消息,与`GetMessage`基本相同,这里不再赘述 +此Api是通过 `message_seq` 获取消息,与 `GetMessage` 基本相同,这里不再赘述 diff --git a/docs/api/standard.md b/docs/api/standard.md index 56508b5..fe02640 100644 --- a/docs/api/standard.md +++ b/docs/api/standard.md @@ -1,6 +1,6 @@ # 标准API -> 咕咕咕~ +> 正在编写中,咕咕咕~ ## 交互方式 @@ -36,12 +36,14 @@ const res = await bot.GetVersion() console.log(res) ``` +::: + ## 适配进度 ::: tip 温馨提示 频道相关的暂无打算支持 -需注意,如果在调用API时请求失败或超时,`karin`会直接抛出一个错误 +需注意,如果在调用 API 时请求失败或超时,`karin` 会直接抛出一个错误 ::: ### 核心API diff --git a/docs/event/notice.md b/docs/event/notice.md index e69de29..e380fd7 100644 --- a/docs/event/notice.md +++ b/docs/event/notice.md @@ -0,0 +1 @@ +# 正在编写中,咕咕咕~ \ No newline at end of file diff --git a/docs/event/request.md b/docs/event/request.md index e69de29..e380fd7 100644 --- a/docs/event/request.md +++ b/docs/event/request.md @@ -0,0 +1 @@ +# 正在编写中,咕咕咕~ \ No newline at end of file diff --git a/docs/plugins/demo.md b/docs/plugins/demo.md index 91f0ee4..d4f28de 100644 --- a/docs/plugins/demo.md +++ b/docs/plugins/demo.md @@ -1,10 +1,10 @@ # 示例 -> 一个简单的`demo`示例,直接代码展示了。 +> 一个简单的 `demo` 示例,直接代码展示了。 ## 准备工作 -- 打开`plugins/karin-plugin-example`目录,在此新建一个`index-demo.js`文件。 +- 打开 `plugins/karin-plugin-example` 目录,在此新建一个 `index-demo.js` 文件。 ## 函数式语法糖示例 @@ -125,8 +125,8 @@ export const face = karin.command(/^#表情$/, async (e) => { ## 类语法糖示例 > 该示例为消息插件示例 -> 将下面的代码复制到`index-demo.js`中,保存 ->对机器人发送`#你好`,机器人会回复`你好`、图片、语音、视频、@某人 +> 将下面的代码复制到 `index-demo.js` 中,保存 +>对机器人发送 `#你好` ,机器人会回复 `你好` 、图片、语音、视频、@某人 ```js import { Plugin, segment } from 'node-karin' diff --git a/docs/plugins/elements.md b/docs/plugins/elements.md index 4445ffa..16ef53b 100644 --- a/docs/plugins/elements.md +++ b/docs/plugins/elements.md @@ -13,7 +13,7 @@ ::: ```js -import { segment } from '#karin' +import { segment } from 'node-karin' ``` ## 多媒体资源标准 @@ -22,14 +22,14 @@ karin对于多媒体资源的标准化处理,遵循以下规则: - 对于网络资源,要求传入的url必须为 `https://` 或 `http://` 开头 - 对于base64格式,传入必须是 `base64://` 格式开头的字符串 -- 对于`file://`格式,传入的字符串必须是`绝对路径`,且资源必须存在 +- 对于 `file://` 格式,传入的字符串必须是`绝对路径`,且资源必须存在 - 对于未知字段,请确认适配器可以正确处理 ::: tip 注意 -对于`file://`格式,请开发者注意以下几点: +对于 `file://` 格式,请开发者注意以下几点: - 请确保用户的协议端和karin运行环境一致,否则可能导致文件读取失败 -- 对于Linux系统,由于绝对路径前方有`/`,格式为`file:///root/...`,请注意区分`///`和`//` +- 对于Linux系统,由于绝对路径前方有 `/` ,格式为 `file:///root/...` ,请注意区分 `///` 和 `//` ::: ## 文本 text @@ -51,7 +51,7 @@ console.log(text) ## 表情 face ::: tip 温馨提示 -键入的ID必须为数字 +键入的 ID 必须为数字 ::: ```js @@ -71,7 +71,7 @@ console.log(face) ## 图片 image ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -106,7 +106,7 @@ console.log(image) ## 语音 record ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -126,7 +126,7 @@ console.log(record) ## 视频 video ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -146,7 +146,7 @@ console.log(video) ## @用户 at ::: tip 温馨提示 -开发者只需要关注uid字段即可 +开发者只需要关注 uid 字段即可 ::: ```js @@ -166,7 +166,7 @@ console.log(at) ## 戳一戳 poke -关于这部分,见[mirai](https://github.com/mamoe/mirai/blob/f5eefae7ecee84d18a66afce3f89b89fe1584b78/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/HummerMessage.kt#L49) +关于这部分,见 [**mirai**](https://github.com/mamoe/mirai/blob/f5eefae7ecee84d18a66afce3f89b89fe1584b78/mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/HummerMessage.kt#L49) ```js const poke = segment.poke(1, -1, 1) @@ -404,7 +404,7 @@ console.log(markdown) ## rows按钮 QQBot官方格式 ::: tip 温馨提示 -rows和button的键入值一致,且比较复杂,请查看最下方的构建方法,这里只展示输出 +rows 和 button 的键入值一致,且比较复杂,请查看最下方的 [**构建方法**](#rows按钮button按钮构建方法),这里只展示输出 ::: ::: details 点我查看输出示例 @@ -497,7 +497,7 @@ rows和button的键入值一致,且比较复杂,请查看最下方的构建 ## button按钮 ::: tip 温馨提示 -rows和button的键入值一致,且比较复杂,请查看最下方的构建方法,这里只展示输出 +rows和button的键入值一致,且比较复杂,请查看最下方的 [**构建方法**](#rows按钮button按钮构建方法),这里只展示输出 ::: ::: details 点我查看输出示例 @@ -559,13 +559,13 @@ rows和button的键入值一致,且比较复杂,请查看最下方的构建 ## rows按钮、button按钮构建方法 ::: tip 温馨提示 -以下所有代码,`segment.rows`和`segment.button`均可使用 +以下所有代码,`segment.rows` 和 `segment.button` 均可使用 所有未出现在快速构建方法中的参数,均为可选参数,可以根据需要选择是否传入 ::: ### 跳转按钮 -```js:line-numbers {1} +```js:line-numbers // 快速构建 segment.rows({ link: 'https://example.com' }) @@ -585,7 +585,7 @@ segment.rows({ ### 回调按钮 -```js:line-numbers {1} +```js:line-numbers // 快速构建 segment.rows({ type: 1, text: '回调按钮'}) @@ -606,7 +606,7 @@ segment.rows({ ### 指令按钮 -```js:line-numbers {1} +```js:line-numbers // 快速构建 segment.rows({ text: '指令按钮' }) diff --git a/docs/plugins/list.md b/docs/plugins/list.md index 4aacef0..df5061d 100644 --- a/docs/plugins/list.md +++ b/docs/plugins/list.md @@ -29,8 +29,8 @@ layout: home - 欢迎提交插件,但请遵守插件收录规范。 - 如果您的插件存在违反插件收录规范的行为,我们会立即删除您的插件。 -- 打开[plugins][plugins]页面,按照已有的格式新增插件信息 -- 填写提交信息,使用`feat: 插件名称`、`feat: 添加测试插件`等格式 +- 打开 [**plugins**][plugins] 页面,按照已有的格式新增插件信息 +- 填写提交信息,使用 `feat: 插件名称` 、`feat: 添加测试插件` 等格式 - 拓展描述信息,请尽量提供,非必需 - 填写完成提交,等待审核 @@ -82,7 +82,7 @@ layout: home ## 📖其他插件 -> 可提交一些单个`js`插件,请省略前缀哦~ +> 可提交一些单个 `js` 插件,请省略前缀哦~ | 名称 | 作者 | 仓库地址 | 镜像仓库 | 开源协议 | 简介 | | -------- | ----------------------- | -------------------- | -------- | ------------------- | --------------------- | diff --git a/docs/plugins/package.md b/docs/plugins/package.md index c26c731..43b96b4 100644 --- a/docs/plugins/package.md +++ b/docs/plugins/package.md @@ -2,11 +2,11 @@ 本文档将指导您如何开发 karin 插件包。 -打开[模板仓库](https://github.com/KarinJS/karin-plugin-template) +打开 [**模板仓库**](https://github.com/KarinJS/karin-plugin-template) ## 克隆模板仓库 -点击`Use this template`或`使用此模板`按钮,创建自己的仓库。 +点击 `Use this template` 或 `使用此模板` 按钮,创建自己的仓库。 ![202404121412587](https://cdn.jsdelivr.net/gh/Zyy955/imgs/img/202404121412587.png) 填写仓库名称,描述,选择是否公开。 diff --git a/docs/plugins/standard.md b/docs/plugins/standard.md index 6513c94..fd0a274 100644 --- a/docs/plugins/standard.md +++ b/docs/plugins/standard.md @@ -4,29 +4,29 @@ ### 插件包 -> 这里必须遵守,否则将无法被karin识别启用 +> **这里必须遵守,否则将无法被karin识别启用** -- 插件包名称必须以`karin-plugin-`开头,后面跟插件名称 +- 插件包名称必须以 `karin-plugin-` 开头,后面跟插件名称 - 必须使用英文命名,尽量简短,避免使用特殊符号 -- 统一为小写,使用`-`连接单词 +- 统一为小写,使用 `-` 连接单词 -例如:`kritor-plugin-hello`、`karin-plugin-my-plugin`、`karin-plugin-my-awesome-plugin` +例如:`kritor-plugin-hello` 、`karin-plugin-my-plugin` 、`karin-plugin-my-awesome-plugin` ### 单个`js` > 这里是推荐规范,不强制要求 -- 统一存放在`karin`提供的`karin-plugin-example` +- 统一存放在 `karin` 提供的 `karin-plugin-example` - 使用英文进行命名,无固定前缀要求 - 名称尽量简短,避免过长 -- 名称避免使用特殊符号,使用`-`连接单词 +- 名称避免使用特殊符号,使用 `-` 连接单词 -例如:`hello-world.js`、`my-plugin.js`、`my-awesome-plugin.js` +例如:`hello-world.js` 、`my-plugin.js` 、`my-awesome-plugin.js` ## 结构规范 :::tip -建议直接使用[模板仓库](https://github.com/KarinJS/karin-plugin-template)进行开发 +建议直接使用 [**模板仓库**](https://github.com/KarinJS/karin-plugin-template) 进行开发 ::: > 插件包的目录结构,请参照以下规范进行组织,开发者可自行在基础结构上进行调整 @@ -67,30 +67,30 @@ kritor-plugin-hello ### 数据文件 -::: warning 请注意 -这里请必须遵守 +::: warning 警告 +**这里请必须遵守** ::: -- 对于`数据文件`,karin要求开发者将数据文件`统一`存放到`data/`下 -- `karin`会在启动的时候,为每一个插件包在`data/`下创建`对应名称`的文件夹 -- 如无特殊需求,请不要在`data`文件夹下创建其他文件夹 +- 对于 `数据文件` ,karin要求开发者将数据文件 `统一` 存放到 `data/` 下 +- `karin` 会在启动的时候,为每一个插件包在 `data/` 下创建 `对应名称` 的文件夹 +- 如无特殊需求,请不要在 `data` 文件夹下创建其他文件夹 问:为什么要求统一存放数据文件? -答:方便`karin`统一管理,方便用户`查找`、`迁移`、快速`备份`。 +答:方便 `karin` 统一管理,方便用户 `查找`、`迁移` 、快速 `备份` 。 问:什么样的算数据文件? -答:如`Cookie`、`Token`、`sqlite`、`mysql`等数据文件,不包含`配置文件`、`资源文件`。 +答:如 `Cookie` 、`Token` 、`sqlite` 、`mysql` 等数据文件,不包含 `配置文件` 、`资源文件` 。 ### 配置文件 > 无需一定遵守,但是推荐遵守 -- 对于配置文件,由于使用`git`进行管理升级,所以一般会有两种配置文件:`默认配置`和`用户配置` -- `默认配置`:要求统一存放在`config/defSet/`下,由开发者进行维护修改,此处禁止用户编辑修改 -- `用户配置`:要求统一存放在`config/config/`下,由用户进行编辑修改。 -- 如无特殊需求,请不要在`config`文件夹下创建其他文件夹 +- 对于配置文件,由于使用 `git` 进行管理升级,所以一般会有两种配置文件:`默认配置` 和 `用户配置` +- `默认配置` :要求统一存放在 `config/defSet/` 下,由开发者进行维护修改,此处禁止用户编辑修改 +- `用户配置` :要求统一存放在 `config/config/` 下,由用户进行编辑修改。 +- 如无特殊需求,请不要在 `config` 文件夹下创建其他文件夹 -> 对于这里,建议使用`karin-plugin-template`作为模板,进行开发 +> 对于这里,建议使用 [**`karin-plugin-template`**](#结构规范) 作为模板,进行开发 ### 资源文件 @@ -99,55 +99,55 @@ kritor-plugin-hello 规范1: - 插件包的资源文件 -- 字体文件存放在`resources/font/`下 -- 图片文件存放在`resources/image/`下 -- 图标文件存放在`resources/icon/`下 -- 通用样式文件存放在`resources/css/`下 -- 渲染模板存放在`resources/template/`下,每一种模板新建一个文件夹 +- 字体文件存放在 `resources/font/` 下 +- 图片文件存放在 `resources/image/` 下 +- 图标文件存放在 `resources/icon/` 下 +- 通用样式文件存放在 `resources/css/` 下 +- 渲染模板存放在 `resources/template/` 下,每一种模板新建一个文件夹 规范2: -- 每一种渲染模板都在`resources`下新建一个文件夹,文件夹名称为模板名称,将模板的资源文件存放在该文件夹下 +- 每一种渲染模板都在 `resources` 下新建一个文件夹,文件夹名称为模板名称,将模板的资源文件存放在该文件夹下 ### 临时文件 -- karin会在启动的时候,在`karin/temp`下为每一个插件包创建对应名称的文件夹 +- karin会在启动的时候,在 `karin/temp` 下为每一个插件包创建对应名称的文件夹 - 开发者可在该文件夹下存放临时文件,如缓存文件、日志文件等 - 请勿对他人的文件夹进行删除、修改 - 如无特殊需求,请不要在该文件夹下创建其他文件夹。 ### html渲染模板 -- karin会在启动的时候,在`karin/temp/html`下为每一个插件包创建对应名称的文件夹 -- 请开发者在使用渲染的时候,将`name`设置为`插件包名称` +- karin会在启动的时候,在 `karin/temp/html` 下为每一个插件包创建对应名称的文件夹 +- 请开发者在使用渲染的时候,将 `name` 设置为 `插件包名称` ## 仓库规范 -- 要求插件仓库名称必须以`karin-plugin-`开头,必须与插件包名称一致 +- 要求插件仓库名称必须以 `karin-plugin-` 开头,必须与插件包名称一致 - 插件仓库必须提供开源协议 -- 在仓库标签页,添加`karin`、`karin-plugin` -- 对于二改的`karin`仓库,必须进行开源,并使用`GPLv3+`协议,并使用`karin`标签进行标记 +- 在仓库标签页,添加 `karin` 、`karin-plugin` +- 对于二改的 `karin` 仓库,必须进行开源,并使用 `GPLv3+` 协议,并使用 `karin` 标签进行标记 ## 多媒体资源规范 - 网络资源: - - 必须携带`http`或`https`协议 + - 必须携带 `http` 或 `https` 协议 - 如:`https://www.example.com/image.png` - 本地资源: - - 必须携带`file`协议 - - 必须使用`file://`开头,禁止使用`file:///`开头 - - 同一服务器环境跨应用传输,比如使用`绝对路径` - - 如:`file://D:/example/image.png`、`file:///root/image.png` -- `base64`: - - 必须使用`base64://`开头 - - 不要携带`data:image/png;base64,`等前缀 + - 必须携带 `file` 协议 + - 必须使用 `file://` 开头,禁止使用 `file:///` 开头 + - 同一服务器环境跨应用传输,比如使用 `绝对路径` + - 如:`file://D:/example/image.png` 、`file:///root/image.png` +- `base64` : + - 必须使用 `base64://` 开头 + - 不要携带 `data:image/png;base64,`等前缀 - 如:`base64://iVBORw0KGAYAAR42mL8//8/AyUYw ...` ## 基本规范 -- 建议开发者在仓库主页添加**免责声明** -- 对于`开源`插件,必须提供`开源协议`。 -- 对于`闭源`插件,请遵守下方规则即可。 +- 建议开发者在仓库主页添加 _**免责声明**_ +- 对于 `开源` 插件,必须提供 `开源协议`。 +- 对于 `闭源` 插件,请遵守下方规则即可。 - 禁止存在触犯法律法规的行为 - 禁止存在侵犯第三方知识产权的行为 @@ -157,11 +157,11 @@ kritor-plugin-hello - 禁止存在恶意破坏用户隐私、恶意收集用户信息等恶意行为 - 禁止存在恶意收集、泄露用户数据、恶意泄露用户隐私等恶意行为 - 禁止存在恶意修改插件的源代码、恶意删除插件的源代码等恶意行为 -- 禁止在插件中包含任何形式的**后门**、**木马**、**病毒**等恶意代码或程序 +- 禁止在插件中包含任何形式的 **后门**、**木马** 、**病毒** 等恶意代码或程序 - 对于加密、混淆的插件,必须在仓库主页声明哪些文件是加密、混淆的,并注明代码混淆的目的 问:为什么要求遵守这些规范? -答:君子协议。我们希望开发者能够遵守这些规范,让`karin`生态更加健康,让开发者和用户更加放心。 +答:君子协议。我们希望开发者能够遵守这些规范,让 `karin` 生态更加健康,让开发者和用户更加放心。 问:为什么必须提供开源协议? 答: diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000..920fea3 Binary files /dev/null and b/docs/public/logo.png differ diff --git a/docs/start/render.md b/docs/start/render.md index db67834..0db3712 100644 --- a/docs/start/render.md +++ b/docs/start/render.md @@ -1,20 +1,20 @@ # 渲染器安装 -使用`puppeteer`作为默认渲染器。 +使用 `puppeteer` 作为默认渲染器。 问:渲染器的作用是什么? -答:`karin`大多数插件均使用`html`模板,渲染器的作用是将`html`转换为`图片`格式,以便于展示。 +答:`karin` 大多数插件均使用 `html` 模板,渲染器的作用是将 `html` 转换为 `图片` 格式,以便于展示。 -问:为什么使用`puppeteer`? -答:经过我们将近一周的测试,`puppeteer`无论在性能、渲染速度、兼容性等多方面均以碾压性优势领先于其他渲染器。 +问:为什么使用 `puppeteer` ? +答:经过我们将近一周的测试,`puppeteer` 无论在性能、渲染速度、兼容性等多方面均以碾压性优势领先于其他渲染器。 问:可否不安装渲染器? 答:可以,只要不使用需要渲染的插件即可。 ## 简介 -- 国外源: [Github-karin-puppeteer](https://github.com/KarinJS/karin-puppeteer) -- 国内源: [Gitee-karin-puppeteer](https://gitee.com/KarinJS/karin-puppeteer) +- 国外源 (GitHub): [Github-karin-puppeteer](https://github.com/KarinJS/karin-puppeteer) +- 国内源 (Gitee): [Gitee-karin-puppeteer](https://gitee.com/KarinJS/karin-puppeteer) ::: warning 注意 karin-puppeteer是一个单独的项目,需要单独安装运行。 @@ -23,7 +23,7 @@ karin-puppeteer是一个单独的项目,需要单独安装运行。 - 反向WS: - 渲染方式:本地文件 - 优点:稳定、快速 - - 缺点:此方法仅在`karin-puppeteer`与`karin`在同一台服务器上时有效。 + - 缺点:此方法仅在 `karin-puppeteer` 与 `karin` 在同一台服务器上时有效。 - 正向WS: - 渲染方式:远程文件、本地文件 - 优点:在拥有反向WS的基础上,支持远程文件渲染,支持无公网 @@ -31,22 +31,22 @@ karin-puppeteer是一个单独的项目,需要单独安装运行。 - HTTP: - 渲染方式:本地文件、远程文件 - 优点:同样支持远程文件渲染,速度较快 - - 缺点:需要`karin-puppeteer`与`karin`在同一局域网、公网内 + - 缺点:需要 `karin-puppeteer` 与 `karin` 在同一局域网、公网内 总结: -> 如果你只需要偶尔进行测试,可选择使用正向WS。 +> 如果你只需要偶尔进行测试,可选择使用正向 WS。 > 如果需要长期文档使用,建议自建使用反向WS。 > HTTP的作用在本地使用环境下,几乎和正向、反向WS无异。 > 如果你的局域网内有高性能的渲染服务器,推荐使用HTTP。 ## 克隆仓库 -::: warning 温馨提示 -请自行安装`Node.js`和`Git`。 +::: tip 温馨提示 +请自行安装 `Node.js` 和 `Git`。 ::: -> 中国大陆服务器推荐使用`Gitee`源。 +> 中国大陆服务器推荐使用 [**Gitee 源**](https://gitee.com/KarinJS/karin-puppeteer)。 ::: code-group @@ -64,7 +64,7 @@ git clone https://gitee.com/KarinJS/karin-puppeteer.git ::: tip 温馨提示 -这一步对无法访问npm官方源的用户来说非常困难,建议直接使用`cnpm`即可。 +这一步对无法访问npm官方源的用户来说非常困难,建议直接使用 `cnpm` 即可。 ::: @@ -118,10 +118,10 @@ pnpm run log ## 配置文件 -`karin-puppeteer`初次启动之后,会在`config`目录下生成`config`文件夹,里面均为配置文件。 +`karin-puppeteer` 初次启动之后,会在 `config` 目录下生成 `config` 文件夹,里面均为配置文件。 > 若无特殊需求,不建议修改。 -> 请不要修改`config/defSet`目录下的文件,这些文件是默认配置文件。 +> 请不要修改 `config/defSet` 目录下的文件,这些文件是默认配置文件。 ::: code-group @@ -152,7 +152,6 @@ karinUrl: ``` ```yaml [mime.yaml] - # html css '.css': 'text/css' '.html': 'text/html' diff --git a/docs/start/start.md b/docs/start/start.md index db144fb..361ec3e 100644 --- a/docs/start/start.md +++ b/docs/start/start.md @@ -6,19 +6,19 @@ ::: warning 温馨提示 -以下,除了`NodeJs`,其他均为可选项,根据实际情况进行安装。 +以下,除了`Node.js`,其他均为可选项,根据实际情况进行安装。 ::: ### NodeJs -[NodeJs官网][NodeJs] +[Node.js官网][Node.js] -`Karin`基于`NodeJs`开发,推荐使用官方稳定长期支持的`LTS`版本`v20+`。 +`Karin`基于`Node.js`开发,推荐使用官方稳定长期支持的`LTS`版本`v20+`。 - 目前最低要求支持版本为`v18+`。 -- `Karin`本身并未使用较新的`NodeJs`特性,理论来说支持16+版本。 +- `Karin`本身并未使用较新的`Node.js`特性,理论来说支持16+版本。 - `Karin`大部分插件开发者的开发环境均在`v20+`版本,推荐使用`v20+`版本。 -- 如果无需使用相关插件或功能,可自行选择是否安装`NodeJs`的版本。 +- 如果无需使用相关插件或功能,可自行选择是否安装`Node.js`的版本。 ### Git @@ -31,8 +31,8 @@ ## 部署karin -> [!TIP] 注意! -> 如果你无法访问`npm`官网,请先看最下方的更换 [更换npm源](#更换npm源) +> [!TIP] 提示 +> 如果你无法访问`npm`官网,请先看最下方的更换 [**更换npm源**](#更换npm源) ### 安装`pnpm` @@ -58,7 +58,7 @@ pnpm i node-karin && npx npx init && npx karin . ### 基本指令 -> [!IMPORTANT] +> [!IMPORTANT] 务必注意 > 文档可能更新不及时,可`npx karin`查看全部指令 ::: code-group @@ -135,6 +135,6 @@ npm config set registry https://registry.npmjs.org -[NodeJs]: https://nodejs.org/en +[Node.js]: https://nodejs.org/en [腾讯软件管家]: https://sw.pcmgr.qq.com/1e05804bd17b358a8c88284df8331fcd/65fcde89/spcmgr/download/Git-2.44.0-64-bit.exe [redis-windows]: https://github.com/redis-windows/redis-windows diff --git a/docs/utils/Renderer.md b/docs/utils/Renderer.md index b73cc2d..cf23d98 100644 --- a/docs/utils/Renderer.md +++ b/docs/utils/Renderer.md @@ -1,6 +1,6 @@ # Renderer - ```js - import { Renderer } from '#Karin' - // ... - ``` +```js +import { Renderer } from '#Karin' +``` +# 正在编写中,咕咕咕~ diff --git a/docs/utils/YamlEditor.md b/docs/utils/YamlEditor.md index cda9437..ad4cda5 100644 --- a/docs/utils/YamlEditor.md +++ b/docs/utils/YamlEditor.md @@ -5,7 +5,7 @@ `YamlEditor` 是一个用于编辑 YAML 文件的类。它提供了读取、修改、添加、删除和保存 YAML 文件的功能。这个类在应用中适用于对 YAML 配置文件进行操作的场景。 ::: tip -最最最重要的是,可以保留注释信息,并且不会影响 YAML 文件的结构。 +**_最最最重要的是,可以保留注释信息,并且不会影响 YAML 文件的结构。_** ::: [[toc]] @@ -15,7 +15,7 @@ ### 导入和实例化 ```js -import { YamlEditor } from '#Karin' +import { YamlEditor } from 'node-karin' // 创建一个 YamlEditor 实例,指定文件路径 const yamlEditor = new YamlEditor('./path/to/your/file.yaml') @@ -71,7 +71,7 @@ if (success) { } ``` -`del(path)` 方法用于删除 YAML 中指定路径的值。如果成功删除,将返回 `true`;否则返回 `false`。 +`del(path)` 方法用于删除 YAML 中指定路径的值。如果成功删除,将返回 `true` ;否则返回 `false` 。 ### 向 YAML 中的数组添加新元素 @@ -92,7 +92,7 @@ yamlEditor.has('a.b.c') // true yamlEditor.has('x.y.z') // false ``` -使用 `has(path)` 方法,可以检查 YAML 中指定路径的键是否存在。如果存在,返回 `true`;否则返回 `false`。 +使用 `has(path)` 方法,可以检查 YAML 中指定路径的键是否存在。如果存在,返回 `true` ;否则返回 `false` 。 ### 查询指定路径中是否包含指定的值 @@ -102,7 +102,7 @@ yamlEditor.hasVal('a.b.c', 'val') // true yamlEditor.hasVal('x.y.z', 'val') // false ``` -使用 `hasVal(path, value)` 方法,可以查询 YAML 中指定路径的值是否包含指定的值。如果包含,返回 `true`;否则返回 `false`。 +使用 `hasVal(path, value)` 方法,可以查询 YAML 中指定路径的值是否包含指定的值。如果包含,返回 `true` ;否则返回 `false` 。 ### 保存文件 @@ -117,7 +117,7 @@ yamlEditor.save() - **日志记录**:`YamlEditor` 使用了日志记录功能,确保在操作过程中能够及时发现问题。 - **错误处理**:所有方法都进行了错误处理,当发生异常时将记录错误。 -- **路径格式**:指定路径时使用点号分隔,例如 `'root.child.key'`。 +- **路径格式**:指定路径时使用点号分隔,例如 `'root.child.key'` 。 - **保存文件**:使用 `save()` 方法确保所做的修改被写入文件。 ## 示例 diff --git a/docs/utils/common.md b/docs/utils/common.md index 8880806..16696d3 100644 --- a/docs/utils/common.md +++ b/docs/utils/common.md @@ -1,7 +1,7 @@ # common ```js -import { common } from '#Karin' +import { common } from 'node-karin' /** 休眠函数 延迟5秒 */ await common.sleep(5 * 1000) diff --git a/docs/utils/index.md b/docs/utils/index.md index 26cc579..9cd2add 100644 --- a/docs/utils/index.md +++ b/docs/utils/index.md @@ -2,40 +2,38 @@ ## karin -> 这里正确的名称是`#karin`,但是为了方便搜索,我们使用`karin`来代替 -`#karin`是整个框架的核心入口,所有的开发工具都是基于`#karin`进行使用 +> 这里正确的名称是 `node-karin` ,是 `node_modules/node-karin/lib/index.js` 文件的别名,这是一个集中导出多个模块的入口文件。它是整个框架的核心入口,所有的开发工具都是基于 `node-karin` 进行使用 -详情查看[karin](./karin.md) +详情查看 [karin](./karin.md) ## logger -`logger`是一个日志工具,用于打印不同级别的日志 +`logger` 是一个日志工具,用于打印不同级别的日志 ## common -`common`是一个工具集合,包含了一些常用的工具函数,例如`sleep`、`downFile`等 +`common` 是一个工具集合,包含了一些常用的工具函数,例如 `sleep` 、`downFile` 等 ## redis - -`redis`是一个开源的高性能键值对数据库,常用于缓存、消息队列等场景 -详情查看[redis](./redis.md) +`redis` 是一个开源的高性能键值对数据库,常用于缓存、消息队列等场景 +详情查看 [**redis**](./redis.md) ## segment -`segment`是一个用于快速构建elements的工作,即`element` -详情查看[segment](./segment.md) +`segment` 是一个用于快速构建elements的工作,即 `element` +详情查看 [**segment**](./segment.md) ## Renderer `Renderer`是一个渲染器入口,用于存储开发者的渲染器实例 -详情查看[Renderer](./Renderer.md) +详情查看 [**Renderer**](./Renderer.md) ## YamlEditor `YamlEditor`是一个用于编辑`yaml`文件的工具 -详情查看[YamlEditor](./YamlEditor.md) +详情查看 [**YamlEditor**](./YamlEditor.md) ## update `update`是一个用于更新插件工具,还可获取插件更新日志 -详情查看[update](./update.md) +详情查看 [**update**](./update.md) diff --git a/docs/utils/karin.md b/docs/utils/karin.md index 4b2241b..799776c 100644 --- a/docs/utils/karin.md +++ b/docs/utils/karin.md @@ -1,20 +1,20 @@ # 概述 -`#Karin`是`./lib/index.js`文件的别名,这是一个集中导出多个模块的入口文件。 通过使用别名,开发者可以更简洁地引入所需的模块,无需指定完整的路径。 ```js -import segment from './lib/bot/segment.js' -import plugin from './lib/plugins/plugin.js' +// 不建议这么做! +import segment from 'node_modules/node-karin/lib/bot/segment.js' +import plugin from 'node_modules/node-karin/lib/plugins/plugin.js' // 以上的导入麻烦且冗长,在使用别名后可以简化为 -import { segment, plugin } from '#Karin' +import { segment, Plugin } from 'node-karin' ``` ## 使用 ::: tip -可能会更新不及时,有一定阅读能力的可以查看 [lib/index.js](https://github.com/KarinJS/Karin/blob/main/lib/index.js) +文档可能会更新不及时,有一定阅读能力的可以查看 [**src/index.ts**](https://github.com/KarinJS/Karin/blob/dev/src/index.ts) ::: - ## `kritor` @@ -24,27 +24,27 @@ import { segment, plugin } from '#Karin' - ## `APP` ```js - import { App } from '#Karin' + import { App } from 'node-karin' // ... ``` - ## `Bot` ```js - import { Bot } from '#Karin' + import { Bot } from 'node-karin' // ... ``` - ## `Cfg` ```js - import { Cfg } from '#Karin' + import { Cfg } from 'node-karin' // ... ``` - ## `plugin` ```js - import { plugin } from '#Karin' + import { Plugin } from 'node-karin' // ... ``` diff --git a/docs/utils/logger.md b/docs/utils/logger.md index f748483..5c010d0 100644 --- a/docs/utils/logger.md +++ b/docs/utils/logger.md @@ -1,7 +1,7 @@ # logger ```js -import { logger } from '#Karin' +import { logger } from 'node-karin' /** 打印trace日志 */ logger.trace('这是一条trace日志') diff --git a/docs/utils/redis.md b/docs/utils/redis.md index a5fde1c..620af9e 100644 --- a/docs/utils/redis.md +++ b/docs/utils/redis.md @@ -1,7 +1,7 @@ # redis ```js -import { redis } from '#Karin' +import { redis } from 'node-karin' /** 存储一个键值对 */ await redis.set('key', 'value') diff --git a/docs/utils/segment.md b/docs/utils/segment.md index 4445ffa..c570a83 100644 --- a/docs/utils/segment.md +++ b/docs/utils/segment.md @@ -2,7 +2,7 @@ 本文档介绍了 Krita 的消息元素结构和 `segment` 模块的使用方法。 -::: tip tips +::: tip 温馨提示 目前尚在开发阶段,可能有部分内容未完善或错误,敬请谅解。 ::: @@ -13,7 +13,7 @@ ::: ```js -import { segment } from '#karin' +import { segment } from 'node-karin' ``` ## 多媒体资源标准 @@ -51,7 +51,7 @@ console.log(text) ## 表情 face ::: tip 温馨提示 -键入的ID必须为数字 +键入的 ID 必须为数字 ::: ```js @@ -71,7 +71,7 @@ console.log(face) ## 图片 image ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -106,7 +106,7 @@ console.log(image) ## 语音 record ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -126,7 +126,7 @@ console.log(record) ## 视频 video ::: tip 温馨提示 -遵循 [多媒体资源标准](#多媒体资源标准) +遵循 [**多媒体资源标准**](#多媒体资源标准) ::: ```js @@ -160,7 +160,7 @@ console.log(at) { type: 'at', uid: 'abc1234567890', - uin: '1234567890' // 二选一 推荐使用uid + uin: '1234567890' // 二选一 推荐使用 uid } ``` @@ -404,7 +404,7 @@ console.log(markdown) ## rows按钮 QQBot官方格式 ::: tip 温馨提示 -rows和button的键入值一致,且比较复杂,请查看最下方的构建方法,这里只展示输出 +rows和button的键入值一致,且比较复杂,请查看最下方的 [**构建方法**](#rows按钮button按钮构建方法),这里只展示输出 ::: ::: details 点我查看输出示例 @@ -497,7 +497,7 @@ rows和button的键入值一致,且比较复杂,请查看最下方的构建 ## button按钮 ::: tip 温馨提示 -rows和button的键入值一致,且比较复杂,请查看最下方的构建方法,这里只展示输出 +rows和button的键入值一致,且比较复杂,请查看最下方的 [**构建方法**](#rows按钮button按钮构建方法),这里只展示输出 ::: ::: details 点我查看输出示例 @@ -559,7 +559,7 @@ rows和button的键入值一致,且比较复杂,请查看最下方的构建 ## rows按钮、button按钮构建方法 ::: tip 温馨提示 -以下所有代码,`segment.rows`和`segment.button`均可使用 +以下所有代码,`segment.rows` 和 `segment.button` 均可使用 所有未出现在快速构建方法中的参数,均为可选参数,可以根据需要选择是否传入 ::: @@ -585,7 +585,7 @@ segment.rows({ ### 回调按钮 -```js:line-numbers {1} +```js:line-numbers // 快速构建 segment.rows({ type: 1, text: '回调按钮'}) @@ -606,7 +606,7 @@ segment.rows({ ### 指令按钮 -```js:line-numbers {1} +```js:line-numbers // 快速构建 segment.rows({ text: '指令按钮' }) diff --git a/docs/utils/update.md b/docs/utils/update.md index e69de29..e380fd7 100644 --- a/docs/utils/update.md +++ b/docs/utils/update.md @@ -0,0 +1 @@ +# 正在编写中,咕咕咕~ \ No newline at end of file diff --git a/package.json b/package.json index 5cf866a..169c84e 100644 --- a/package.json +++ b/package.json @@ -10,5 +10,13 @@ "dev": "vitepress dev docs", "build": "vitepress build docs", "preview": "vitepress preview docs" + }, + "dependencies": { + "markdown-it-footnote": "^4.0.0", + "markdown-it-mathjax3": "^4.3.2", + "markdown-it-task-lists": "^2.1.1", + "medium-zoom": "^1.1.0", + "vitepress-markdown-timeline": "^1.2.1", + "vue": "^3.4.33" } } \ No newline at end of file