koishi-plugin-ll-brick 1.0.5 → 1.0.6
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.js +33 -7
- package/package.json +1 -1
- package/readme.md +9 -0
package/lib/index.js
CHANGED
|
@@ -75,13 +75,15 @@ function stripMarkdown(md) {
|
|
|
75
75
|
.replace(/\n{3,}/g, '\n\n')
|
|
76
76
|
.trim();
|
|
77
77
|
}
|
|
78
|
-
async function sendQQMarkdown(session, imageUrl, text) {
|
|
78
|
+
async function sendQQMarkdown(session, imageUrl, imageSize, text) {
|
|
79
79
|
const channelId = session.guildId;
|
|
80
80
|
const internal = session.bot?.internal;
|
|
81
81
|
if (!channelId || !internal || typeof internal.sendMessage !== 'function') {
|
|
82
82
|
return false;
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
// QQ markdown 图片必须带尺寸参数(如 #240px #240px),否则会显示异常/不显示
|
|
85
|
+
const img = imageUrl ? `` : '';
|
|
86
|
+
const md = [img, text].filter(Boolean).join('\n\n');
|
|
85
87
|
const plain = stripMarkdown(md) || ' ';
|
|
86
88
|
try {
|
|
87
89
|
await internal.sendMessage(channelId, {
|
|
@@ -100,6 +102,22 @@ async function sendQQMarkdown(session, imageUrl, text) {
|
|
|
100
102
|
return false;
|
|
101
103
|
}
|
|
102
104
|
}
|
|
105
|
+
// QQ 官方适配器未实现 getGuildMemberIter/getGuildMemberList,改走开放平台群成员列表 API
|
|
106
|
+
async function getQQMemberIds(session) {
|
|
107
|
+
const http = session.bot?.http;
|
|
108
|
+
if (!http || typeof http.get !== 'function') return [];
|
|
109
|
+
try {
|
|
110
|
+
const resp = await http.get(`/v2/groups/${session.guildId}/members`);
|
|
111
|
+
const list = resp?.data;
|
|
112
|
+
if (!Array.isArray(list)) return [];
|
|
113
|
+
return list
|
|
114
|
+
.map((m) => m?.member_openid || m?.openid || m?.id || m?.member?.openid || m?.member?.user?.id || m?.user?.id)
|
|
115
|
+
.filter(Boolean);
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
103
121
|
async function apply(ctx, config) {
|
|
104
122
|
ctx.model.extend('brick', {
|
|
105
123
|
id: 'unsigned',
|
|
@@ -151,7 +169,7 @@ async function apply(ctx, config) {
|
|
|
151
169
|
users[user].burning = false;
|
|
152
170
|
const fireDone = `${atUser(session, session.userId)} 砖已经烧好啦`;
|
|
153
171
|
if (session.platform === 'qq') {
|
|
154
|
-
await sendQQMarkdown(session, FIRE_IMG, fireDone);
|
|
172
|
+
await sendQQMarkdown(session, FIRE_IMG, 447, fireDone);
|
|
155
173
|
}
|
|
156
174
|
else {
|
|
157
175
|
await session.send(`${koishi_1.h.image(FIRE_IMG)}${fireDone}`);
|
|
@@ -207,7 +225,7 @@ async function apply(ctx, config) {
|
|
|
207
225
|
if (muteErr)
|
|
208
226
|
msg += '\n因为我不是群管理员,所以并没什么卵用';
|
|
209
227
|
if (isQQ) {
|
|
210
|
-
await sendQQMarkdown(session, BRICK_IMG, msg);
|
|
228
|
+
await sendQQMarkdown(session, BRICK_IMG, 240, msg);
|
|
211
229
|
return;
|
|
212
230
|
}
|
|
213
231
|
return `${brickImg}${msg}`;
|
|
@@ -218,7 +236,7 @@ async function apply(ctx, config) {
|
|
|
218
236
|
if (muteErr)
|
|
219
237
|
msg += '\n因为我不是群管理员,所以并没什么卵用';
|
|
220
238
|
if (isQQ) {
|
|
221
|
-
await sendQQMarkdown(session, BRICK_IMG, msg);
|
|
239
|
+
await sendQQMarkdown(session, BRICK_IMG, 240, msg);
|
|
222
240
|
return;
|
|
223
241
|
}
|
|
224
242
|
return `${brickImg}${msg}`;
|
|
@@ -252,8 +270,16 @@ async function apply(ctx, config) {
|
|
|
252
270
|
.alias("随机拍人")
|
|
253
271
|
.action(async ({ session }) => {
|
|
254
272
|
const guildMember = [];
|
|
255
|
-
|
|
256
|
-
guildMember.push(
|
|
273
|
+
if (session.platform === 'qq') {
|
|
274
|
+
guildMember.push(...await getQQMemberIds(session));
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
for await (const member of session.bot.getGuildMemberIter(session.guildId)) {
|
|
278
|
+
guildMember.push(member?.user.id);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (!guildMember.length) {
|
|
282
|
+
return '获取群成员列表失败,无法随机拍人';
|
|
257
283
|
}
|
|
258
284
|
await session.execute(`砖头.拍人 ${koishi_1.h.at(koishi_1.Random.pick(guildMember))}`);
|
|
259
285
|
});
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -13,6 +13,15 @@
|
|
|
13
13
|
- `砖头 查看` — 查看自己的砖头数量
|
|
14
14
|
- `砖头 签到`(可选开启)— 每日签到获取随机砖头
|
|
15
15
|
|
|
16
|
+
## v1.0.6 修复
|
|
17
|
+
|
|
18
|
+
- 修复 **`砖头 随机拍人` 报错 `not implemented: getGuildMemberList`**(QQ 官方适配器未实现群成员迭代接口):
|
|
19
|
+
- QQ 平台改为调用开放平台群成员列表 API(`/v2/groups/{openid}/members`)随机挑人;其他平台保持原逻辑
|
|
20
|
+
- 获取不到成员时返回提示,不再崩溃
|
|
21
|
+
- 修复 **拍人/烧砖完成消息中 markdown 图片不显示**:
|
|
22
|
+
- 根因:QQ markdown 图片必须带尺寸参数(如 `#240px #240px`),之前 `` 没带,图片显示异常
|
|
23
|
+
- 修复:嵌入图片统一加 `#240px #240px`(拍人)/ `#447px #447px`(烧砖)尺寸参数
|
|
24
|
+
|
|
16
25
|
## v1.0.5 修复
|
|
17
26
|
|
|
18
27
|
- 修复 **手机端 QQ 不显示图片**(电脑端正常)的问题:
|