当用户加入服务器时,机器人会发送一条欢迎消息,我想获取该欢迎消息的 ID,并让机器人在用户加入后离开时将其删除。我尝试将消息的 id 保存在变量中,并让机器人在用户离开时删除该消息,但没有成功。我已经看过文档,但我真的不明白如何制作它。
最佳答案
- 定义一个对象来保存公会和用户的欢迎消息。您可能想要使用 JSON 文件或数据库(我强烈推荐后者)来更可靠地存储它们。
- 当用户加入公会时...
- 发送您的欢迎信息。
- 将消息的 ID 与对象内的公会内的用户配对。
- 当成员离开公会时...
- 获取他们的欢迎信息。
- 从 Discord 和对象中删除消息。
设置示例:
const welcomeMessages = {};
client.on('guildMemberAdd', async member => {
const welcomeChannel = client.channels.get('channelIDHere');
if (!welcomeChannel) return console.error('Unable to find welcome channel.');
try {
const message = await welcomeChannel.send(`Welcome, ${member}.`);
if (!welcomeMessages[member.guild.id]) welcomeMessages[member.guild.id] = {};
welcomeMessages[member.guild.id][member.id] = message.id;
} catch(err) {
console.error('Error while sending welcome message...\n', err);
}
});
client.on('guildMemberRemove', async member => {
const welcomeChannel = client.channels.get('channelIDHere');
if (!welcomeChannel) return console.error('Unable to find welcome channel.');
try {
const message = await welcomeChannel.fetchMessage(welcomeMessages[member.guild.id][member.id]);
if (!message) return;
await message.delete();
delete welcomeMessages[member.guild.id][member.id];
} catch(err) {
console.error('Error while deleting existing welcome message...\n', err);
}
});
关于javascript - Discord.js 获取消息的 id 并将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57280175/