#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 , который научит вас, как создать систему псевдонимов и другие интересные вещи для обработки ваших команд.