koishi-plugin-starfx-bot 0.0.1 → 0.1.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 +4 -1
- package/lib/index.js +68 -36
- package/package.json +17 -1
- package/assets/lock.png +0 -0
package/lib/index.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { Context, h, Schema, Universal } from 'koishi';
|
|
1
|
+
import { Context, h, Schema, Session, Universal } from 'koishi';
|
|
2
2
|
export declare const name = "starfx-bot";
|
|
3
3
|
export declare let baseDir: string;
|
|
4
4
|
export interface Config {
|
|
5
5
|
openLock: boolean;
|
|
6
|
+
openSold: boolean;
|
|
6
7
|
}
|
|
7
8
|
export declare const Config: Schema<Config>;
|
|
8
9
|
export declare const usage = "StarFreedomX\u7684\u81EA\u7528\u63D2\u4EF6 \u653E\u4E86\u4E00\u4E9B\u5C0F\u529F\u80FD";
|
|
9
10
|
export declare function apply(ctx: Context, cfg: Config): void;
|
|
11
|
+
export declare function getImageSrc(session: Session, param: string): Promise<string>;
|
|
10
12
|
export declare function drawLock(baseImage: string): Promise<h>;
|
|
13
|
+
export declare function drawSold(baseImage: string): Promise<h>;
|
|
11
14
|
export declare function getMemberInfo(member: Universal.GuildMember, id: string): string[];
|
package/lib/index.js
CHANGED
|
@@ -34,6 +34,8 @@ __export(src_exports, {
|
|
|
34
34
|
apply: () => apply,
|
|
35
35
|
baseDir: () => baseDir,
|
|
36
36
|
drawLock: () => drawLock,
|
|
37
|
+
drawSold: () => drawSold,
|
|
38
|
+
getImageSrc: () => getImageSrc,
|
|
37
39
|
getMemberInfo: () => getMemberInfo,
|
|
38
40
|
name: () => name,
|
|
39
41
|
usage: () => usage
|
|
@@ -45,7 +47,8 @@ var fs = __toESM(require("fs"));
|
|
|
45
47
|
var name = "starfx-bot";
|
|
46
48
|
var baseDir;
|
|
47
49
|
var Config = import_koishi.Schema.object({
|
|
48
|
-
openLock: import_koishi.Schema.boolean().default(true).description("开启明日方舟封印功能")
|
|
50
|
+
openLock: import_koishi.Schema.boolean().default(true).description("开启明日方舟封印功能"),
|
|
51
|
+
openSold: import_koishi.Schema.boolean().default(true).description('开启闲鱼"卖掉了"功能')
|
|
49
52
|
});
|
|
50
53
|
var usage = "StarFreedomX的自用插件 放了一些小功能";
|
|
51
54
|
function apply(ctx, cfg) {
|
|
@@ -55,48 +58,61 @@ function apply(ctx, cfg) {
|
|
|
55
58
|
fs.copyFileSync(`${__dirname}/../assets/lock.png`, `${ctx.baseDir}/data/starfx-bot/assets/lock.png`);
|
|
56
59
|
fs.rmSync(`${__dirname}/../assets/lock.png`);
|
|
57
60
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
result = data;
|
|
63
|
-
if (next) {
|
|
64
|
-
const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
|
|
65
|
-
result.push(...data2);
|
|
66
|
-
}
|
|
67
|
-
} catch {
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
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`);
|
|
70
65
|
}
|
|
71
|
-
__name(getMemberList, "getMemberList");
|
|
72
66
|
if (cfg.openLock) {
|
|
73
67
|
ctx.command("封印 [param]").action(async ({ session }, param) => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
} else if (param.startsWith("<at id=")) {
|
|
81
|
-
console.log("at");
|
|
82
|
-
userid = param.match(/<at\s+id="(\d+)"\s*\/?>/i)?.[1] ?? null;
|
|
83
|
-
} else if (param.startsWith("<img src=")) {
|
|
84
|
-
console.log("img");
|
|
85
|
-
imageSrc = param.match(/<img[^>]*\s+src="([^"]+)"/i)?.[1] ?? null;
|
|
86
|
-
} else {
|
|
87
|
-
console.log("other");
|
|
88
|
-
}
|
|
89
|
-
if (userid) {
|
|
90
|
-
const memberList = await getMemberList(session, gid);
|
|
91
|
-
const selected = memberList.find((u) => u.user.id == userid);
|
|
92
|
-
const [name2, avatar] = getMemberInfo(selected, selected.user.id);
|
|
93
|
-
imageSrc = avatar;
|
|
94
|
-
}
|
|
95
|
-
return await drawLock(imageSrc);
|
|
68
|
+
return await drawLock(await getImageSrc(session, param));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (cfg.openSold) {
|
|
72
|
+
ctx.command("卖掉了 [param]").action(async ({ session }, param) => {
|
|
73
|
+
return await drawSold(await getImageSrc(session, param));
|
|
96
74
|
});
|
|
97
75
|
}
|
|
98
76
|
}
|
|
99
77
|
__name(apply, "apply");
|
|
78
|
+
async function getImageSrc(session, param) {
|
|
79
|
+
const { gid } = session;
|
|
80
|
+
let userid = "";
|
|
81
|
+
let imageSrc = "";
|
|
82
|
+
if (!param) {
|
|
83
|
+
console.log("no");
|
|
84
|
+
userid = session.userId;
|
|
85
|
+
} else if (param.startsWith("<at id=")) {
|
|
86
|
+
console.log("at");
|
|
87
|
+
userid = param.match(/<at\s+id="(\d+)"\s*\/?>/i)?.[1] ?? null;
|
|
88
|
+
} else if (param.startsWith("<img src=")) {
|
|
89
|
+
console.log("img");
|
|
90
|
+
return param.match(/<img[^>]*\s+src="([^"]+)"/i)?.[1] ?? null;
|
|
91
|
+
} else {
|
|
92
|
+
console.log("other");
|
|
93
|
+
}
|
|
94
|
+
if (userid) {
|
|
95
|
+
const memberList = await getMemberList(session, gid);
|
|
96
|
+
const selected = memberList.find((u) => u.user.id == userid);
|
|
97
|
+
return getMemberInfo(selected, selected.user.id)[1];
|
|
98
|
+
}
|
|
99
|
+
return imageSrc;
|
|
100
|
+
}
|
|
101
|
+
__name(getImageSrc, "getImageSrc");
|
|
102
|
+
async function getMemberList(session, gid) {
|
|
103
|
+
let result = [];
|
|
104
|
+
try {
|
|
105
|
+
const { data, next } = await session.bot.getGuildMemberList(session.guildId);
|
|
106
|
+
result = data;
|
|
107
|
+
if (next) {
|
|
108
|
+
const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
|
|
109
|
+
result.push(...data2);
|
|
110
|
+
}
|
|
111
|
+
} catch {
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
__name(getMemberList, "getMemberList");
|
|
100
116
|
async function drawLock(baseImage) {
|
|
101
117
|
const lockUrl = `${baseDir}/data/starfx-bot/assets/lock.png`;
|
|
102
118
|
const image = await import_jimp.Jimp.read(baseImage);
|
|
@@ -108,6 +124,20 @@ async function drawLock(baseImage) {
|
|
|
108
124
|
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
109
125
|
}
|
|
110
126
|
__name(drawLock, "drawLock");
|
|
127
|
+
async function drawSold(baseImage) {
|
|
128
|
+
const soldUrl = `${baseDir}/data/starfx-bot/assets/sold.png`;
|
|
129
|
+
const image = await import_jimp.Jimp.read(baseImage);
|
|
130
|
+
const size1 = image.width > image.height ? image.height : image.width;
|
|
131
|
+
image.cover({ w: size1, h: size1 });
|
|
132
|
+
const middle = new import_jimp.Jimp({ width: image.width, height: image.height, color: 4294967295 });
|
|
133
|
+
const overlay = await import_jimp.Jimp.read(soldUrl);
|
|
134
|
+
overlay.resize({ w: image.width * 182 / 240 });
|
|
135
|
+
middle.opacity(0.4);
|
|
136
|
+
image.composite(middle);
|
|
137
|
+
image.composite(overlay, image.width * 29 / 240, image.width * 29 / 240);
|
|
138
|
+
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
139
|
+
}
|
|
140
|
+
__name(drawSold, "drawSold");
|
|
111
141
|
function getMemberInfo(member, id) {
|
|
112
142
|
const name2 = member?.nick || member?.user?.nick || member?.user?.name || id;
|
|
113
143
|
const avatar = member?.avatar || member?.user?.avatar;
|
|
@@ -120,6 +150,8 @@ __name(getMemberInfo, "getMemberInfo");
|
|
|
120
150
|
apply,
|
|
121
151
|
baseDir,
|
|
122
152
|
drawLock,
|
|
153
|
+
drawSold,
|
|
154
|
+
getImageSrc,
|
|
123
155
|
getMemberInfo,
|
|
124
156
|
name,
|
|
125
157
|
usage
|
package/package.json
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koishi-plugin-starfx-bot",
|
|
3
3
|
"description": "StarFreedomX机器人的小功能,自用",
|
|
4
|
-
"
|
|
4
|
+
"contributors": [
|
|
5
|
+
"StarFreedomX <starfreedomx@outlook.com>"
|
|
6
|
+
],
|
|
7
|
+
"version": "0.1.0",
|
|
5
8
|
"main": "lib/index.js",
|
|
6
9
|
"typings": "lib/index.d.ts",
|
|
7
10
|
"files": [
|
|
@@ -10,12 +13,25 @@
|
|
|
10
13
|
"assets"
|
|
11
14
|
],
|
|
12
15
|
"license": "MIT",
|
|
16
|
+
"homepage": "https://github.com/StarFreedomX/starfx-bot",
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/StarFreedomX/starfx-bot.git"
|
|
20
|
+
},
|
|
13
21
|
"scripts": {},
|
|
14
22
|
"keywords": [
|
|
15
23
|
"chatbot",
|
|
16
24
|
"koishi",
|
|
17
25
|
"plugin"
|
|
18
26
|
],
|
|
27
|
+
"koishi": {
|
|
28
|
+
"description": {
|
|
29
|
+
"zh": "starfx的机器人小插件,自用"
|
|
30
|
+
},
|
|
31
|
+
"service": {},
|
|
32
|
+
"preview": true,
|
|
33
|
+
"hidden": false
|
|
34
|
+
},
|
|
19
35
|
"peerDependencies": {
|
|
20
36
|
"koishi": "^4.18.7"
|
|
21
37
|
},
|
package/assets/lock.png
DELETED
|
Binary file
|