我一直在尝试为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!",我无法删除命令。
答案 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)的时间。同样,建议你不要改变它,除非你们都知道自己在做什么,并知道可能会发生什么。