mirror of
https://github.com/keanuplayz/TravBot-v3.git
synced 2024-08-15 02:33:12 +00:00
Fixed help/thonk bugs and removed more unused vars
This commit is contained in:
parent
4241f57f46
commit
8142709581
5 changed files with 60 additions and 39 deletions
|
@ -41,7 +41,7 @@ export const AwardCommand = new NamedCommand({
|
|||
aliases: ["give"],
|
||||
run: "You need to specify a user!",
|
||||
user: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, author, args}) {
|
||||
if (author.id === "394808963356688394" || IS_DEV_MODE) {
|
||||
const target = args[0] as User;
|
||||
const user = Storage.getUser(target.id);
|
||||
|
@ -53,7 +53,7 @@ export const AwardCommand = new NamedCommand({
|
|||
}
|
||||
},
|
||||
number: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, author, args}) {
|
||||
if (author.id === "394808963356688394" || IS_DEV_MODE) {
|
||||
const target = args[0] as User;
|
||||
const amount = Math.floor(args[1]);
|
||||
|
|
|
@ -49,7 +49,7 @@ export const BuyCommand = new NamedCommand({
|
|||
usage: "<item>",
|
||||
run: "You need to specify an item to buy.",
|
||||
any: new RestCommand({
|
||||
async run({send, guild, channel, args, message, author, combined}) {
|
||||
async run({send, guild, channel, message, author, combined}) {
|
||||
if (isAuthorized(guild, channel)) {
|
||||
let found = false;
|
||||
let amount = 1; // The amount the user is buying.
|
||||
|
|
|
@ -33,7 +33,7 @@ let phrase = "I have no currently set phrase!";
|
|||
|
||||
export default new NamedCommand({
|
||||
description: "Transforms your text into vietnamese.",
|
||||
usage: "thonk ([text])",
|
||||
usage: "([text])",
|
||||
async run({send, author}) {
|
||||
const msg = await send(transform(phrase));
|
||||
msg.createReactionCollector(
|
||||
|
@ -46,7 +46,8 @@ export default new NamedCommand({
|
|||
},
|
||||
any: new RestCommand({
|
||||
async run({send, author, combined}) {
|
||||
const msg = await send(transform(combined));
|
||||
phrase = combined;
|
||||
const msg = await send(transform(phrase));
|
||||
msg.createReactionCollector(
|
||||
(reaction, user) => {
|
||||
if (user.id === author.id && reaction.emoji.name === "❌") msg.delete();
|
||||
|
|
|
@ -29,7 +29,7 @@ const statuses = ["online", "idle", "dnd", "invisible"];
|
|||
export default new NamedCommand({
|
||||
description:
|
||||
"An all-in-one command to do admin stuff. You need to be either an admin of the server or one of the bot's mechanics to use this command.",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, author, member}) {
|
||||
const permLevel = getPermissionLevel(author, member);
|
||||
return send(`${author}, your permission level is \`${getPermissionName(permLevel)}\` (${permLevel}).`);
|
||||
},
|
||||
|
@ -43,7 +43,7 @@ export default new NamedCommand({
|
|||
prefix: new NamedCommand({
|
||||
description: "Set a custom prefix for your guild. Removes your custom prefix if none is provided.",
|
||||
usage: "(<prefix>) (<@bot>)",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild}) {
|
||||
Storage.getGuild(guild!.id).prefix = null;
|
||||
Storage.save();
|
||||
send(
|
||||
|
@ -51,14 +51,14 @@ export default new NamedCommand({
|
|||
);
|
||||
},
|
||||
any: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild, args}) {
|
||||
Storage.getGuild(guild!.id).prefix = args[0];
|
||||
Storage.save();
|
||||
send(`The custom prefix for this guild is now \`${args[0]}\`.`);
|
||||
},
|
||||
user: new Command({
|
||||
description: "Specifies the bot in case of conflicting prefixes.",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild, client, args}) {
|
||||
if ((args[1] as User).id === client.user!.id) {
|
||||
Storage.getGuild(guild!.id).prefix = args[0];
|
||||
Storage.save();
|
||||
|
@ -77,7 +77,7 @@ export default new NamedCommand({
|
|||
description:
|
||||
"Sets how welcome messages are displayed for your server. Removes welcome messages if unspecified.",
|
||||
usage: "`none`/`text`/`graphical`",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild}) {
|
||||
Storage.getGuild(guild!.id).welcomeType = "none";
|
||||
Storage.save();
|
||||
send("Set this server's welcome type to `none`.");
|
||||
|
@ -85,14 +85,14 @@ export default new NamedCommand({
|
|||
// I should probably make this a bit more dynamic... Oh well.
|
||||
subcommands: {
|
||||
text: new NamedCommand({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild}) {
|
||||
Storage.getGuild(guild!.id).welcomeType = "text";
|
||||
Storage.save();
|
||||
send("Set this server's welcome type to `text`.");
|
||||
}
|
||||
}),
|
||||
graphical: new NamedCommand({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild}) {
|
||||
Storage.getGuild(guild!.id).welcomeType = "graphical";
|
||||
Storage.save();
|
||||
send("Set this server's welcome type to `graphical`.");
|
||||
|
@ -103,14 +103,14 @@ export default new NamedCommand({
|
|||
channel: new NamedCommand({
|
||||
description: "Sets the welcome channel for your server. Type `#` to reference the channel.",
|
||||
usage: "(<channel mention>)",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, channel, guild}) {
|
||||
Storage.getGuild(guild!.id).welcomeChannel = channel.id;
|
||||
Storage.save();
|
||||
send(`Successfully set ${channel} as the welcome channel for this server.`);
|
||||
},
|
||||
id: "channel",
|
||||
channel: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild, args}) {
|
||||
const result = args[0] as TextChannel;
|
||||
Storage.getGuild(guild!.id).welcomeChannel = result.id;
|
||||
Storage.save();
|
||||
|
@ -122,13 +122,13 @@ export default new NamedCommand({
|
|||
description:
|
||||
"Sets a custom welcome message for your server. Use `%user%` as the placeholder for the user.",
|
||||
usage: "(<message>)",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild}) {
|
||||
Storage.getGuild(guild!.id).welcomeMessage = null;
|
||||
Storage.save();
|
||||
send("Reset your server's welcome message to the default.");
|
||||
},
|
||||
any: new RestCommand({
|
||||
async run({send, message, channel, guild, author, member, client, args, combined}) {
|
||||
async run({send, guild, combined}) {
|
||||
Storage.getGuild(guild!.id).welcomeMessage = combined;
|
||||
Storage.save();
|
||||
send(`Set your server's welcome message to \`${combined}\`.`);
|
||||
|
@ -140,7 +140,7 @@ export default new NamedCommand({
|
|||
stream: new NamedCommand({
|
||||
description: "Set a channel to send stream notifications. Type `#` to reference the channel.",
|
||||
usage: "(<channel mention>)",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, channel, guild}) {
|
||||
const targetGuild = Storage.getGuild(guild!.id);
|
||||
|
||||
if (targetGuild.streamingChannel) {
|
||||
|
@ -155,7 +155,7 @@ export default new NamedCommand({
|
|||
},
|
||||
id: "channel",
|
||||
channel: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, guild, args}) {
|
||||
const result = args[0] as TextChannel;
|
||||
Storage.getGuild(guild!.id).streamingChannel = result.id;
|
||||
Storage.save();
|
||||
|
@ -168,12 +168,12 @@ export default new NamedCommand({
|
|||
diag: new NamedCommand({
|
||||
description: 'Requests a debug log with the "info" verbosity level.',
|
||||
permission: PERMISSIONS.BOT_SUPPORT,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send}) {
|
||||
send(getLogBuffer("info"));
|
||||
},
|
||||
any: new Command({
|
||||
description: `Select a verbosity to listen to. Available levels: \`[${Object.keys(logs).join(", ")}]\``,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, args}) {
|
||||
const type = args[0];
|
||||
|
||||
if (type in logs) send(getLogBuffer(type));
|
||||
|
@ -189,12 +189,12 @@ export default new NamedCommand({
|
|||
status: new NamedCommand({
|
||||
description: "Changes the bot's status.",
|
||||
permission: PERMISSIONS.BOT_SUPPORT,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send}) {
|
||||
send("Setting status to `online`...");
|
||||
},
|
||||
any: new Command({
|
||||
description: `Select a status to set to. Available statuses: \`[${statuses.join(", ")}]\`.`,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, client, args}) {
|
||||
if (!statuses.includes(args[0])) {
|
||||
return send("That status doesn't exist!");
|
||||
} else {
|
||||
|
@ -208,7 +208,7 @@ export default new NamedCommand({
|
|||
description: "Purges the bot's own messages.",
|
||||
permission: PERMISSIONS.BOT_SUPPORT,
|
||||
channelType: CHANNEL_TYPE.GUILD,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, message, channel, guild, client}) {
|
||||
// It's probably better to go through the bot's own messages instead of calling bulkDelete which requires MANAGE_MESSAGES.
|
||||
if (botHasPermission(guild, Permissions.FLAGS.MANAGE_MESSAGES)) {
|
||||
message.delete();
|
||||
|
@ -235,7 +235,7 @@ export default new NamedCommand({
|
|||
run: "A number was not provided.",
|
||||
number: new Command({
|
||||
description: "Amount of messages to delete.",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({message, channel, args}) {
|
||||
message.delete();
|
||||
const fetched = await channel.messages.fetch({
|
||||
limit: args[0]
|
||||
|
@ -251,7 +251,7 @@ export default new NamedCommand({
|
|||
run: "You have to enter some code to execute first.",
|
||||
any: new RestCommand({
|
||||
// You have to bring everything into scope to use them. AFAIK, there isn't a more maintainable way to do this, but at least TS will let you know if anything gets removed.
|
||||
async run({send, message, channel, guild, author, member, client, args, combined}) {
|
||||
async run({send, combined}) {
|
||||
try {
|
||||
let evaled = eval(combined);
|
||||
if (typeof evaled !== "string") evaled = require("util").inspect(evaled);
|
||||
|
@ -268,7 +268,7 @@ export default new NamedCommand({
|
|||
channelType: CHANNEL_TYPE.GUILD,
|
||||
run: "You have to specify a nickname to set for the bot",
|
||||
any: new RestCommand({
|
||||
async run({send, message, channel, guild, author, member, client, args, combined}) {
|
||||
async run({send, message, guild, combined}) {
|
||||
await guild!.me?.setNickname(combined);
|
||||
if (botHasPermission(guild, Permissions.FLAGS.MANAGE_MESSAGES)) message.delete({timeout: 5000});
|
||||
send(`Nickname set to \`${combined}\``).then((m) => m.delete({timeout: 5000}));
|
||||
|
@ -278,7 +278,7 @@ export default new NamedCommand({
|
|||
guilds: new NamedCommand({
|
||||
description: "Shows a list of all guilds the bot is a member of.",
|
||||
permission: PERMISSIONS.BOT_SUPPORT,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, client}) {
|
||||
const guildList = client.guilds.cache.array().map((e) => e.name);
|
||||
send(guildList, {split: true});
|
||||
}
|
||||
|
@ -287,7 +287,7 @@ export default new NamedCommand({
|
|||
description: "Set the activity of the bot.",
|
||||
permission: PERMISSIONS.BOT_SUPPORT,
|
||||
usage: "<type> <string>",
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, client}) {
|
||||
client.user?.setActivity(".help", {
|
||||
type: "LISTENING"
|
||||
});
|
||||
|
@ -295,7 +295,7 @@ export default new NamedCommand({
|
|||
},
|
||||
any: new RestCommand({
|
||||
description: `Select an activity type to set. Available levels: \`[${activities.join(", ")}]\``,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, client, args}) {
|
||||
const type = args[0];
|
||||
|
||||
if (activities.includes(type)) {
|
||||
|
@ -316,13 +316,13 @@ export default new NamedCommand({
|
|||
description: "Sets up the current channel to receive system logs.",
|
||||
permission: PERMISSIONS.BOT_ADMIN,
|
||||
channelType: CHANNEL_TYPE.GUILD,
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, channel}) {
|
||||
Config.systemLogsChannel = channel.id;
|
||||
Config.save();
|
||||
send(`Successfully set ${channel} as the system logs channel.`);
|
||||
},
|
||||
channel: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, args}) {
|
||||
const targetChannel = args[0] as TextChannel;
|
||||
Config.systemLogsChannel = targetChannel.id;
|
||||
Config.save();
|
||||
|
|
|
@ -11,28 +11,48 @@ import {requireAllCasesHandledFor} from "../../lib";
|
|||
import {MessageEmbed} from "discord.js";
|
||||
|
||||
const EMBED_COLOR = "#158a28";
|
||||
const LEGEND = "Legend: `<type>`, `[list/of/stuff]`, `(optional)`, `(<optional type>)`, `([optional/list/...])`\n";
|
||||
|
||||
export default new NamedCommand({
|
||||
description: "Lists all commands. If a command is specified, their arguments are listed as well.",
|
||||
usage: "([command, [subcommand/type], ...])",
|
||||
aliases: ["h"],
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, author}) {
|
||||
const commands = await getCommandList();
|
||||
const categoryArray = commands.keyArray();
|
||||
const helpMenuPages: [string, string][] = []; // An array of (category, description) tuples.
|
||||
|
||||
paginate(send, author.id, categoryArray.length, (page, hasMultiplePages) => {
|
||||
const category = categoryArray[page];
|
||||
// Prevent the description of one category from overflowing by splitting it into multiple pages if needed.
|
||||
for (const category of commands.keyArray()) {
|
||||
const commandList = commands.get(category)!;
|
||||
let output = `Legend: \`<type>\`, \`[list/of/stuff]\`, \`(optional)\`, \`(<optional type>)\`, \`([optional/list/...])\`\n`;
|
||||
for (const command of commandList) output += `\n❯ \`${command.name}\`: ${command.description}`;
|
||||
let output = LEGEND;
|
||||
|
||||
for (const command of commandList) {
|
||||
const field = `\n❯ \`${command.name}\`: ${command.description}`.repeat(2);
|
||||
const newOutput = output + field;
|
||||
|
||||
// Push then reset the output if it overflows, otherwise, continue as normal.
|
||||
if (newOutput.length > 2048) {
|
||||
helpMenuPages.push([category, output]);
|
||||
output = LEGEND + field;
|
||||
} else {
|
||||
output = newOutput;
|
||||
}
|
||||
}
|
||||
|
||||
// Then push whatever's remaining.
|
||||
helpMenuPages.push([category, output]);
|
||||
}
|
||||
|
||||
paginate(send, author.id, helpMenuPages.length, (page, hasMultiplePages) => {
|
||||
const [category, output] = helpMenuPages[page];
|
||||
return new MessageEmbed()
|
||||
.setTitle(hasMultiplePages ? `${category} (Page ${page + 1} of ${categoryArray.length})` : category)
|
||||
.setTitle(hasMultiplePages ? `${category} (Page ${page + 1} of ${helpMenuPages.length})` : category)
|
||||
.setDescription(output)
|
||||
.setColor(EMBED_COLOR);
|
||||
});
|
||||
},
|
||||
any: new Command({
|
||||
async run({send, message, channel, guild, author, member, client, args}) {
|
||||
async run({send, args}) {
|
||||
const resultingBlob = await getCommandInfo(args);
|
||||
if (typeof resultingBlob === "string") return send(resultingBlob);
|
||||
const [result, category] = resultingBlob;
|
||||
|
|
Loading…
Reference in a new issue