koishi-plugin-chat-analyse 0.4.5 → 0.4.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.
Files changed (2) hide show
  1. package/lib/index.js +31 -19
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -208,29 +208,40 @@ var Collector = class _Collector {
208
208
  if (this.pendingUserRequests.has(cacheKey)) return this.pendingUserRequests.get(cacheKey);
209
209
  const promise = (async () => {
210
210
  try {
211
- const existing = await this.ctx.database.get("analyse_user", { channelId, userId });
212
- if (existing.length > 0) {
213
- const { uid: uid2, userName: userName2, channelName: channelName2 } = existing[0];
214
- const cachedUser2 = { uid: uid2, userName: userName2, channelName: channelName2 };
215
- this.userCache.set(cacheKey, cachedUser2);
216
- return cachedUser2;
211
+ const [dbUser] = await this.ctx.database.get("analyse_user", { channelId, userId });
212
+ if (dbUser && dbUser.userName && dbUser.channelName) {
213
+ this.userCache.set(cacheKey, dbUser);
214
+ return dbUser;
217
215
  }
218
216
  const [guild, member] = await Promise.all([
219
217
  guildId ? bot.getGuild(guildId).catch(() => null) : Promise.resolve(null),
220
218
  guildId ? bot.getGuildMember(guildId, userId).catch(() => null) : Promise.resolve(null)
221
219
  ]);
222
220
  const user = !member ? await bot.getUser(userId).catch(() => null) : null;
223
- const newUserRecord = {
224
- channelId,
225
- userId,
226
- channelName: guild?.name || channelId,
227
- userName: member?.nick || member?.name || user?.name || userId
228
- };
229
- const createdUser = await this.ctx.database.create("analyse_user", newUserRecord);
230
- const { uid, userName, channelName } = createdUser;
231
- const cachedUser = { uid, userName, channelName };
232
- this.userCache.set(cacheKey, cachedUser);
233
- return cachedUser;
221
+ const fetchedUserName = member?.nick || member?.name || user?.name || "";
222
+ const fetchedChannelName = guild?.name || "";
223
+ if (dbUser) {
224
+ const needsUpdate = !dbUser.userName && fetchedUserName || !dbUser.channelName && fetchedChannelName;
225
+ if (needsUpdate) {
226
+ dbUser.userName = dbUser.userName || fetchedUserName;
227
+ dbUser.channelName = dbUser.channelName || fetchedChannelName;
228
+ await this.ctx.database.set("analyse_user", { uid: dbUser.uid }, {
229
+ userName: dbUser.userName,
230
+ channelName: dbUser.channelName
231
+ });
232
+ }
233
+ if (dbUser.userName && dbUser.channelName) this.userCache.set(cacheKey, dbUser);
234
+ return dbUser;
235
+ } else {
236
+ const createdUser = await this.ctx.database.create("analyse_user", {
237
+ channelId,
238
+ userId,
239
+ userName: fetchedUserName,
240
+ channelName: fetchedChannelName
241
+ });
242
+ if (createdUser.userName && createdUser.channelName) this.userCache.set(cacheKey, createdUser);
243
+ return createdUser;
244
+ }
234
245
  } catch (error) {
235
246
  this.ctx.logger.error(`创建或获取用户(${cacheKey})失败:`, error);
236
247
  return null;
@@ -894,8 +905,9 @@ var WhoAt = class {
894
905
  const userInfoMap = new Map(users.map((u) => [u.uid, { name: u.userName, id: u.userId }]));
895
906
  const messageElements = records.map((record) => {
896
907
  const senderInfo = userInfoMap.get(record.uid);
897
- const userId = senderInfo?.id;
898
- const authorElement = (0, import_koishi4.h)("author", { userId, name: userId });
908
+ const userId = senderInfo.id;
909
+ const userName = senderInfo.name || userId;
910
+ const authorElement = (0, import_koishi4.h)("author", { userId, name: userName });
899
911
  const contentElement = import_koishi4.h.text(record.content);
900
912
  return (0, import_koishi4.h)("message", {}, [authorElement, contentElement]);
901
913
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-chat-analyse",
3
3
  "description": "聊天记录分析",
4
- "version": "0.4.5",
4
+ "version": "0.4.6",
5
5
  "contributors": [
6
6
  "Yis_Rime <yis_rime@outlook.com>"
7
7
  ],