首页 文章

Discord.js deleteCommand

提问于
浏览
0

我一直在尝试为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'
};

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

2 回答

  • 0

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

    message.delete(1000);
    

    这是我对master(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.
    
  • 0

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

    (我的消息事件和我的所有命令都在我的主bot文件的单独文件中,所以你的事件函数可能看起来不同)

    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 unless ,您知道自己在做什么 . 这是它将删除消息之前等待(ms)的时间 . 同样,建议你不要改变它,除非你们都知道自己在做什么,并知道会发生什么 .

相关问题