@@ -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