Skip to content

Commit fc127bb

Browse files
committed
Refactor Starboard event handlers
Ensure proper handling of partial messages in `messageReactionAdd` and `messageReactionRemove` events. Update message references to simplify code and improve consistency.
1 parent a25258e commit fc127bb

1 file changed

Lines changed: 30 additions & 25 deletions

File tree

src/modules/starboard/starboard.listener.ts

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -152,18 +152,20 @@ export const StarboardListener: EventListener = {
152152
);
153153
},
154154
async messageReactionAdd(_, reaction) {
155+
let message = reaction.message;
156+
if (message.partial) message = await reaction.message.fetch();
155157
if (
156-
!reaction.message.inGuild() ||
157-
reaction.message.author.bot ||
158-
reaction.message.author.system ||
159-
reaction.message.channel.id === config.starboard.channel ||
158+
!message.inGuild() ||
159+
message.author.bot ||
160+
message.author.system ||
161+
message.channel.id === config.starboard.channel ||
160162
reaction.emoji.name !== config.starboard.emojiId
161163
)
162164
return;
163165
await reaction.fetch();
164166
const count = reaction.count || 1;
165167
if (count >= config.starboard.threshold) {
166-
const starboardChannel = await reaction.message.guild.channels.fetch(
168+
const starboardChannel = await message.guild.channels.fetch(
167169
config.starboard.channel,
168170
);
169171

@@ -174,14 +176,14 @@ export const StarboardListener: EventListener = {
174176
return;
175177
}
176178
const existingStarboardMessage =
177-
await getStarboardMessageForOriginalMessageId(reaction.message.id);
179+
await getStarboardMessageForOriginalMessageId(message.id);
178180
try {
179-
const member = await getMember(reaction.message);
181+
const member = await getMember(message);
180182

181183
if (!member) {
182184
logger.info(
183185
"Member not found for reaction message id %s, skipping",
184-
reaction.message.id,
186+
message.id,
185187
);
186188
return;
187189
}
@@ -190,51 +192,54 @@ export const StarboardListener: EventListener = {
190192
await updateStarboardMessage(
191193
starboardChannel,
192194
existingStarboardMessage,
193-
reaction.message,
195+
message,
194196
member,
195197
count,
196198
);
197199
}
198200

199201
const starboardMessageContent = await createStarboardMessageFromMessage(
200-
reaction.message,
202+
message,
201203
member,
202204
count,
203205
);
204206

205-
const message = await starboardChannel.send({
207+
const starboardMessage = await starboardChannel.send({
206208
...starboardMessageContent,
207209
allowedMentions: {
208210
parse: [],
209211
},
210212
});
211-
212-
await createStarboardMessage(
213-
reaction.message.id,
214-
reaction.message.channelId,
215-
message.id,
216-
);
213+
if (!existingStarboardMessage) {
214+
await createStarboardMessage(
215+
message.id,
216+
message.channelId,
217+
starboardMessage.id,
218+
);
219+
}
217220
} catch (error) {
218221
logger.error("Error sending starboard message", error);
219222
}
220223
}
221224
},
222225
async messageReactionRemove(_, reaction) {
226+
let message = reaction.message;
227+
if (message.partial) message = await reaction.message.fetch();
223228
if (
224-
!reaction.message.inGuild() ||
225-
reaction.message.author.bot ||
226-
reaction.message.author.system ||
227-
reaction.message.channel.id === config.starboard.channel ||
229+
!message.inGuild() ||
230+
message.author.bot ||
231+
message.author.system ||
232+
message.channel.id === config.starboard.channel ||
228233
reaction.emoji.name !== config.starboard.emojiId
229234
)
230235
return;
231236
await reaction.fetch();
232237
const count = reaction.count || 0;
233238
const existingStarboardMessage =
234-
await getStarboardMessageForOriginalMessageId(reaction.message.id);
239+
await getStarboardMessageForOriginalMessageId(message.id);
235240
if (!existingStarboardMessage) return;
236241
try {
237-
const member = await getMember(reaction.message);
242+
const member = await getMember(message);
238243

239244
if (!member) {
240245
logger.info(
@@ -245,7 +250,7 @@ export const StarboardListener: EventListener = {
245250
}
246251

247252
if (existingStarboardMessage) {
248-
const starboardChannel = await reaction.message.guild.channels.fetch(
253+
const starboardChannel = await message.guild.channels.fetch(
249254
config.starboard.channel,
250255
);
251256
if (
@@ -261,7 +266,7 @@ export const StarboardListener: EventListener = {
261266
await updateStarboardMessage(
262267
starboardChannel,
263268
existingStarboardMessage,
264-
reaction.message,
269+
message,
265270
member,
266271
count,
267272
);

0 commit comments

Comments
 (0)