koishi-plugin-starfx-bot 0.1.1 → 0.1.3
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 +5 -5
- package/lib/index.js +55 -59
- package/package.json +1 -1
- package/assets/lock.png +0 -0
- package/assets/sold.png +0 -0
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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,7 +9,6 @@ export interface Config {
|
|
|
8
9
|
export declare const Config: Schema<Config>;
|
|
9
10
|
export declare const usage = "StarFreedomX\u7684\u81EA\u7528\u63D2\u4EF6 \u653E\u4E86\u4E00\u4E9B\u5C0F\u529F\u80FD";
|
|
10
11
|
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[];
|
|
12
|
+
export declare function getImageSrc(session: Session, param: string): Promise<any>;
|
|
13
|
+
export declare function drawLock(baseImage: string): Promise<h | "输入无效。" | "发生错误。">;
|
|
14
|
+
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,6 +46,7 @@ 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
52
|
openSold: import_koishi.Schema.boolean().default(true).description('开启闲鱼"卖掉了"功能')
|
|
@@ -53,16 +54,9 @@ var Config = import_koishi.Schema.object({
|
|
|
53
54
|
var usage = "StarFreedomX的自用插件 放了一些小功能";
|
|
54
55
|
function apply(ctx, cfg) {
|
|
55
56
|
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
|
-
}
|
|
57
|
+
assetsDir = `${ctx.baseDir}/data/starfx-bot/assets`;
|
|
58
|
+
initAssets("lock.png");
|
|
59
|
+
initAssets("sold.png");
|
|
66
60
|
if (cfg.openLock) {
|
|
67
61
|
ctx.command("封印 [param]").action(async ({ session }, param) => {
|
|
68
62
|
return await drawLock(await getImageSrc(session, param));
|
|
@@ -70,62 +64,64 @@ function apply(ctx, cfg) {
|
|
|
70
64
|
}
|
|
71
65
|
if (cfg.openSold) {
|
|
72
66
|
ctx.command("卖掉了 [param]").action(async ({ session }, param) => {
|
|
67
|
+
console.log("elements");
|
|
68
|
+
console.log(session.elements);
|
|
69
|
+
console.log("quote");
|
|
70
|
+
console.log(session.quote);
|
|
71
|
+
console.log("param");
|
|
72
|
+
console.log(param);
|
|
73
73
|
return await drawSold(await getImageSrc(session, param));
|
|
74
74
|
});
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
__name(apply, "apply");
|
|
78
78
|
async function getImageSrc(session, param) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return param.match(/<img[^>]*\s+src="([^"]+)"/i)?.[1] ?? null;
|
|
91
|
-
} else {
|
|
92
|
-
console.log("other");
|
|
93
|
-
const index = param.indexOf("<");
|
|
94
|
-
param = param.slice(index);
|
|
95
|
-
if (param?.length) {
|
|
96
|
-
return "";
|
|
97
|
-
} else {
|
|
98
|
-
return getImageSrc(session, param);
|
|
79
|
+
if (param?.length && param?.length === String(Number(param))?.length) {
|
|
80
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${param}&s=640`;
|
|
81
|
+
} else if (!param?.length) {
|
|
82
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${session.userId}&s=640`;
|
|
83
|
+
}
|
|
84
|
+
const elementArray = session.elements;
|
|
85
|
+
for (const element of elementArray) {
|
|
86
|
+
if (element?.type === "img") {
|
|
87
|
+
return element?.attrs?.src;
|
|
88
|
+
} else if (element?.type === "at" && element?.attrs?.id && element.attrs.id !== session.selfId) {
|
|
89
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${element.attrs.id}&s=640`;
|
|
99
90
|
}
|
|
100
91
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const
|
|
104
|
-
|
|
92
|
+
const quoteElementArray = session?.quote?.elements;
|
|
93
|
+
if (quoteElementArray?.length) {
|
|
94
|
+
for (const element of quoteElementArray) {
|
|
95
|
+
if (element?.type === "img") {
|
|
96
|
+
return element?.attrs?.src;
|
|
97
|
+
} else if (element?.type === "at" && element?.attrs?.id && element.attrs.id !== session.selfId) {
|
|
98
|
+
return `https://q1.qlogo.cn/g?b=qq&nk=${element?.attrs?.id}&s=640`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
105
101
|
}
|
|
106
|
-
return
|
|
102
|
+
return "";
|
|
107
103
|
}
|
|
108
104
|
__name(getImageSrc, "getImageSrc");
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if (next) {
|
|
115
|
-
const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
|
|
116
|
-
result.push(...data2);
|
|
117
|
-
}
|
|
118
|
-
} catch {
|
|
105
|
+
function initAssets(fileName) {
|
|
106
|
+
if (fs.existsSync(`${__dirname}/../assets/${fileName}`)) {
|
|
107
|
+
fs.mkdirSync(`${assetsDir}/`, { recursive: true });
|
|
108
|
+
fs.copyFileSync(`${__dirname}/../assets/${fileName}`, `${assetsDir}/${fileName}`);
|
|
109
|
+
fs.rmSync(`${__dirname}/../assets/${fileName}`);
|
|
119
110
|
}
|
|
120
|
-
return result;
|
|
121
111
|
}
|
|
122
|
-
__name(
|
|
112
|
+
__name(initAssets, "initAssets");
|
|
123
113
|
async function drawLock(baseImage) {
|
|
124
114
|
if (!baseImage) {
|
|
125
115
|
return "输入无效。";
|
|
126
116
|
}
|
|
127
117
|
const lockUrl = `${baseDir}/data/starfx-bot/assets/lock.png`;
|
|
128
|
-
|
|
118
|
+
let image;
|
|
119
|
+
try {
|
|
120
|
+
image = await import_jimp.Jimp.read(baseImage);
|
|
121
|
+
} catch (err) {
|
|
122
|
+
console.error(err);
|
|
123
|
+
return "发生错误。";
|
|
124
|
+
}
|
|
129
125
|
const size1 = image.width > image.height ? image.height : image.width;
|
|
130
126
|
image.cover({ w: size1, h: size1 });
|
|
131
127
|
const overlay = await import_jimp.Jimp.read(lockUrl);
|
|
@@ -138,9 +134,15 @@ async function drawSold(baseImage) {
|
|
|
138
134
|
if (!baseImage) {
|
|
139
135
|
return "输入无效。";
|
|
140
136
|
}
|
|
141
|
-
const soldUrl = `${
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
const soldUrl = `${assetsDir}/sold.png`;
|
|
138
|
+
let image;
|
|
139
|
+
try {
|
|
140
|
+
image = await import_jimp.Jimp.read(baseImage);
|
|
141
|
+
} catch (err) {
|
|
142
|
+
console.error(err);
|
|
143
|
+
return "发生错误。";
|
|
144
|
+
}
|
|
145
|
+
const size1 = Math.min(image.width, image.height);
|
|
144
146
|
image.cover({ w: size1, h: size1 });
|
|
145
147
|
const middle = new import_jimp.Jimp({ width: image.width, height: image.height, color: 4294967295 });
|
|
146
148
|
const overlay = await import_jimp.Jimp.read(soldUrl);
|
|
@@ -151,21 +153,15 @@ async function drawSold(baseImage) {
|
|
|
151
153
|
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
152
154
|
}
|
|
153
155
|
__name(drawSold, "drawSold");
|
|
154
|
-
function getMemberInfo(member, id) {
|
|
155
|
-
const name2 = member?.nick || member?.user?.nick || member?.user?.name || id;
|
|
156
|
-
const avatar = member?.avatar || member?.user?.avatar;
|
|
157
|
-
return [name2, avatar];
|
|
158
|
-
}
|
|
159
|
-
__name(getMemberInfo, "getMemberInfo");
|
|
160
156
|
// Annotate the CommonJS export names for ESM import in node:
|
|
161
157
|
0 && (module.exports = {
|
|
162
158
|
Config,
|
|
163
159
|
apply,
|
|
160
|
+
assetsDir,
|
|
164
161
|
baseDir,
|
|
165
162
|
drawLock,
|
|
166
163
|
drawSold,
|
|
167
164
|
getImageSrc,
|
|
168
|
-
getMemberInfo,
|
|
169
165
|
name,
|
|
170
166
|
usage
|
|
171
167
|
});
|
package/package.json
CHANGED
package/assets/lock.png
DELETED
|
Binary file
|
package/assets/sold.png
DELETED
|
Binary file
|