koishi-plugin-starfx-bot 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +6 -5
- package/lib/index.js +66 -61
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { Context, h, Schema, Session
|
|
1
|
+
import { Context, h, Schema, Session } from 'koishi';
|
|
2
2
|
export declare const name = "starfx-bot";
|
|
3
3
|
export declare let baseDir: string;
|
|
4
|
+
export declare let assetsDir: string;
|
|
4
5
|
export interface Config {
|
|
5
6
|
openLock: boolean;
|
|
6
7
|
openSold: boolean;
|
|
8
|
+
atNotSay: boolean;
|
|
7
9
|
}
|
|
8
10
|
export declare const Config: Schema<Config>;
|
|
9
11
|
export declare const usage = "StarFreedomX\u7684\u81EA\u7528\u63D2\u4EF6 \u653E\u4E86\u4E00\u4E9B\u5C0F\u529F\u80FD";
|
|
10
12
|
export declare function apply(ctx: Context, cfg: Config): void;
|
|
11
|
-
export declare function getImageSrc(session: Session, param: string): Promise<
|
|
12
|
-
export declare function drawLock(baseImage: string): Promise<"输入无效。" |
|
|
13
|
-
export declare function drawSold(baseImage: string): Promise<"输入无效。" |
|
|
14
|
-
export declare function getMemberInfo(member: Universal.GuildMember, id: string): string[];
|
|
13
|
+
export declare function getImageSrc(session: Session, param: string): Promise<any>;
|
|
14
|
+
export declare function drawLock(baseImage: string): Promise<h | "输入无效。" | "发生错误。">;
|
|
15
|
+
export declare function drawSold(baseImage: string): Promise<h | "输入无效。" | "发生错误。">;
|
package/lib/index.js
CHANGED
|
@@ -32,11 +32,11 @@ var src_exports = {};
|
|
|
32
32
|
__export(src_exports, {
|
|
33
33
|
Config: () => Config,
|
|
34
34
|
apply: () => apply,
|
|
35
|
+
assetsDir: () => assetsDir,
|
|
35
36
|
baseDir: () => baseDir,
|
|
36
37
|
drawLock: () => drawLock,
|
|
37
38
|
drawSold: () => drawSold,
|
|
38
39
|
getImageSrc: () => getImageSrc,
|
|
39
|
-
getMemberInfo: () => getMemberInfo,
|
|
40
40
|
name: () => name,
|
|
41
41
|
usage: () => usage
|
|
42
42
|
});
|
|
@@ -46,23 +46,18 @@ var import_jimp = require("jimp");
|
|
|
46
46
|
var fs = __toESM(require("fs"));
|
|
47
47
|
var name = "starfx-bot";
|
|
48
48
|
var baseDir;
|
|
49
|
+
var assetsDir;
|
|
49
50
|
var Config = import_koishi.Schema.object({
|
|
50
51
|
openLock: import_koishi.Schema.boolean().default(true).description("开启明日方舟封印功能"),
|
|
51
|
-
openSold: import_koishi.Schema.boolean().default(true).description('开启闲鱼"卖掉了"功能')
|
|
52
|
+
openSold: import_koishi.Schema.boolean().default(true).description('开启闲鱼"卖掉了"功能'),
|
|
53
|
+
atNotSay: import_koishi.Schema.boolean().default(true).description("开启‘艾特我又不说话’功能")
|
|
52
54
|
});
|
|
53
55
|
var usage = "StarFreedomX的自用插件 放了一些小功能";
|
|
54
56
|
function apply(ctx, cfg) {
|
|
55
57
|
baseDir = ctx.baseDir;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
fs.rmSync(`${__dirname}/../assets/lock.png`);
|
|
60
|
-
}
|
|
61
|
-
if (fs.existsSync(`${__dirname}/../assets/sold.png`)) {
|
|
62
|
-
fs.mkdirSync(`${ctx.baseDir}/data/starfx-bot/assets/`, { recursive: true });
|
|
63
|
-
fs.copyFileSync(`${__dirname}/../assets/sold.png`, `${ctx.baseDir}/data/starfx-bot/assets/sold.png`);
|
|
64
|
-
fs.rmSync(`${__dirname}/../assets/sold.png`);
|
|
65
|
-
}
|
|
58
|
+
assetsDir = `${ctx.baseDir}/data/starfx-bot/assets`;
|
|
59
|
+
initAssets("lock.png");
|
|
60
|
+
initAssets("sold.png");
|
|
66
61
|
if (cfg.openLock) {
|
|
67
62
|
ctx.command("封印 [param]").action(async ({ session }, param) => {
|
|
68
63
|
return await drawLock(await getImageSrc(session, param));
|
|
@@ -70,63 +65,73 @@ function apply(ctx, cfg) {
|
|
|
70
65
|
}
|
|
71
66
|
if (cfg.openSold) {
|
|
72
67
|
ctx.command("卖掉了 [param]").action(async ({ session }, param) => {
|
|
68
|
+
console.log("elements");
|
|
69
|
+
console.log(session.elements);
|
|
70
|
+
console.log("quote");
|
|
71
|
+
console.log(session.quote);
|
|
72
|
+
console.log("param");
|
|
73
|
+
console.log(param);
|
|
73
74
|
return await drawSold(await getImageSrc(session, param));
|
|
74
75
|
});
|
|
75
76
|
}
|
|
77
|
+
if (cfg.atNotSay) {
|
|
78
|
+
ctx.middleware(async (session, next) => {
|
|
79
|
+
const elements = session.elements;
|
|
80
|
+
if (elements.length === 1 && elements[0].type === "at" && elements[0].attrs.id === session.selfId) {
|
|
81
|
+
await session.send("艾特我又不说话");
|
|
82
|
+
}
|
|
83
|
+
return next();
|
|
84
|
+
});
|
|
85
|
+
}
|
|
76
86
|
}
|
|
77
87
|
__name(apply, "apply");
|
|
78
88
|
async function getImageSrc(session, param) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
console.log("img");
|
|
91
|
-
return param.match(/<img[^>]*\s+src="([^"]+)"/i)?.[1] ?? null;
|
|
92
|
-
} else {
|
|
93
|
-
console.log("other");
|
|
94
|
-
const index = param.indexOf("<");
|
|
95
|
-
param = param.slice(index);
|
|
96
|
-
if (param?.length) {
|
|
97
|
-
return getImageSrc(session, param);
|
|
98
|
-
} else {
|
|
99
|
-
return "";
|
|
89
|
+
if (param?.length && param?.length === String(Number(param))?.length) {
|
|
90
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${param}&s=640`;
|
|
91
|
+
} else if (!param?.length) {
|
|
92
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${session.userId}&s=640`;
|
|
93
|
+
}
|
|
94
|
+
const elementArray = session.elements;
|
|
95
|
+
for (const element of elementArray) {
|
|
96
|
+
if (element?.type === "img") {
|
|
97
|
+
return element?.attrs?.src;
|
|
98
|
+
} else if (element?.type === "at" && element?.attrs?.id && element.attrs.id !== session.selfId) {
|
|
99
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${element.attrs.id}&s=640`;
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
|
|
102
|
+
const quoteElementArray = session?.quote?.elements;
|
|
103
|
+
if (quoteElementArray?.length) {
|
|
104
|
+
for (const element of quoteElementArray) {
|
|
105
|
+
if (element?.type === "img") {
|
|
106
|
+
return element?.attrs?.src;
|
|
107
|
+
} else if (element?.type === "at" && element?.attrs?.id && element.attrs.id !== session.selfId) {
|
|
108
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${element?.attrs?.id}&s=640`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
106
111
|
}
|
|
107
|
-
return
|
|
112
|
+
return "";
|
|
108
113
|
}
|
|
109
114
|
__name(getImageSrc, "getImageSrc");
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (next) {
|
|
116
|
-
const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
|
|
117
|
-
result.push(...data2);
|
|
118
|
-
}
|
|
119
|
-
} catch {
|
|
115
|
+
function initAssets(fileName) {
|
|
116
|
+
if (fs.existsSync(`${__dirname}/../assets/${fileName}`)) {
|
|
117
|
+
fs.mkdirSync(`${assetsDir}/`, { recursive: true });
|
|
118
|
+
fs.copyFileSync(`${__dirname}/../assets/${fileName}`, `${assetsDir}/${fileName}`);
|
|
119
|
+
fs.rmSync(`${__dirname}/../assets/${fileName}`);
|
|
120
120
|
}
|
|
121
|
-
return result;
|
|
122
121
|
}
|
|
123
|
-
__name(
|
|
122
|
+
__name(initAssets, "initAssets");
|
|
124
123
|
async function drawLock(baseImage) {
|
|
125
124
|
if (!baseImage) {
|
|
126
125
|
return "输入无效。";
|
|
127
126
|
}
|
|
128
127
|
const lockUrl = `${baseDir}/data/starfx-bot/assets/lock.png`;
|
|
129
|
-
|
|
128
|
+
let image;
|
|
129
|
+
try {
|
|
130
|
+
image = await import_jimp.Jimp.read(baseImage);
|
|
131
|
+
} catch (err) {
|
|
132
|
+
console.error(err);
|
|
133
|
+
return "发生错误。";
|
|
134
|
+
}
|
|
130
135
|
const size1 = image.width > image.height ? image.height : image.width;
|
|
131
136
|
image.cover({ w: size1, h: size1 });
|
|
132
137
|
const overlay = await import_jimp.Jimp.read(lockUrl);
|
|
@@ -139,9 +144,15 @@ async function drawSold(baseImage) {
|
|
|
139
144
|
if (!baseImage) {
|
|
140
145
|
return "输入无效。";
|
|
141
146
|
}
|
|
142
|
-
const soldUrl = `${
|
|
143
|
-
|
|
144
|
-
|
|
147
|
+
const soldUrl = `${assetsDir}/sold.png`;
|
|
148
|
+
let image;
|
|
149
|
+
try {
|
|
150
|
+
image = await import_jimp.Jimp.read(baseImage);
|
|
151
|
+
} catch (err) {
|
|
152
|
+
console.error(err);
|
|
153
|
+
return "发生错误。";
|
|
154
|
+
}
|
|
155
|
+
const size1 = Math.min(image.width, image.height);
|
|
145
156
|
image.cover({ w: size1, h: size1 });
|
|
146
157
|
const middle = new import_jimp.Jimp({ width: image.width, height: image.height, color: 4294967295 });
|
|
147
158
|
const overlay = await import_jimp.Jimp.read(soldUrl);
|
|
@@ -152,21 +163,15 @@ async function drawSold(baseImage) {
|
|
|
152
163
|
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
153
164
|
}
|
|
154
165
|
__name(drawSold, "drawSold");
|
|
155
|
-
function getMemberInfo(member, id) {
|
|
156
|
-
const name2 = member?.nick || member?.user?.nick || member?.user?.name || id;
|
|
157
|
-
const avatar = member?.avatar || member?.user?.avatar;
|
|
158
|
-
return [name2, avatar];
|
|
159
|
-
}
|
|
160
|
-
__name(getMemberInfo, "getMemberInfo");
|
|
161
166
|
// Annotate the CommonJS export names for ESM import in node:
|
|
162
167
|
0 && (module.exports = {
|
|
163
168
|
Config,
|
|
164
169
|
apply,
|
|
170
|
+
assetsDir,
|
|
165
171
|
baseDir,
|
|
166
172
|
drawLock,
|
|
167
173
|
drawSold,
|
|
168
174
|
getImageSrc,
|
|
169
|
-
getMemberInfo,
|
|
170
175
|
name,
|
|
171
176
|
usage
|
|
172
177
|
});
|