Discord.js 是一个用于构建 Discord 机器人的 Node.js 库。v13 是该库的一个版本,它引入了许多新特性和改进。用户状态(User Status)是指用户在 Discord 上显示的状态,例如在线、离线、忙碌等。角色(Role)是 Discord 服务器中的一种权限分组,可以用来控制用户的权限。
以下是一个简单的示例,展示如何使用 Discord.js v13 读取用户状态并根据状态授予或删除角色:
const { Client, GatewayIntentBits, PermissionsBitField } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMembers] });
client.once('ready', async () => {
console.log(`Logged in as ${client.user.tag}`);
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'checkstatus') {
const member = interaction.member;
const status = member.presence?.status;
if (status === 'online') {
await member.roles.add('ROLE_ID_FOR_ONLINE'); // 替换为实际的在线角色ID
} else {
await member.roles.remove('ROLE_ID_FOR_OFFLINE'); // 替换为实际的离线角色ID
}
await interaction.reply(`Role updated based on your status: ${status}`);
}
});
client.login('YOUR_BOT_TOKEN');
原因:
解决方法:
确保机器人在 Discord 开发者门户中具有 View Members
和 Read Message Content
权限,并在创建客户端时启用相应的意图:
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMembers] });
原因:
解决方法:
确保机器人在 Discord 开发者门户中具有 Manage Roles
权限,并检查提供的角色ID是否正确。
通过以上步骤,你应该能够成功使用 Discord.js v13 读取用户状态并根据状态授予或删除角色。
领取专属 10元无门槛券
手把手带您无忧上云