koishi-plugin-starfx-bot 0.1.2 → 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 CHANGED
@@ -1,6 +1,7 @@
1
- import { Context, h, Schema, Session, Universal } from 'koishi';
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<string>;
12
- export declare function drawLock(baseImage: string): Promise<"输入无效。" | h>;
13
- export declare function drawSold(baseImage: string): Promise<"输入无效。" | h>;
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
- if (fs.existsSync(`${__dirname}/../assets/lock.png`)) {
57
- fs.mkdirSync(`${ctx.baseDir}/data/starfx-bot/assets/`, { recursive: true });
58
- fs.copyFileSync(`${__dirname}/../assets/lock.png`, `${ctx.baseDir}/data/starfx-bot/assets/lock.png`);
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,63 +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
- const { gid } = session;
80
- let userid = "";
81
- let imageSrc = "";
82
- console.log(param);
83
- if (!param) {
84
- console.log("no");
85
- userid = session.userId;
86
- } else if (param.startsWith("<at id=")) {
87
- console.log("at");
88
- userid = param.match(/<at\s+id="(\d+)"\s*\/?>/i)?.[1] ?? null;
89
- } else if (param.startsWith("<img src=")) {
90
- console.log("img");
91
- return param.match(/<img[^>]*\s+src="([^"]+)"/i)?.[1] ?? null;
92
- } else {
93
- console.log("other");
94
- const index = param.indexOf("<");
95
- param = param.slice(index);
96
- if (param?.length) {
97
- return getImageSrc(session, param);
98
- } else {
99
- return "";
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`;
100
90
  }
101
91
  }
102
- if (userid) {
103
- const memberList = await getMemberList(session, gid);
104
- const selected = memberList.find((u) => u.user.id == userid);
105
- return getMemberInfo(selected, selected.user.id)[1];
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
+ }
106
101
  }
107
- return imageSrc;
102
+ return "";
108
103
  }
109
104
  __name(getImageSrc, "getImageSrc");
110
- async function getMemberList(session, gid) {
111
- let result = [];
112
- try {
113
- const { data, next } = await session.bot.getGuildMemberList(session.guildId);
114
- result = data;
115
- if (next) {
116
- const { data: data2 } = await session.bot.getGuildMemberList(session.guildId, next);
117
- result.push(...data2);
118
- }
119
- } 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}`);
120
110
  }
121
- return result;
122
111
  }
123
- __name(getMemberList, "getMemberList");
112
+ __name(initAssets, "initAssets");
124
113
  async function drawLock(baseImage) {
125
114
  if (!baseImage) {
126
115
  return "输入无效。";
127
116
  }
128
117
  const lockUrl = `${baseDir}/data/starfx-bot/assets/lock.png`;
129
- const image = await import_jimp.Jimp.read(baseImage);
118
+ let image;
119
+ try {
120
+ image = await import_jimp.Jimp.read(baseImage);
121
+ } catch (err) {
122
+ console.error(err);
123
+ return "发生错误。";
124
+ }
130
125
  const size1 = image.width > image.height ? image.height : image.width;
131
126
  image.cover({ w: size1, h: size1 });
132
127
  const overlay = await import_jimp.Jimp.read(lockUrl);
@@ -139,9 +134,15 @@ async function drawSold(baseImage) {
139
134
  if (!baseImage) {
140
135
  return "输入无效。";
141
136
  }
142
- const soldUrl = `${baseDir}/data/starfx-bot/assets/sold.png`;
143
- const image = await import_jimp.Jimp.read(baseImage);
144
- const size1 = image.width > image.height ? image.height : image.width;
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);
145
146
  image.cover({ w: size1, h: size1 });
146
147
  const middle = new import_jimp.Jimp({ width: image.width, height: image.height, color: 4294967295 });
147
148
  const overlay = await import_jimp.Jimp.read(soldUrl);
@@ -152,21 +153,15 @@ async function drawSold(baseImage) {
152
153
  return import_koishi.h.image(await image.getBuffer("image/jpeg"), "image/jpeg");
153
154
  }
154
155
  __name(drawSold, "drawSold");
155
- function getMemberInfo(member, id) {
156
- const name2 = member?.nick || member?.user?.nick || member?.user?.name || id;
157
- const avatar = member?.avatar || member?.user?.avatar;
158
- return [name2, avatar];
159
- }
160
- __name(getMemberInfo, "getMemberInfo");
161
156
  // Annotate the CommonJS export names for ESM import in node:
162
157
  0 && (module.exports = {
163
158
  Config,
164
159
  apply,
160
+ assetsDir,
165
161
  baseDir,
166
162
  drawLock,
167
163
  drawSold,
168
164
  getImageSrc,
169
- getMemberInfo,
170
165
  name,
171
166
  usage
172
167
  });
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "contributors": [
5
5
  "StarFreedomX <starfreedomx@outlook.com>"
6
6
  ],
7
- "version": "0.1.2",
7
+ "version": "0.1.3",
8
8
  "main": "lib/index.js",
9
9
  "typings": "lib/index.d.ts",
10
10
  "files": [