node.js - 如何在频道中检查 Discord.js 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),而不是返回。我怎样才能做到这一点?
解决方案
如果您使用的是 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
};
推荐阅读
- sql - 优化查询,检查 user_id 是否存在于许多表中
- javascript - 如何在每个步骤中组合带有条件检查的 JS 函数?
- python - 有非接触式温度计的协议文件吗?
- swift - (WatchConnectivity) WCSession 缺少委托
- javascript - 设置数据时按钮 onclick 打开窗口
- excel - 通过更改范围内的值,刷新总和值在 Excel 中通过 VBA 宏获取
- reactjs - 组件异常无效类型
- python - 在不同的地方多次更新
- linux - 在 docker 上安装 libapache2-mod-security
- angular-google-maps - agm 标记 Agm-marker dragEnd 事件不返回坐标