javascript - 检查 discord.js 机器人权限
问题描述
在这里,您看到代码在启动机器人时运行并从每个服务器获取用户邀请,并且您知道需要管理员角色,但例如,此机器人位于 10 台服务器上,其中一个服务器关闭了机器人的管理员角色,我的机器人得到了错误并得到Missing Access
然后崩溃并关闭我的意思是您必须按任意键
在这里,我想检查服务器权限,我的意思是一台服务器,如果服务器中的机器人没有角色,请忽略它并且不会崩溃
module.exports = (client) => {
const invites = {} // { guildId: { memberId: count } }
const db = require("quick.db")
const getInviteCounts = async (message,guild) => {
return await new Promise((resolve) => {
guild.fetchInvites().then((invites) => {
const inviteCounter = {} // { memberId: count }
invites.forEach((invite) => {
const { uses, inviter } = invite
const { username, discriminator } = inviter
const name = `${username}#${discriminator}`
inviteCounter[name] = (inviteCounter[name] || 0) + uses
})
resolve(inviteCounter)
})
})
}
解决方案
对于 discord.js v13,您需要使用:
if(!message.guild.me.permissions.has("ADMINISTRATOR")) return message.reply(`I don't have ADMINISTRATOR permission`)
推荐阅读
- vue.js - 如何在开发模式下运行 npm-watch?
- python - 我想从 fasta 文件中解析序列和序列 ID,并将它们分配给 Dataframe。我正在使用来自 biopython 的 SeqIO 库
- java - 更改 Java 基础映像注意事项
- python - 如何使用我将其命名为 Features.py 的其他 python 文件中的函数我想在 main.py 的类中使用该函数
- node.js - 当我们将 pdf 内容保存到 db 时,pdf2json 在 node.js 中显示错误
- java - VOSK 空文本输出?(Java)
- outlook - 确定 Exchange Server 是否完全支持 REST API 的最有效方法是什么?
- r-markdown - 如何在 kable table R markdown 中使单个单元格变为粗体?
- python - 如何使用pyodbc提交存储过程执行?
- c++ - 行为异常的 getline() 函数,无法接受输入