AutoReactions: allow use of custom emojis from other (shared) servers

This commit is contained in:
Dragory 2019-02-09 14:35:24 +02:00
parent 77694ca951
commit 21a357f8c5

View file

@ -1,11 +1,12 @@
import { Plugin, decorators as d } from "knub"; import { decorators as d } from "knub";
import { GuildSavedMessages } from "../data/GuildSavedMessages"; import { GuildSavedMessages } from "../data/GuildSavedMessages";
import { SavedMessage } from "../data/entities/SavedMessage"; import { SavedMessage } from "../data/entities/SavedMessage";
import { GuildAutoReactions } from "../data/GuildAutoReactions"; import { GuildAutoReactions } from "../data/GuildAutoReactions";
import { Message } from "eris"; import { Message } from "eris";
import { CustomEmoji, customEmojiRegex, errorMessage, isEmoji, successMessage } from "../utils"; import { customEmojiRegex, errorMessage, isEmoji, successMessage } from "../utils";
import { ZeppelinPlugin } from "./ZeppelinPlugin";
export class AutoReactions extends Plugin { export class AutoReactions extends ZeppelinPlugin {
public static pluginName = "auto_reactions"; public static pluginName = "auto_reactions";
protected savedMessages: GuildSavedMessages; protected savedMessages: GuildSavedMessages;
@ -16,17 +17,17 @@ export class AutoReactions extends Plugin {
getDefaultOptions() { getDefaultOptions() {
return { return {
permissions: { permissions: {
use: false use: false,
}, },
overrides: [ overrides: [
{ {
level: ">=100", level: ">=100",
permissions: { permissions: {
use: true use: true,
} },
} },
] ],
}; };
} }
@ -44,9 +45,6 @@ export class AutoReactions extends Plugin {
@d.command("auto_reactions", "<channelId:channelId> <reactions...>") @d.command("auto_reactions", "<channelId:channelId> <reactions...>")
@d.permission("use") @d.permission("use")
async setAutoReactionsCmd(msg: Message, args: { channelId: string; reactions: string[] }) { async setAutoReactionsCmd(msg: Message, args: { channelId: string; reactions: string[] }) {
const guildEmojis = this.guild.emojis as CustomEmoji[];
const guildEmojiIds = guildEmojis.map(e => e.id);
const finalReactions = []; const finalReactions = [];
for (const reaction of args.reactions) { for (const reaction of args.reactions) {
@ -61,9 +59,8 @@ export class AutoReactions extends Plugin {
const customEmojiMatch = reaction.match(customEmojiRegex); const customEmojiMatch = reaction.match(customEmojiRegex);
if (customEmojiMatch) { if (customEmojiMatch) {
// Custom emoji // Custom emoji
if (!guildEmojiIds.includes(customEmojiMatch[2])) { if (!this.canUseEmoji(customEmojiMatch[2])) {
msg.channel.createMessage(errorMessage("I can only use regular emojis and custom emojis from this server")); msg.channel.createMessage(errorMessage("I can only use regular emojis and custom emojis from this server"));
return; return;
} }