向不与我的漫游器共享服务器的用户发送消息

时间:2019-06-08 10:08:01

标签: node.js discord.js

我正在创建一个discord.js机器人程序和一个快速API,它们可以一起工作以允许我的桌面应用程序(以电子方式创建)与服务器交互。我在桌面应用程序中添加了禁止管理标签,并且可以从那里取消禁止用户。之后,我尝试向未禁止的用户发送一条消息,让他们知道他们已被禁止,并向他们发出邀请。但是我得到了错误。 “ DiscordAPIError:无法向该用户发送消息”。我了解,如果用户不与漫游器共享服务器,则不可能向用户发送消息,是否可以解决?

// Unban user
// guild is the server that the bot is in and unbanning for
// note this is a private bot for only one server, so i don,t need multi-server handling

app.post(`/api/v1/unban/:id`, async (req, res) => {
  let toUnBan = await bot.fetchUser(req.params.id);
  let error = false;

  if (!toUnBan) {
    error = "Unexpected error occurred: User not found...";
  }

  // 585739079585497099 is the bot's id
  if (!guild.members.get("585739079585497099").hasPermission("BAN_MEMBERS")) {
    error = "Bot doesn't have permission to unban members.";
  }

  if (error === false) {
     try {
       guild.unban(toUnBan.id);
       res.status(200).send({
         success: true
       });
       // these lines are returning the error, workaround?
       let invite = await guild.channels.find(c => c.name === "General").createInvite();
       // goes with line above
       bot.users.get(toUnBan.id).createDM().then(dm => {
         dm.send(`Your ban on **${guild.name}** has been lifted. Here you can join again :), ${invite} .`);
       });
     } catch (e) {
       if (e) console.log(e.message);
       res.status(200).send({
         success: false,
         error: e.message
       });
     }
  } else {
    res.status(200).send({
      success: false,
      error: error
    });
  }
});

谢谢!

1 个答案:

答案 0 :(得分:0)

由于Discord中的隐私设置,在某些情况下,客户端无法将消息发送给与其不是朋友并且不共享服务器的用户。因此,禁止具有严格隐私设置的用户可能导致以后无法与他们联系。