Improve empty message detection when rendering tags

This commit is contained in:
Dragory 2020-12-23 02:27:45 +02:00
parent 3def728ab5
commit ff98670cf5
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
3 changed files with 43 additions and 5 deletions

View file

@ -6,6 +6,7 @@ import { validate } from "../../../validatorUtils";
import { LogType } from "../../../data/LogType";
import { TextChannel } from "eris";
import { matchAndRenderTagFromString } from "./matchAndRenderTagFromString";
import { messageIsEmpty } from "../../../utils/messageIsEmpty";
export async function onMessageCreate(pluginData: GuildPluginData<TagsPluginType>, msg: SavedMessage) {
if (msg.is_bot) return;
@ -91,11 +92,7 @@ export async function onMessageCreate(pluginData: GuildPluginData<TagsPluginType
return;
}
if (
tagResult.renderedContent.content &&
!tagResult.renderedContent.embed &&
tagResult.renderedContent.content.trim() === ""
) {
if (messageIsEmpty(tagResult.renderedContent)) {
pluginData.state.logs.log(LogType.BOT_ALERT, {
body: `Tag \`${tagResult.tagName}\` resulted in an empty message, so it couldn't be sent`,
});

View file

@ -0,0 +1,35 @@
import { MessageContent } from "eris";
function embedHasContent(embed: any) {
for (const [key, value] of Object.entries(embed)) {
if (typeof value === "string" && value.trim() !== "") {
return true;
}
if (typeof value === "object" && value != null && embedHasContent(value)) {
return true;
}
if (value != null) {
return true;
}
}
return false;
}
export function messageHasContent(content: MessageContent): boolean {
if (typeof content === "string") {
return content.trim() !== "";
}
if (content.content != null && content.content.trim() !== "") {
return true;
}
if (content.embed && embedHasContent(content.embed)) {
return true;
}
return false;
}

View file

@ -0,0 +1,6 @@
import { MessageContent } from "eris";
import { messageHasContent } from "./messageHasContent";
export function messageIsEmpty(content: MessageContent): boolean {
return !messageHasContent(content);
}