Discord.js 删除命令

问题描述 投票:0回答:2

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

假设我有这个命令,它是乒乓命令:

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'
};

我在 Discord 聊天中发送“!ping”,我希望删除这个“!ping”,然后机器人回答“pong!”,我无法让它删除该命令。

javascript bots ping discord
2个回答
0
投票

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

message.delete(1000);

这是在我拥有的主(管理)命令上执行的操作:

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.

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
除非您知道自己在做什么。这是删除消息之前等待的时间(毫秒)。再次强调,建议您不要更改此设置,除非您既知道自己在做什么,也知道可能会发生什么。

© www.soinside.com 2019 - 2024. All rights reserved.