【问题标题】:Discord.js check if bot is capable of sending embeds into a specific channelDiscord.js 检查机器人是否能够将嵌入发送到特定频道
【发布时间】:2023-01-16 00:48:37
【问题描述】:

我正在尝试弄清楚如何检查我的机器人是否有权发送消息并将嵌入内容包含到特定频道中。

如果特定成员在特定频道中具有权限,我发现以下代码返回布尔值。但我不确定如何为机器人本身执行相同的操作。

message.member.permissionIn('channel_id').hasPermission('SEND_MESSAGES');

【问题讨论】:

  • 如果以下任何答案解决了您的问题,那么您可以将最能帮助您的答案标记为正确(打勾)。这将有助于指导其他人将来遇到同样的问题。

标签: javascript discord.js


【解决方案1】:

您需要检查 GuildMember 是否具有权限。

[Guild].me.permissionsIn('channel_id').has('SEND_MESSAGES')

【讨论】:

    【解决方案2】:

    其他答案均未解释如何获取 GuildMember 对象,因此我将尝试对其进行解释。您需要做的就是从您的client 获取GuildMember。为此,请将 client.guilds.cache.get(guild_id).members.me 用于您的机器人的 GuildMember,然后您可以从那里使用相同的代码。尝试这个:

    client.guilds.cache.get(guild_id).members.me.permissionsIn(channel_id).has('SEND_MESSAGES')
    

    其中 guild_id 是服务器 ID,channel_id 是频道 ID。

    【讨论】:

      【解决方案3】:

      在 Discord.JS v14 中,您可以执行以下操作:

      const { PermissionFlagsBits } = require("discord.js");
      
      // Check for permissions
      if (!channel.permissionsFor(interaction.guild.members.me).has(PermissionFlagsBits.SendMessages)) {
          // No permissions!
      }
      

      其中channel是你的频道对象

      【讨论】:

        猜你喜欢
        • 2023-02-20
        • 2021-06-10
        • 1970-01-01
        • 2020-09-25
        • 2022-07-16
        • 2020-05-10
        • 2021-04-09
        • 2021-01-08
        • 2020-09-15
        相关资源
        最近更新 更多