为 discord.js 中的命令设置权限
Setting permissions for commands in discord.js
我对 javascript 比较陌生。
我正在尝试为 discord.js 中的命令设置权限。
我的代码:
const permissions = [ ]
for (i = 0; i < config.author.length; i++) { // config.author is a list of IDs in config.json that want to be able to use admin commands
permissions.push({
id: config.author[i],
type: 'USER',
permission: false
})
}
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
commands.push(command.data.toJSON());
}
for (const file of adminFiles) {
const command = require(`./admincmd/${file}`);
command.permissions.add({ // ERROR HERE
defaultPermission: false,
command: slashCommand.id,
permissions: permissions
});
admincmds.push(command.data.toJSON());
}
每当我尝试 运行 我的包含此代码的 deploy.js
文件时,我都会收到以下错误:
deploy.js:31
command.permissions.add({
^
TypeError: Cannot read properties of undefined (reading 'add')
at Object.<anonymous> (C:\Users\me\Documents\Code\Discord Bots\bot\deploy.js:31:23)
←[90m at Module._compile (node:internal/modules/cjs/loader:1101:14)←[39m
←[90m at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)←[39m
←[90m at Module.load (node:internal/modules/cjs/loader:981:32)←[39m
←[90m at Function.Module._load (node:internal/modules/cjs/loader:822:12)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)←[39m
←[90m at node:internal/main/run_main_module:17:47←[39m
command.permissions.add({...}) 是 discordjs.guide 中所说的,所以我不明白我做错了什么。此代码根本不属于 deploy.js 吗?
在您创建的每个命令中,您可以设置成员是否可以使用此命令
const { Permissions } = require('discord.js')
if(!<client>.member.permissions.has(Permissions.FLAGS.YOUR_PERMISSIONS)) return message.reply("YOUR_MESSAGE")
如果机器人可以使用此命令,则与您的机器人相同
const { Permissions } = require('discord.js')
if(!<client>.guild.me.permissions.has(Permissions.FLAGS.YOUR_PERMISSIONS)) return message.reply("YOUR_MESSAGE")
这是你想做的吗?
编辑:
使用message.author.id
方法
const allowed = "ID", "ID", "ID"
if (message.author.id === allowed) {
//only executes if the author listed
} else {
//only executes if the author is not listed
}
我对 javascript 比较陌生。
我正在尝试为 discord.js 中的命令设置权限。
我的代码:
const permissions = [ ]
for (i = 0; i < config.author.length; i++) { // config.author is a list of IDs in config.json that want to be able to use admin commands
permissions.push({
id: config.author[i],
type: 'USER',
permission: false
})
}
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
commands.push(command.data.toJSON());
}
for (const file of adminFiles) {
const command = require(`./admincmd/${file}`);
command.permissions.add({ // ERROR HERE
defaultPermission: false,
command: slashCommand.id,
permissions: permissions
});
admincmds.push(command.data.toJSON());
}
每当我尝试 运行 我的包含此代码的 deploy.js
文件时,我都会收到以下错误:
deploy.js:31
command.permissions.add({
^
TypeError: Cannot read properties of undefined (reading 'add')
at Object.<anonymous> (C:\Users\me\Documents\Code\Discord Bots\bot\deploy.js:31:23)
←[90m at Module._compile (node:internal/modules/cjs/loader:1101:14)←[39m
←[90m at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)←[39m
←[90m at Module.load (node:internal/modules/cjs/loader:981:32)←[39m
←[90m at Function.Module._load (node:internal/modules/cjs/loader:822:12)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)←[39m
←[90m at node:internal/main/run_main_module:17:47←[39m
command.permissions.add({...}) 是 discordjs.guide 中所说的,所以我不明白我做错了什么。此代码根本不属于 deploy.js 吗?
在您创建的每个命令中,您可以设置成员是否可以使用此命令
const { Permissions } = require('discord.js')
if(!<client>.member.permissions.has(Permissions.FLAGS.YOUR_PERMISSIONS)) return message.reply("YOUR_MESSAGE")
如果机器人可以使用此命令,则与您的机器人相同
const { Permissions } = require('discord.js')
if(!<client>.guild.me.permissions.has(Permissions.FLAGS.YOUR_PERMISSIONS)) return message.reply("YOUR_MESSAGE")
这是你想做的吗?
编辑:
使用message.author.id
方法
const allowed = "ID", "ID", "ID"
if (message.author.id === allowed) {
//only executes if the author listed
} else {
//only executes if the author is not listed
}