我一直在尝试为 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!”,我无法让它删除该命令。
我实际上想出了如何做到这一点。您只需在任何其他代码之前运行该代码(在收到消息后立即运行):
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.
您可以使用
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
除非您知道自己在做什么。这是删除消息之前等待的时间(毫秒)。再次强调,建议您不要更改此设置,除非您既知道自己在做什么,也知道可能会发生什么。