Ver Fonte

Fix more reactions

ghorsington há 5 anos atrás
pai
commit
23c9765ac1
1 ficheiros alterados com 10 adições e 7 exclusões
  1. 10 7
      src/commands/react.ts

+ 10 - 7
src/commands/react.ts

@@ -8,16 +8,19 @@ import { isAuthorisedAsync } from "../util";
 
 const pattern = /^react to\s+"([^"]+)"\s+with\s+\<:[^:]+:([^\>]+)\>$/i;
 
-async function getRandomEmotes(allowedTypes: ReactionType[]) {
+async function getRandomEmotes(allowedTypes: ReactionType[], limit: number) {
     let reactionEmotesRepo = getRepository(ReactionEmote);
 
-    return await reactionEmotesRepo.query(`
+    let a = await reactionEmotesRepo.query(`
         select reactionId 
         from (  select type, reactionId
                 from reaction_emote
                 where type in (${allowedTypes.map(s => "?").join(",")})
                 order by type, random() )
-        group by type`, allowedTypes) as string[];
+        group by type
+        limit ${limit}`, allowedTypes) as ReactionEmote[];
+
+    return a;
 }
 
 export default {
@@ -131,7 +134,7 @@ export default {
             reactionEmoteTypes.add(user.mentionReactionType);
         }
 
-        let randomEmotes = await getRandomEmotes([...reactionEmoteTypes]);
+        let randomEmotes = await getRandomEmotes([...reactionEmoteTypes], 5);
 
         if(randomEmotes.length == 0)
             return false;
@@ -159,18 +162,18 @@ export default {
             emoteType = knownUser.mentionReactionType;
         }
 
-        let emotes = await getRandomEmotes([ emoteType ]);
+        let emotes = await getRandomEmotes([ emoteType ], 1);
 
         if(emotes.length != 1)
             return false;
 
-        let emote = client.emojis.find(e => e.id == emotes[0]);
+        let emote = client.emojis.find(e => e.id == emotes[0].reactionId);
 
         if (!emote) {
             console.log(`WARNING: Emote ${emotes[0]} no longer is valid. Deleting invalid emojis from the list...`);
 
             let emotesRepo = getRepository(ReactionEmote);
-            emotesRepo.delete({ reactionId: emotes[0] });
+            await emotesRepo.delete({ reactionId: emotes[0].reactionId });
             return false;
         }