You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Discord.js中限制命令仅指定用户ID可使用

实现Discord机器人say命令的权限限制

要实现仅特定用户可使用say命令,只需在处理命令逻辑前添加用户ID校验即可,具体修改如下:

核心修改步骤

  • 在解析命令之前,检查消息发送者的ID是否在你定义的adminIDs数组中
  • 如果不在权限列表内,直接终止后续操作,可选发送权限不足提示

修改后的完整代码

const Discord = require("discord.js")

const TOKEN = "---"

prefix = "."

// 替换为实际的管理员用户ID(纯数字字符串)
const adminIDs = ["1234567890", "0987654321"]

const client = new Discord.Client({
    intents: [
        "GUILDS",
        "GUILD_MESSAGES"
    ]
})

client.on("ready", () => {
    console.log(`Logged in as ${client.user.tag}`)
})

client.on("messageCreate", (message) => {
    if(!message.content.startsWith(prefix) || message.author.bot) return

    // 权限校验:仅adminIDs内的用户可执行命令
    if (!adminIDs.includes(message.author.id)) {
        // 发送权限提示并自动删除(可选)
        message.reply("你没有使用该命令的权限!").then(msg => {
            setTimeout(() => msg.delete(), 3000)
        })
        message.delete()
        return
    }

    const args = message.content.split(/\s+/)
    
    const commandName = args.shift().substring(prefix.length)

    if(commandName == "say"){
        const messageContent = args.join(" ")
        message.channel.send(messageContent)
        message.delete()
    }
})

client.login(TOKEN)

关键说明

  • 确保adminIDs中的用户ID是正确的Discord用户ID(开启开发者模式后右键用户即可复制ID)
  • 如果不需要权限提示,可直接删除message.reply相关代码,仅保留message.delete()和return
  • 若只想限制say命令而非所有前缀命令,可将校验代码移到if(commandName == "say")的代码块内

内容的提问来源于stack exchange,提问作者heart u

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:20:05