3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-16 14:11:50 +00:00

ReactionRoles: queue reaction removals

This commit is contained in:
Dragory 2019-02-16 12:01:31 +02:00
parent add5367232
commit 8ddf53345d

View file

@ -1,10 +1,11 @@
import { decorators as d } from "knub"; import { decorators as d } from "knub";
import { CustomEmoji, errorMessage, isSnowflake, noop, successMessage } from "../utils"; import { CustomEmoji, errorMessage, isSnowflake, noop, sleep, successMessage } from "../utils";
import { GuildReactionRoles } from "../data/GuildReactionRoles"; import { GuildReactionRoles } from "../data/GuildReactionRoles";
import { Channel, Message, TextChannel } from "eris"; import { Channel, Message, TextChannel } from "eris";
import { ZeppelinPlugin } from "./ZeppelinPlugin"; import { ZeppelinPlugin } from "./ZeppelinPlugin";
import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { GuildSavedMessages } from "../data/GuildSavedMessages";
import { SavedMessage } from "../data/entities/SavedMessage"; import { SavedMessage } from "../data/entities/SavedMessage";
import { Queue } from "../Queue";
type ReactionRolePair = [string, string, string?]; type ReactionRolePair = [string, string, string?];
@ -14,6 +15,8 @@ export class ReactionRolesPlugin extends ZeppelinPlugin {
protected reactionRoles: GuildReactionRoles; protected reactionRoles: GuildReactionRoles;
protected savedMessages: GuildSavedMessages; protected savedMessages: GuildSavedMessages;
protected reactionRemoveQueue: Queue;
getDefaultOptions() { getDefaultOptions() {
return { return {
permissions: { permissions: {
@ -34,6 +37,7 @@ export class ReactionRolesPlugin extends ZeppelinPlugin {
async onLoad() { async onLoad() {
this.reactionRoles = GuildReactionRoles.getInstance(this.guildId); this.reactionRoles = GuildReactionRoles.getInstance(this.guildId);
this.savedMessages = GuildSavedMessages.getInstance(this.guildId); this.savedMessages = GuildSavedMessages.getInstance(this.guildId);
this.reactionRemoveQueue = new Queue();
} }
/** /**
@ -206,6 +210,9 @@ export class ReactionRolesPlugin extends ZeppelinPlugin {
} }
const reaction = emoji.id ? `${emoji.name}:${emoji.id}` : emoji.name; const reaction = emoji.id ? `${emoji.name}:${emoji.id}` : emoji.name;
msg.channel.removeMessageReaction(msg.id, reaction, userId).catch(noop); this.reactionRemoveQueue.add(async () => {
await msg.channel.removeMessageReaction(msg.id, reaction, userId).catch(noop);
await sleep(250);
});
} }
} }