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.
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 drawLock(baseImage: string): Promise<h>;
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
- async function getMemberList(session, gid) {
59
- let result = [];
60
- try {
61
- const { data, next } = await session.bot.getGuildMemberList(session.guildId);
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
- const { gid } = session;
75
- let userid = "";
76
- let imageSrc = "";
77
- if (!param) {
78
- console.log("no");
79
- userid = session.userId;
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
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "contributors": [
5
5
  "StarFreedomX <starfreedomx@outlook.com>"
6
6
  ],
7
- "version": "0.0.2",
7
+ "version": "0.1.1",
8
8
  "main": "lib/index.js",
9
9
  "typings": "lib/index.d.ts",
10
10
  "files": [