Discord.js deleteCommand

时间:2017-03-10 00:49:55

标签: javascript bots ping discord

我一直在尝试为Discord编写一个简单的机器人,我想添加一条deleteCommand行,该行将删除用户提供的命令,并将我设置的答案返回给机器人。

让我说这个命令是ping-pong命令:

exports.run = function(Aika, message, args) {
    message.channel.sendMessage('pong! :P\'${Date.now() - message.createdTimestamp} ms\'');
};

exports.conf = {
  enabled: true,
  guildOnly: false,
  aliases: [],
  permLevel: 0
};

exports.help = {
  name: 'ping',
  description: 'Responds with "pong" and gives current ms rate.',
  usage: 'ping'
};

我发送"!ping"在Discord聊天中,我想要这个"!ping"要删除,然后机器人回答" pong!",我无法删除命令。

2 个答案:

答案 0 :(得分:0)

我实际上想出了如何做到这一点。您只需要在任何其他代码之前运行代码(在收到消息之后立即执行):

message.delete(1000);

以下是我对主控(admin)命令的操作:

client.on('message', message => {
  if ((message.author.id === '200659103318540288') && (message.content === '~m help', '~m', '~mhelp')) {
    message.delete(1000);
    message.reply('I have sent you a list of master commands.')
    message.author.sendMessage("Here is the list of master commands.")
    console.log('Successfully sent a list of master commands to ' + message.author.id + '.')
  }
});

//1000 is the timeout in ms. I recommend don't change it unless you know the effects.

答案 1 :(得分:0)

您可以使用message.delete()删除引用的邮件。如果将此项放在提供消息对象的消息事件中,则可以删除该消息。

(我的消息事件和我的所有命令都在我的主机器人文件的单独文件中,因此您的事件函数可能看起来不同)

module.exports = (client, message, args) => {
  message.delete(1000);

  // The rest of my command here
}

如果您将所有内容存储在一个文件中,您的命令可能如下所示:

client.on('message' (message) => {
  if (message.content == '$help') {
    message.delete(1000);

    // The rest of my command here
  }
});

另请注意,您不应更改1000 ,除非您知道自己在做什么。这是它将删除消息之前等待(ms)的时间。同样,建议你不要改变它,除非你们都知道自己在做什么,并知道可能会发生什么。