关于机器人Presence/Activity设置命令及专属命令配置的技术咨询
实现机器人状态设置命令并限制仅本人使用
嘿,我来帮你一步步搞定这个需求!作为编程新手,咱们从最基础的逻辑开始拆解,先实现状态设置的命令功能,再加上仅你自己能使用的权限限制~
一、编写状态设置命令(以Discord.js为例)
我用Discord.js来举例子,这是最适合新手的Discord机器人开发库之一。先确保你已经初始化好机器人项目,接下来直接写命令逻辑:
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildMessages] }); // 替换成你自己的Discord用户ID(后面会说怎么找) const OWNER_ID = '你的用户ID数字'; client.on('messageCreate', async (message) => { // 忽略机器人自己发的消息,以及不以~~set开头的消息 if (message.author.bot || !message.content.startsWith('~~set')) return; // 仅允许机器人所有者使用该命令——核心权限限制 if (message.author.id !== OWNER_ID) { return message.reply('抱歉,你没有权限使用这个命令!'); } // 拆分命令参数,比如~~set presence idle 会拆成 ['~~set', 'presence', 'idle'] const args = message.content.split(/\s+/); args.shift(); // 移除第一个命令前缀元素 // --- 处理Presence在线状态设置 --- if (args[0] === 'presence') { const status = args[1]; // 验证合法状态值:online(在线)、idle(空闲)、dnd(请勿打扰)、invisible(隐身) const validStatuses = ['online', 'idle', 'dnd', 'invisible']; if (!validStatuses.includes(status)) { return message.reply('无效的状态值!可选值:online, idle, dnd, invisible'); } client.user.setStatus(status); return message.reply(`已将机器人状态设置为:${status}`); } // --- 处理活动状态设置 --- if (args[0] === 'activity') { const type = args[1]; // 取出带空格的活动描述(自动去掉前后引号) const activityName = args.slice(2).join(' ').replace(/["']/g, ''); // 验证合法活动类型:playing(玩)、watching(看)、listening(听)、streaming(直播)、competing(竞赛) const validTypes = ['playing', 'watching', 'listening', 'streaming', 'competing']; if (!validTypes.includes(type.toLowerCase())) { return message.reply('无效的活动类型!可选值:playing, watching, listening, streaming, competing'); } // 转换为Discord要求的大写类型 const activityType = type.toUpperCase(); client.user.setActivity(activityName, { type: activityType }); return message.reply(`已将机器人活动设置为:${type} ${activityName}`); } // 命令格式错误时的提示 message.reply('命令格式错误!示例:\n~~set presence idle\n~~set activity watching "people typing ~~help"'); }); // 登录机器人(替换成你的机器人Token) client.login('你的机器人Token');
二、快速获取自己的Discord用户ID
要让权限限制生效,你需要先拿到自己的用户ID:
- 打开Discord设置,进入「高级」选项
- 开启「开发者模式」
- 右键点击自己的头像,选择「复制用户ID」,把这个ID粘贴到代码里的
OWNER_ID位置就好啦
测试命令
现在你就可以在Discord里测试你想要的命令了:
- 输入
~~set presence idle:机器人会切换到“空闲”状态 - 输入
~~set activity watching "people typing ~~help":机器人会显示“正在观看 people typing ~~help”
如果其他人尝试发送这些命令,会直接收到权限不足的提示,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Verico
相关产品推荐
相关产品推荐

