命令超时| Discord.js

目前我有这样的:命令超时| Discord.js

const Discord = require("discord.js"); 

const PREFIX = ",";

const token = "my token";

var bot = new Discord.Client();

bot.on('ready',() => {

bot.on('message', message => {

if (!message.content.startsWith(PREFIX)) return; //if not command ignore message

var args = message.content.substring(PREFIX.length).split(" "); //splits commands so each word = pos in array

switch (args[0].toLowerCase()) { //not case-sensitive anymore

case "hello":

message.channel.send("hello");

break;

//rest of the commands

我想限制命令“你好”的用法。我希望每次用户输入“hello”时都会有10秒的超时时间。如果用户在冷却前输入命令,它会发送一条消息,说明谁最后使用了该命令,以及冷却时间还剩多长时间。

这就是我想要的结果看起来像:

User1:   ,hello 

Bot: hello

(After 1 second)

User2: ,hello

Bot: User1 has already used this command, please wait another 9 seconds to use it again

(After 9 seconds)

User 2: ,hello

Bot: hello

所有帮助表示赞赏。 谢谢,

回答:

您需要存储该命令的最后日期,然后相应地分流。为了显示最后一次使用该命令的人员,您需要将该信息与时间戳一起存储。

下面是一个例子基于你:

const Discord = require("discord.js"); 

const PREFIX = ",";

const token = "my token";

const bot = new Discord.Client();

let lastHelloCommandDate, lastHelloCommandUser;

bot.on('ready',() => {

bot.on('message', message => {

if (!message.content.startsWith(PREFIX)) return; //if not command ignore message

var args = message.content.substring(PREFIX.length).split(" "); //splits commands so each word = pos in array

switch (args[0].toLowerCase()) { //not case-sensitive anymore

case "hello":

hello(message);

break;

//rest of the commands

}}})

})

function hello(message) {

const now = new Date();

if (now - lastHelloCommandDate > 10 * 60 * 1000) {

// It's been more than 10 mins

message.channel.send("hello");

lastHelloCommandDate = now;

lastHelloCommandUser = message.sender;

} else {

// It's been less than 10 mins

// send a direct message to the user

// i don't know if message.sender exists, check the api

message.sender.send(`Command last used by ${lastHelloCommandUser}`);

}

}

将该样品再加工,使得命令存储在一个单独的对象和动态检查。这消除了对switch语句的需要。

const Discord = require("discord.js"); 

const PREFIX = ",";

const token = "my token";

const bot = new Discord.Client();

let lastHelloCommandDate, lastHelloCommandUser;

bot.on('ready',() => {

bot.on('message', message => {

if (!message.content.startsWith(PREFIX)) return; //if not command ignore message

var args = message.content.substring(PREFIX.length).split(" "); //splits commands so each word = pos in array

const command = args[0].toLowerCase();

if (!commands[command]) {

throw new Error(`Unknown command supplied: ${command}`);

}

commands[command](message);

}}})

})

const commands = {

hello: message => {

const now = new Date();

if (now - lastHelloCommandDate > 10 * 60 * 1000) {

// It's been more than 10 mins

message.channel.send("hello");

lastHelloCommandDate = now;

lastHelloCommandUser = message.sender;

} else {

// It's been less than 10 mins

// send a direct message to the user

// i don't know if message.sender exists, check the api

message.sender.send(`Command last used by ${lastHelloCommandUser}`);

}

}

};

以上是 命令超时| Discord.js 的全部内容, 来源链接: utcz.com/qa/266997.html

回到顶部