发送后如何删除消息?
我有一个代码,当成员加入公会时发送消息,我想在不久之后将其删除。
我的代码:
client.on('guildMemberAdd', (member) => {
var server = member.guild.id;
if (server === '760511134079254610') {
let kanal = client.channels.cache.get('786172941703970860');
const embed = new Discord.MessageEmbed()
.setTitle('Ho?geldin!')
.setDescription(`**<@${member.user.id}>** kullan?c?s? sunucumuza geldi!`)
.setColor('BLUE')
kanal.send(embed)
}})
我尝试过embed.delete或者只是经典,msg.delete但它不起作用,因为我可以/不知道如何将“msg”定义为机器人发送的最后一条消息。
回答
kanal.send(embed)返回一个承诺。您可以在此处使用 async/await 来获取该消息,以便稍后将其删除。检查以下代码;它应该在 5 秒后删除消息:
client.on('guildMemberAdd', async (member) => {
const server = member.guild.id;
if (server === '760511134079254610') {
let kanal = client.channels.cache.get('786172941703970860');
const embed = new Discord.MessageEmbed()
.setTitle('Ho?geldin!')
.setDescription(`**<@${member.user.id}>** kullan?c?s? sunucumuza geldi!`)
.setColor('BLUE');
try {
const sentMessage = await kanal.send(embed);
setTimeout(() => {
sentMessage.delete();
}, 5000);
} catch (error) {
console.log(error);
}
}
});
更新:Legendary Emoji提到,setTimeout你也可以使用具有如下timeout属性的选项对象sentMessage.delete:
try {
const sentMessage = await kanal.send(embed);
sentMessage.delete({ timeout: 5000 });
} catch (error) {
console.log(error);
}
// ...
- It should work as expected. Just make sure you've enabled intents: https://discordjs.guide/popular-topics/intents.html#privileged-intents