javascript - Discord.js 获取消息的 id 并将其删除

标签 javascript node.js discord discord.js

当用户加入服务器时,机器人会发送一条欢迎消息,我想获取该欢迎消息的 ID,并让机器人在用户加入后离开时将其删除。我尝试将消息的 id 保存在变量中,并让机器人在用户离开时删除该消息,但没有成功。我已经看过文档,但我真的不明白如何制作它。

最佳答案

  1. 定义一个对象来保存公会和用户的欢迎消息。您可能想要使用 JSON 文件或数据库(我强烈推荐后者)来更可靠地存储它们。
  2. 当用户加入公会时...
    • 发送您的欢迎信息。
    • 将消息的 ID 与对象内的公会内的用户配对。
  3. 当成员离开公会时...
    • 获取他们的欢迎信息。
    • 从 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/

相关文章:

javascript - 如何从函数更改对象的属性

windows - 从 Node.js 使用 WinRT

javascript - Discord.js V12 粗鲁言语过滤器不起作用

javascript - ENOENT : no such file or directory, 打开 'Filename'

javascript - Protractor 测试模态是否可见

javascript - StencilJs 组件未在另一个 stenciljs 项目中呈现

javascript - Gulp 为所有路径提供 : render index. html

node.js - 值被最新请求机器人的人覆盖吗?

javascript - javascript 中代码的执行顺序 - navigator.geolocation

javascript - 谷歌API授权错误 "invalid cookie policy"