开发插件
TIP
由于 Wordle 插件及其核心 @koishijs/wordle
仍处于早期开发阶段,下述的内容可能会随着项目的进展而发生变化。
创建新插件
首先应当按照 Koishi 工作区开发 创建一个新的插件项目,然后在项目目录下安装 @koishijs/wordle
作为直接依赖:
进入 src/index.ts
,如果你使用 Koishi 的工具链,它会为你写入了一些基本的代码。由于 Wordle 插件的特殊性,我们此处不使用这些代码,而是采用 @koishijs/wordle
导出的 defineVariation
:
ts
import { defineVariation } from '@koishijs/wordle'
import { Schema } from 'koishi'
export interface Config {}
export default defineVariation<Config>({
name: 'koishi-plugin-wordle', // 插件名称
command: 'wordle', // 插件指令
Config: Schema.intersect([]) as Schema<Config>, // 插件配置
locales: {
'zh-CN': require('./locales/zh-CN'),
},
validWords: [], // 合法单词列表
init(command, ctx) {
// 初始化操作,如注册指令的选项等。
},
async getCurrentWord({ options, session }, { ctx, config }) {
// 获取当天的单词
},
})
import { defineVariation } from '@koishijs/wordle'
import { Schema } from 'koishi'
export interface Config {}
export default defineVariation<Config>({
name: 'koishi-plugin-wordle', // 插件名称
command: 'wordle', // 插件指令
Config: Schema.intersect([]) as Schema<Config>, // 插件配置
locales: {
'zh-CN': require('./locales/zh-CN'),
},
validWords: [], // 合法单词列表
init(command, ctx) {
// 初始化操作,如注册指令的选项等。
},
async getCurrentWord({ options, session }, { ctx, config }) {
// 获取当天的单词
},
})
关于插件的命名
插件的命名应当遵循 koishi-plugin-xxx
的格式,其中 xxx
为插件的名称。例如,koishi-plugin-wordle
为 Wordle 插件的名称。尽管插件通过 @koishijs/wordle
定义,但我们并不需要在插件前缀中包含 wordle
,而应当根据你实现的游戏名称或者其规则来命名:
如 New York Times 版权所有的 wordle
游戏被认为是所有 wordle 类游戏的鼻祖,因此实现了该游戏规则的插件应当命名为 koishi-plugin-wordle
。基于此规则,实现了麻将立直牌型的插件应当命名为 koishi-plugin-mahjong-hand
,实现了汉字成语的插件按照其名称命名为 koishi-plugin-handle
。