koishi-plugin-jrys-prpr
Version:
[<ruby>**jrys-prpr**<rp>(</rp><rt>点我查看预览图</rt><rp>)</rp></ruby>](https://i0.hdslb.com/bfs/article/ae33f1b2e9dbc3fe89363a40fbf040703493298333289018.png)😽QQ官方json按钮支持,20个群即可发按钮!支持 monetary!很好看的字体! 支持自动清理记录内容。
107 lines (91 loc) • 3.32 kB
text/typescript
import { Context } from "koishi"
import { } from "koishi-plugin-puppeteer"
import { } from "koishi-plugin-monetary"
import { } from "koishi-plugin-canvas"
import type { } from "koishi-plugin-glyph"
import fs from 'node:fs'
import path from "node:path"
import { Config } from './config'
import { usage } from './constants'
import type { Config as ConfigType } from './types'
import { initializeFont } from './utils/font'
import { registerOriginalImageCommand } from './commands/original-image'
import { registerJrysCommand } from './commands/jrys'
export const name = 'jrys-prpr'
export const inject = {
"required": [
"i18n",
"logger",
"http",
"puppeteer"
],
"optional": [
"canvas",
"monetary",
"database",
"glyph"
]
}
export { usage, Config }
export function apply(ctx: Context, config: ConfigType) {
ctx.on('ready', async () => {
const root = path.join(ctx.baseDir, 'data', 'jrys-prpr')
const jsonFilePath = path.join(root, 'OriginalImageURL_data.json')
const retryCounts: Record<string, number> = {} // 使用一个对象来存储每个用户的重试次数
// 初始化字体
await initializeFont(ctx)
if (!fs.existsSync(root)) {
fs.mkdirSync(root, { recursive: true })
}
// 检查并创建 JSON 文件
if (!fs.existsSync(jsonFilePath)) {
fs.writeFileSync(jsonFilePath, JSON.stringify([]))
}
// 扩展数据库模型
ctx.model.extend("jrysprprdata" as any, {
userid: "string",
// 用户ID唯一标识
channelId: "string",
// 频道ID
lastSignIn: "string"
// 最后签到日期
}, {
primary: ["userid", "channelId"]
})
// 定义国际化文本
ctx.i18n.define("zh-CN", {
commands: {
[config.command]: {
description: "查看今日运势",
messages: {
Getbackgroundimage: "获取原图,请发送:{0}",
CurrencyGetbackgroundimage: "签到成功!获得点数: {0}\n获取原图,请发送:{1}",
CurrencyGetbackgroundimagesplit: "签到成功!获得点数: {0}",
hasSignedInTodaysplit: "今天已经签到过了,不再获得货币。",
hasSignedInToday: "今天已经签到过了,不再获得货币。\n获取原图,请发送:{0}",
}
},
[config.command2]: {
description: "获取运势原图",
messages: {
Inputerror: "请回复一张运势图,或者输入运势图的消息ID 以获取原图哦\~",
QQInputerror: "请输入运势图的消息ID以获取原图哦\~",
FetchIDfailed: "未能提取到消息ID,请确认回复的消息是否正确。",
aleadyFetchID: "该消息背景已被获取过啦~ 我已经忘掉了~找不到咯",
Failedtogetpictures: "获取运势图原图失败,请稍后再试"
}
}
}
})
// 日志输出函数
function logInfo(...args: any[]) {
if (config.consoleinfo) {
(ctx.logger.info as (...args: any[]) => void)(...args)
}
}
// 注册获取原图命令
registerOriginalImageCommand(ctx, config, jsonFilePath, logInfo)
// 注册今日运势主命令
registerJrysCommand(ctx, config, jsonFilePath, retryCounts, logInfo)
})
}