Как я могу добавить псевдонимы к этой команде discord bot и как я могу встроить ответ бота?

#javascript #node.js #discord #discord.js

#javascript #node.js #Discord #discord.js

Вопрос:

Я хочу создать псевдоним для команды slowmode, но я не уверен, как это сделать. и я также хочу, чтобы бот вставил ответ, вместо того чтобы просто отправлять его как обычный. Помощь приветствуется!

 const command = message.content
        .slice(prefix.length)
        .toLowerCase()
        .split(" ")[0]
        .toLowerCase();

    const args = message.content
        .slice(prefix.length)
        .split(" ")
        .slice(1);

    if (command === "slowmode") {
        if(!message.member.hasPermission("MANAGE_CHANNELS")) return message.channel.send("You don't have access to this command!");

        // Checks if `args[0]` doesn't exist or isn't a number.
        if (!args[0]) return message.channel.send("You did not specify a correct amount of time!")
        if(isNaN(args[0])) return message.channel.send("That is not a number!")

        // Check if `args[0]` is a correct amount of time to set slowmode
        // Array `validNumbers` are an array consistent of numbers of time you can set slowmode with.
        const validNumbers = [0, 5, 10, 15, 30, 60, 120, 300, 600, 900, 1800, 3600, 7200, 21600]

        // Check if `args[0]` parsed into an interger is included in `validNumbers`
        if(!validNumbers.includes(parseInt(args[0]))) return message.channel.send("Invalid Number! Number must be one of the following `5, 10, 15, 30, 60, 120, 300, 600, 900, 1800, 3600, 7200, 21600`.");

        // Set the slowmode
        message.channel.setRateLimitPerUser(args[0]);
        
        // Send the reply
        message.channel.send(`Slowmode Set to **${args[0]}**`)
    }
});
  

Ответ №1:

Если вы просто используете if...else цепочку для своего обработчика команд, создание псевдонимов довольно просто с помощью Логического OR оператора, который вернет true значение, если выполняется одно из нескольких условий.

 // if you have only one or two extra alias:
if (command === 'slowmode' || command = 'sm')
  

 const name = 'john'

if (name === 'james') console.log('Your name is james');
if (name === 'john') console.log('Your name is john');
if (name === 'james' || name === 'john') console.log('Your name is james *or* john');  


Если у вас есть большое количество псевдонимов, которые вы хотите использовать, вы можете поместить их в массив и использовать Array.prototype.includes() метод, который вернет true , если один из элементов массива равен заданному аргументу.

 const aliases = ['slowmode', 'sm', 'slow', 'sl', 'unfast'];

if (aliases.includes(command))
  

 const names = ['john', 'james', 'jonah', 'jack', 'jerry']
const winner = 'jack'

if (names.includes(winner)) console.log('One of these people is the winner')  


Я также хочу, чтобы бот вставлял ответ, а не просто отправлял его как обычный.

Посетите эту страницу из официального discord.js руководства, чтобы узнать все о внедрениях; в том числе о том, как их создавать и настраивать. Чтобы выполнить базовое встраивание, вы можете использовать конструктор или объект:

 const { MessageEmbed } = require("discord.js");

// regular text
message.channel.send("You did not specify a correct amount of time!");

// *sample* embed constructor
const embed = new MessageEmbed()
  .setColor("RED")
  .setTitle("You did not specify a correct amount of time!")
  .setFooter("Please try again");

message.channel.send(embed);

// *sample* embed object
const embed = {
  color: "RED",
  title: "You did not specify a correct amount of time!",
  footer: "Please try again",
};

message.channel.send({ embed });
  

Комментарии:

1. Я также рекомендую discordjs.guide / command-handling , который научит вас, как создать систему псевдонимов и другие интересные вещи для обработки ваших команд.