我有一个代码,可以在成员加入公会时发送消息,我想在不久之后将其删除。
我的代码:
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”定义为机器人发送的最后一条消息。>
答案 0 :(得分:5)
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);
}
// ...
答案 1 :(得分:1)
这很简单,你只需要做
kanal.send(embed).then(sentMessage => {
sentMessage.delete()
})
这将发送消息,然后立即将其删除。但玩家会收到提及和/或桌面通知