koishi-plugin-starfx-bot 0.0.2 → 0.1.1
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/assets/sold.png +0 -0
- package/lib/index.d.ts +5 -2
- package/lib/index.js +81 -36
- package/package.json +1 -1
package/assets/sold.png
ADDED
|
Binary file
|
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;
|
|
10
|
-
export declare function
|
|
11
|
+
export declare function getImageSrc(session: Session, param: string): Promise<string>;
|
|
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,49 +58,72 @@ 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
|
+
const index = param.indexOf("<");
|
|
94
|
+
param = param.slice(index);
|
|
95
|
+
if (param?.length) {
|
|
96
|
+
return "";
|
|
97
|
+
} else {
|
|
98
|
+
return getImageSrc(session, param);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (userid) {
|
|
102
|
+
const memberList = await getMemberList(session, gid);
|
|
103
|
+
const selected = memberList.find((u) => u.user.id == userid);
|
|
104
|
+
return getMemberInfo(selected, selected.user.id)[1];
|
|
105
|
+
}
|
|
106
|
+
return imageSrc;
|
|
107
|
+
}
|
|
108
|
+
__name(getImageSrc, "getImageSrc");
|
|
109
|
+
async function getMemberList(session, gid) {
|
|
110
|
+
let result = [];
|
|
111
|
+
try {
|
|
112
|
+
const { data, next } = await session.bot.getGuildMemberList(session.guildId);
|
|
113
|
+
result = data;
|
|
114
|
+
if (next) {
|
|
115
|
+
const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
|
|
116
|
+
result.push(...data2);
|
|
117
|
+
}
|
|
118
|
+
} catch {
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
__name(getMemberList, "getMemberList");
|
|
100
123
|
async function drawLock(baseImage) {
|
|
124
|
+
if (!baseImage) {
|
|
125
|
+
return "输入无效。";
|
|
126
|
+
}
|
|
101
127
|
const lockUrl = `${baseDir}/data/starfx-bot/assets/lock.png`;
|
|
102
128
|
const image = await import_jimp.Jimp.read(baseImage);
|
|
103
129
|
const size1 = image.width > image.height ? image.height : image.width;
|
|
@@ -108,6 +134,23 @@ async function drawLock(baseImage) {
|
|
|
108
134
|
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
109
135
|
}
|
|
110
136
|
__name(drawLock, "drawLock");
|
|
137
|
+
async function drawSold(baseImage) {
|
|
138
|
+
if (!baseImage) {
|
|
139
|
+
return "输入无效。";
|
|
140
|
+
}
|
|
141
|
+
const soldUrl = `${baseDir}/data/starfx-bot/assets/sold.png`;
|
|
142
|
+
const image = await import_jimp.Jimp.read(baseImage);
|
|
143
|
+
const size1 = image.width > image.height ? image.height : image.width;
|
|
144
|
+
image.cover({ w: size1, h: size1 });
|
|
145
|
+
const middle = new import_jimp.Jimp({ width: image.width, height: image.height, color: 4294967295 });
|
|
146
|
+
const overlay = await import_jimp.Jimp.read(soldUrl);
|
|
147
|
+
overlay.resize({ w: image.width * 182 / 240 });
|
|
148
|
+
middle.opacity(0.4);
|
|
149
|
+
image.composite(middle);
|
|
150
|
+
image.composite(overlay, image.width * 29 / 240, image.width * 29 / 240);
|
|
151
|
+
return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
|
|
152
|
+
}
|
|
153
|
+
__name(drawSold, "drawSold");
|
|
111
154
|
function getMemberInfo(member, id) {
|
|
112
155
|
const name2 = member?.nick || member?.user?.nick || member?.user?.name || id;
|
|
113
156
|
const avatar = member?.avatar || member?.user?.avatar;
|
|
@@ -120,6 +163,8 @@ __name(getMemberInfo, "getMemberInfo");
|
|
|
120
163
|
apply,
|
|
121
164
|
baseDir,
|
|
122
165
|
drawLock,
|
|
166
|
+
drawSold,
|
|
167
|
+
getImageSrc,
|
|
123
168
|
getMemberInfo,
|
|
124
169
|
name,
|
|
125
170
|
usage
|