diff --git a/src/plugins/Tags.ts b/src/plugins/Tags.ts index f98e3aa5..f010969a 100644 --- a/src/plugins/Tags.ts +++ b/src/plugins/Tags.ts @@ -137,6 +137,13 @@ export class TagsPlugin extends ZeppelinPlugin") + @d.permission("create") + async evalTagCmd(msg: Message, args: { body: string }) { + const rendered = await this.renderTag(args.body); + msg.channel.createMessage(rendered); + } + @d.command("tag", " ") @d.permission("create") async tagCmd(msg: Message, args: { tag: string; body: string }) { @@ -171,6 +178,34 @@ export class TagsPlugin extends ZeppelinPlugin { + if (tagFnCalls++ > maxTagFnCalls) return "\\_recursion\\_"; + if (typeof name !== "string") return ""; + if (name === "") return ""; + const subTag = await this.tags.find(name); + if (!subTag) return ""; + return renderTemplate(subTag.body, { ...data, args: subTagArgs }); + }, + }; + + return renderTemplate(body, data); + } + async onMessageCreate(msg: SavedMessage) { const member = this.guild.members.get(msg.user_id); if (!this.hasPermission("use", { member, channelId: msg.channel_id })) return; @@ -196,31 +231,7 @@ export class TagsPlugin extends ZeppelinPlugin { - if (tagFnCalls++ > maxTagFnCalls) return "\\_recursion\\_"; - if (typeof name !== "string") return ""; - if (name === "") return ""; - const subTag = await this.tags.find(name); - if (!subTag) return ""; - return renderTemplate(subTag.body, { ...data, args }); - }, - }; - - body = await renderTemplate(body, data); + body = await this.renderTag(body, tagArgs); } catch (e) { if (e instanceof TemplateParseError) { logger.warn(`Invalid tag format!\nError: ${e.message}\nFormat: ${tag.body}`);