From eba7e028b2baac0f345344f26be8eeaeab016f9c Mon Sep 17 00:00:00 2001 From: "Ean Milligan (Bastion)" Date: Mon, 9 May 2022 19:18:49 -0400 Subject: [PATCH] Finalized hide-warn command --- src/api.ts | 6 ++++-- src/commands/apiCmd/allowBlock.ts | 2 +- src/commands/apiCmd/showHideWarn.ts | 6 +++--- src/constantCmds.ts | 20 ++++++++++++++------ 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/api.ts b/src/api.ts index 4639b7c..c67e10f 100644 --- a/src/api.ts +++ b/src/api.ts @@ -185,6 +185,7 @@ const start = async (): Promise => { // Check if user is authenticated to use this endpoint let authorized = false; + let hideWarn = false; // Check if the db has the requested userid/channelid combo, and that the requested userid matches the userid linked with the api key const dbChannelQuery = await dbClient.query("SELECT active, banned FROM allowed_channels WHERE userid = ? AND channelid = ?", [apiUserid, BigInt(query.get("channel") || "0")]); @@ -193,11 +194,12 @@ const start = async (): Promise => { // Get the guild from the channel and make sure user is in said guild const guild = cache.channels.get(BigInt(query.get("channel") || ""))?.guild; if (guild && guild.members.get(BigInt(query.get("user") || ""))?.id) { - const dbGuildQuery = await dbClient.query("SELECT active, banned FROM allowed_guilds WHERE guildid = ? AND channelid = ?", [guild.id, BigInt(query.get("channel") || "0")]); + const dbGuildQuery = await dbClient.query("SELECT active, banned, hidewarn FROM allowed_guilds WHERE guildid = ? AND channelid = ?", [guild.id, BigInt(query.get("channel") || "0")]); // Make sure guild allows API rolls if (dbGuildQuery.length === 1 && dbGuildQuery[0].active && !dbGuildQuery[0].banned) { authorized = true; + hideWarn = dbGuildQuery[0].hidewarn; } } } @@ -240,7 +242,7 @@ const start = async (): Promise => { const returnmsg = solver.parseRoll(rollCmd, config.prefix, config.postfix, query.has("m"), query.has("n"), query.has("o") ? (query.get("o")?.toLowerCase() || "") : ""); // Alert users why this message just appeared and how they can report abues pf this feature - const apiPrefix = `The following roll was conducted using my built in API. If someone in this channel did not request this roll, please report API abuse here: <${config.api.supportURL}>\n\n`; + const apiPrefix = hideWarn ? '' : `The following roll was conducted using my built in API. If someone in this channel did not request this roll, please report API abuse here: <${config.api.supportURL}>\n\n`; let m, returnText = ""; // Handle sending the error message to whoever called the api diff --git a/src/commands/apiCmd/allowBlock.ts b/src/commands/apiCmd/allowBlock.ts index 841e9ab..bfc5114 100644 --- a/src/commands/apiCmd/allowBlock.ts +++ b/src/commands/apiCmd/allowBlock.ts @@ -38,7 +38,7 @@ export const allowBlock = async (message: DiscordenoMessage, apiArg: string) => } // We won't get here if there's any errors, so we know it has bee successful, so report as such - message.send(generateApiSuccess(apiArg)).catch(e => { + message.send(generateApiSuccess(`${apiArg}ed`)).catch(e => { log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e)}`); }); }; diff --git a/src/commands/apiCmd/showHideWarn.ts b/src/commands/apiCmd/showHideWarn.ts index 85445b4..9f42e17 100644 --- a/src/commands/apiCmd/showHideWarn.ts +++ b/src/commands/apiCmd/showHideWarn.ts @@ -11,7 +11,7 @@ import { generateApiFailed, generateApiSuccess } from "../../constantCmds.ts"; export const showHideWarn = async (message: DiscordenoMessage, apiArg: string) => { const guildQuery = await dbClient.query(`SELECT guildid, channelid FROM allowed_guilds WHERE guildid = ? AND channelid = ?`, [message.guildId, message.channelId]).catch(e0 => { log(LT.ERROR, `Failed to query DB: ${JSON.stringify(e0)}`); - message.send(generateApiFailed(apiArg)).catch(e1 => { + message.send(generateApiFailed(`${apiArg} on`)).catch(e1 => { log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e1)}`); }); return; @@ -21,7 +21,7 @@ export const showHideWarn = async (message: DiscordenoMessage, apiArg: string) = // Since guild is not in our DB, add it in await dbClient.execute(`INSERT INTO allowed_guilds(guildid,channelid,hidewarn) values(?,?,?)`, [message.guildId, message.channelId, ((apiArg === "hide-warn") ? 1 : 0)]).catch(e0 => { log(LT.ERROR, `Failed to insert into DB: ${JSON.stringify(e0)}`); - message.send(generateApiFailed(apiArg)).catch(e1 => { + message.send(generateApiFailed(`${apiArg} on`)).catch(e1 => { log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e1)}`); }); return; @@ -30,7 +30,7 @@ export const showHideWarn = async (message: DiscordenoMessage, apiArg: string) = // Since guild is in our DB, update it await dbClient.execute(`UPDATE allowed_guilds SET hidewarn = ? WHERE guildid = ? AND channelid = ?`, [((apiArg === "hide-warn") ? 1 : 0), message.guildId, message.channelId]).catch(e0 => { log(LT.ERROR, `Failed to update DB: ${JSON.stringify(e0)}`); - message.send(generateApiFailed(apiArg)).catch(e1 => { + message.send(generateApiFailed(`${apiArg} on`)).catch(e1 => { log(LT.ERROR, `Failed to send message: ${JSON.stringify(message)} | ${JSON.stringify(e1)}`); }); return; diff --git a/src/constantCmds.ts b/src/constantCmds.ts index 71c8e72..57c58df 100644 --- a/src/constantCmds.ts +++ b/src/constantCmds.ts @@ -21,7 +21,7 @@ export const constantCmds = { { name: "The Artificer's API Details:", value: `The Artificer has a built in API that allows user to roll dice into Discord using third party programs. - By default, API rolls are blocked from being sent in your guild. + By default, API rolls are blocked from being sent in your guild. The API warning is also enabled by default. These commands may only be used by the Owner or Admins of your guild. For information on how to use the API, please check the GitHub README for more information [here](https://github.com/Burn-E99/TheArtificer). @@ -38,19 +38,27 @@ export const constantCmds = { inline: true }, { name: `\`${config.prefix}api status\``, - value: "Shows the current status of the API for this guild", + value: "Shows the current status of the API for the channel this was run in", inline: true }, { name: `\`${config.prefix}api allow/enable\``, - value: "Allows API Rolls to be sent to this guild", + value: "Allows API Rolls to be sent to the channel this was run in", inline: true }, { name: `\`${config.prefix}api block/disable\``, - value: "Blocks API Rolls from being sent to this guild", + value: "Blocks API Rolls from being sent to the channel this was run in", inline: true }, { name: `\`${config.prefix}api delete\``, - value: "Deletes this guild from The Artificer's database", + value: "Deletes this channel's settings from The Artificer's database", + inline: true + }, { + name: `\`${config.prefix}api show-warn\``, + value: "Shows the API warning on all rolls sent to the channel this was run in", + inline: true + }, { + name: `\`${config.prefix}api hide-warn\``, + value: "Hides the API warning on all rolls sent to the channel this was run in", inline: true } ] @@ -379,7 +387,7 @@ export const generateApiStatus = (banned: boolean, active: boolean) => ({ export const generateApiSuccess = (args: string) => ({ embeds: [{ - title: `API rolls have successfully been ${args}ed for this guild.` + title: `API rolls have successfully been ${args} for this guild.` }] });