add report command
This commit is contained in:
parent
db492f312f
commit
d8bd5694fb
80
_OLD/mod.ts
80
_OLD/mod.ts
|
@ -42,8 +42,8 @@ import { handleLFGStep, handleMemberJoin, handleMemberLeave, urlToIds } from './
|
||||||
import { constantCmds, editBtns, lfgStepQuestions } from './src/constantCmds.ts';
|
import { constantCmds, editBtns, lfgStepQuestions } from './src/constantCmds.ts';
|
||||||
import { jsonParseBig, jsonStringifyBig } from './src/utils.ts';
|
import { jsonParseBig, jsonStringifyBig } from './src/utils.ts';
|
||||||
|
|
||||||
import { DEBUG, LOCALMODE } from './flags.ts';
|
import { DEBUG, LOCALMODE } from '../flags.ts';
|
||||||
import config from './config.ts';
|
import config from '../config.ts';
|
||||||
|
|
||||||
// Initialize DB client
|
// Initialize DB client
|
||||||
const dbClient = await new Client().connect({
|
const dbClient = await new Client().connect({
|
||||||
|
@ -94,7 +94,7 @@ const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
|
||||||
// Start up the Discord Bot
|
// Start up the Discord Bot
|
||||||
startBot({
|
startBot({
|
||||||
token: LOCALMODE ? config.localtoken : config.token,
|
token: LOCALMODE ? config.localToken : config.token,
|
||||||
intents: [Intents.GuildMessages, Intents.DirectMessages, Intents.Guilds],
|
intents: [Intents.GuildMessages, Intents.DirectMessages, Intents.Guilds],
|
||||||
eventHandlers: {
|
eventHandlers: {
|
||||||
ready: () => {
|
ready: () => {
|
||||||
|
@ -393,32 +393,7 @@ startBot({
|
||||||
|
|
||||||
// All commands below here
|
// All commands below here
|
||||||
|
|
||||||
// ping
|
if (command === 'lfg') {
|
||||||
// Its a ping test, what else do you want.
|
|
||||||
if (command === 'ping') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
|
||||||
dbClient.execute(`CALL INC_CNT("ping");`).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Calculates ping between sending a message and editing it, giving a nice round-trip latency.
|
|
||||||
try {
|
|
||||||
const m = await message.send({
|
|
||||||
embeds: [{
|
|
||||||
title: 'Ping?',
|
|
||||||
}],
|
|
||||||
});
|
|
||||||
m.edit({
|
|
||||||
embeds: [{
|
|
||||||
title: `Pong! Latency is ${m.timestamp - message.timestamp}ms.`,
|
|
||||||
}],
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
}
|
|
||||||
} // lfg
|
|
||||||
// Handles all LFG commands, creating, editing, deleting
|
|
||||||
else if (command === 'lfg') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
// Light telemetry to see how many times a command is being run
|
||||||
dbClient.execute(`CALL INC_CNT("lfg");`).catch((e) => {
|
dbClient.execute(`CALL INC_CNT("lfg");`).catch((e) => {
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
||||||
|
@ -998,53 +973,6 @@ startBot({
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // report or r (command that failed)
|
|
||||||
// Manually report something that screwed up
|
|
||||||
else if (command === 'report' || command === 'r') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
|
||||||
dbClient.execute(`CALL INC_CNT("report");`).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
sendMessage(config.reportChannel, 'USER REPORT:\n' + args.join(' ')).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
message.send(constantCmds.report).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
} // version or v
|
|
||||||
// Returns version of the bot
|
|
||||||
else if (command === 'version' || command === 'v') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
|
||||||
dbClient.execute(`CALL INC_CNT("version");`).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
message.send(constantCmds.version).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
} // info or i
|
|
||||||
// Info command, prints short desc on bot and some links
|
|
||||||
else if (command === 'info' || command === 'i') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
|
||||||
dbClient.execute(`CALL INC_CNT("info");`).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
message.send(constantCmds.info).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
} // help or h or ?
|
|
||||||
// Help command, prints available commands
|
|
||||||
else if (command === 'help' || command === 'h' || command === '?') {
|
|
||||||
// Light telemetry to see how many times a command is being run
|
|
||||||
dbClient.execute(`CALL INC_CNT("help");`).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to call stored procedure INC_CNT: ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
message.send(constantCmds.help).catch((e) => {
|
|
||||||
log(LT.ERROR, `Failed to send message: ${jsonStringifyBig(message)} | ${jsonStringifyBig(e)}`);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
interactionCreate: async (interact, member) => {
|
interactionCreate: async (interact, member) => {
|
||||||
|
|
|
@ -1,37 +1,8 @@
|
||||||
import { ActionRow, DiscordButtonStyles } from '../deps.ts';
|
import { ActionRow, DiscordButtonStyles } from '../deps.ts';
|
||||||
|
|
||||||
import config from '../config.ts';
|
import config from '../../config.ts';
|
||||||
|
|
||||||
export const constantCmds = {
|
export const constantCmds = {
|
||||||
help: {
|
|
||||||
embeds: [{
|
|
||||||
title: `${config.name} Help`,
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'All commands must have the bot\'s prefix before them.',
|
|
||||||
value: `Default is \`${config.prefix}\`, send <@847256159123013722> to change it.`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'LFG Commands',
|
|
||||||
value: `
|
|
||||||
\`lfg help\` - More detailed help for the LFG commands
|
|
||||||
\`lfg create\` - Create a new LFG post
|
|
||||||
\`lfg edit\` - Edit an existing LFG post
|
|
||||||
\`lfg delete\` - Delete an existing LFG post
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Utility Commands',
|
|
||||||
value: `
|
|
||||||
\`info\` - Information about the bot
|
|
||||||
\`ping\` - Pings the bot to check its connection
|
|
||||||
\`report [TEXT]\` - Report an issue to the developer
|
|
||||||
\`version\` - Prints the bot's current version
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
lfgHelp: {
|
lfgHelp: {
|
||||||
embeds: [{
|
embeds: [{
|
||||||
title: `${config.name} LFG Help`,
|
title: `${config.name} LFG Help`,
|
||||||
|
@ -74,33 +45,6 @@ export const constantCmds = {
|
||||||
],
|
],
|
||||||
}],
|
}],
|
||||||
},
|
},
|
||||||
info: {
|
|
||||||
embeds: [{
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'Group Up, the LFG bot',
|
|
||||||
value: `Group Up is developed by Ean AKA Burn_E99.
|
|
||||||
Want to check out my source code? Check it out [here](https://github.com/Burn-E99/GroupUp).
|
|
||||||
Need help with this bot? Join my support server [here](https://discord.gg/peHASXMZYv).`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
version: {
|
|
||||||
embeds: [{
|
|
||||||
title: `My current version is ${config.version}`,
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
report: {
|
|
||||||
embeds: [{
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: 'Failed command has been reported to my developer.',
|
|
||||||
value: 'For more in depth support, and information about planned maintenance, please join the support server [here](https://discord.gg/peHASXMZYv).',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}],
|
|
||||||
},
|
|
||||||
lfgDelete1: {
|
lfgDelete1: {
|
||||||
embeds: [{
|
embeds: [{
|
||||||
fields: [
|
fields: [
|
||||||
|
|
|
@ -14,7 +14,7 @@ import {
|
||||||
import { jsonStringifyBig } from './utils.ts';
|
import { jsonStringifyBig } from './utils.ts';
|
||||||
import { ActiveLFG, BuildingLFG } from './mod.d.ts';
|
import { ActiveLFG, BuildingLFG } from './mod.d.ts';
|
||||||
|
|
||||||
import config from '../config.ts';
|
import config from '../../config.ts';
|
||||||
|
|
||||||
// getRandomStatus() returns status as string
|
// getRandomStatus() returns status as string
|
||||||
// Gets a new random status for the bot
|
// Gets a new random status for the bot
|
||||||
|
|
1
deps.ts
1
deps.ts
|
@ -10,6 +10,7 @@ export type { BotWithCache } from 'https://deno.land/x/discordeno@17.0.1/plugins
|
||||||
export {
|
export {
|
||||||
ActivityTypes,
|
ActivityTypes,
|
||||||
ApplicationCommandFlags,
|
ApplicationCommandFlags,
|
||||||
|
ApplicationCommandOptionTypes,
|
||||||
ApplicationCommandTypes,
|
ApplicationCommandTypes,
|
||||||
createBot,
|
createBot,
|
||||||
editBotMember,
|
editBotMember,
|
||||||
|
|
|
@ -20,3 +20,11 @@ export const getRandomStatus = (guildCount: number): string => {
|
||||||
export const isLFGChannel = (channelId: bigint) => {
|
export const isLFGChannel = (channelId: bigint) => {
|
||||||
return (lfgChannels.includes(channelId) || channelId === 0n) ? ApplicationCommandFlags.Ephemeral : undefined;
|
return (lfgChannels.includes(channelId) || channelId === 0n) ? ApplicationCommandFlags.Ephemeral : undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const generateReport = (msg: string) => ({
|
||||||
|
embeds: [{
|
||||||
|
color: infoColor2,
|
||||||
|
title: 'USER REPORT:',
|
||||||
|
description: msg || 'No message',
|
||||||
|
}],
|
||||||
|
});
|
||||||
|
|
|
@ -3,8 +3,9 @@ import { Commands } from '../types/commandTypes.ts';
|
||||||
import utils from '../utils.ts';
|
import utils from '../utils.ts';
|
||||||
|
|
||||||
import info from './info.ts';
|
import info from './info.ts';
|
||||||
|
import report from './report.ts';
|
||||||
|
|
||||||
export const commands: Array<Commands> = [info];
|
export const commands: Array<Commands> = [info, report];
|
||||||
|
|
||||||
export const createSlashCommands = async (bot: Bot) => {
|
export const createSlashCommands = async (bot: Bot) => {
|
||||||
const globalCommands: MakeRequired<CreateApplicationCommand, 'name'>[] = [];
|
const globalCommands: MakeRequired<CreateApplicationCommand, 'name'>[] = [];
|
||||||
|
|
|
@ -12,7 +12,7 @@ const details: CommandDetails = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const execute = (bot: Bot, interaction: Interaction) => {
|
const execute = (bot: Bot, interaction: Interaction) => {
|
||||||
dbClient.execute(queries.callIncCnt('report')).catch((e) => utils.commonLoggers.dbError('info.ts', 'call sproc INC_CNT on', e));
|
dbClient.execute(queries.callIncCnt('info')).catch((e) => utils.commonLoggers.dbError('info.ts', 'call sproc INC_CNT on', e));
|
||||||
bot.helpers.sendInteractionResponse(
|
bot.helpers.sendInteractionResponse(
|
||||||
interaction.id,
|
interaction.id,
|
||||||
interaction.token,
|
interaction.token,
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
import config from '../../config.ts';
|
||||||
|
import { ApplicationCommandOptionTypes, ApplicationCommandTypes, Bot, Interaction, InteractionResponseTypes, sendMessage } from '../../deps.ts';
|
||||||
|
import { generateReport, isLFGChannel, successColor } from '../commandUtils.ts';
|
||||||
|
import { dbClient, queries } from '../db.ts';
|
||||||
|
import { CommandDetails } from '../types/commandTypes.ts';
|
||||||
|
import utils from '../utils.ts';
|
||||||
|
|
||||||
|
const details: CommandDetails = {
|
||||||
|
name: 'report',
|
||||||
|
description: `Information about ${config.name} and its developer`,
|
||||||
|
type: ApplicationCommandTypes.ChatInput,
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'issue',
|
||||||
|
type: ApplicationCommandOptionTypes.String,
|
||||||
|
description: 'Please describe the issue you were having.',
|
||||||
|
required: true,
|
||||||
|
minLength: 1,
|
||||||
|
maxLength: 2000,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const execute = (bot: Bot, interaction: Interaction) => {
|
||||||
|
console.log(interaction);
|
||||||
|
dbClient.execute(queries.callIncCnt('report')).catch((e) => utils.commonLoggers.dbError('report.ts', 'call sproc INC_CNT on', e));
|
||||||
|
sendMessage(bot, config.reportChannel, generateReport(interaction.data?.options?.[0].value as string || 'Missing Options')).catch((e: Error) =>
|
||||||
|
utils.commonLoggers.interactionSendError('report.ts:28', interaction, e)
|
||||||
|
);
|
||||||
|
bot.helpers.sendInteractionResponse(
|
||||||
|
interaction.id,
|
||||||
|
interaction.token,
|
||||||
|
{
|
||||||
|
type: InteractionResponseTypes.ChannelMessageWithSource,
|
||||||
|
data: {
|
||||||
|
flags: isLFGChannel(interaction.channelId || 0n),
|
||||||
|
embeds: [{
|
||||||
|
color: successColor,
|
||||||
|
title: 'Failed command has been reported to my developer.',
|
||||||
|
description: `For more in depth support, and information about planned maintenance, please join the support server [here](${config.links.supportServer}).`,
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).catch((e: Error) => utils.commonLoggers.interactionSendError('report.ts:44', interaction, e));
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
details,
|
||||||
|
execute,
|
||||||
|
};
|
Loading…
Reference in New Issue