【问题标题】:How to check for Discord.js Bot for permissions in a channel?如何在频道中检查 Discord.js Bot 的权限?
【发布时间】:2021-06-21 17:57:23
【问题描述】:

在程序中,选择一个频道(由用户通过设置)供 discord bot 监控。在设置频道之前,我需要确保机器人有权监控该频道。

以下代码不起作用:

// Make sure bot has read permissions by checking if it's missing any
if (message.guild.me.permissionsIn(channel).missing(['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'])) {
    return message.channel.send("I don't have permission in that channel.");
}
// If it isn't missing any then do stuff
console.log("do stuff");

这也行不通:

if (!message.guild.me.permissionsIn(channel).has(['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'])) {
    return message.channel.send("I don't have permission in that channel.");
}

console.log("do stuff");

输出总是“做事”(if 语句返回一个 channelID),而不是返回。 我该怎么做?

【问题讨论】:

  • 在我看来,您检查的频道有误,因为 meesage.channel.send 和检查权限的变量相同。

标签: node.js permissions discord discord.js


【解决方案1】:

我认为在 discord.js 中,您可以只使用“permissions”,而不是使用“permissionsIn”。

if(!message.member.permissions.has("SEND_MESSAGES", "READ_MESSAGE_HISTORY")) {
    return message.channel.send("I have permissions");
} else {
    message.channel.send("I do not have permissions");
}

【讨论】:

    【解决方案2】:

    如果您使用的是 v12.5 Discord.js,这应该可以:

    if (!message.channel.permissionsFor(client.user.id).has(['SEND_MESSAGES', 'READ_MESSAGE_HISTORY', 'EMBED_LINKS', 'VIEW_CHANNEL'])) {
      message.author.send("Heck, It looks like I may lack perms. Please make sure that I have all of the following permissions: `SEND_MESSAGES`, `READ_MESSAGE_HISTORY`, `EMBED_LINKS` and `VIEW_CHANNEL`.")
      return
    };

    【讨论】:

      猜你喜欢
      • 2021-03-02
      • 2021-08-05
      • 2021-04-18
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2023-02-20
      • 2021-05-13
      • 2019-04-01
      相关资源
      最近更新 更多