koishi-plugin-starfx-bot 0.0.2 → 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 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
- 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
+ }
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
@@ -4,7 +4,7 @@
4
4
  "contributors": [
5
5
  "StarFreedomX <starfreedomx@outlook.com>"
6
6
  ],
7
- "version": "0.0.2",
7
+ "version": "0.1.0",
8
8
  "main": "lib/index.js",
9
9
  "typings": "lib/index.d.ts",
10
10
  "files": [
package/assets/lock.png DELETED
Binary file