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

如何为Discord.js 14.6.0设置机器人状态?附现有代码

在Discord.js 14.6.0中设置机器人状态

在Discord.js v14中,设置机器人状态必须在ready事件回调内操作——只有当机器人完全登录完成后,client.user对象才会被初始化,此时才能修改状态。以下是几种直接可用的实现方案:

1. 设置基础在线状态

可设置机器人的基础在线状态,可选值为Online(在线)、Idle(闲置)、DoNotDisturb(请勿打扰)、Invisible(隐身):

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
  client.user.setStatus('Online');
});

2. 设置自定义活动(游戏/直播等)

结合ActivityType可以实现更丰富的状态展示,比如“正在玩XX”“正在听XX”等效果。首先需要导入ActivityType:

const { Client, GatewayIntentBits, ActivityType } = require('discord.js');

然后在ready事件中添加状态设置逻辑,以下是不同类型的示例:

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
  
  // 示例1:显示「正在玩Discord.js」
  client.user.setPresence({
    activities: [{ name: 'Discord.js', type: ActivityType.Playing }],
    status: 'Online',
  });

  // 示例2:显示「正在听Spotify」
  // client.user.setPresence({
  //   activities: [{ name: 'Spotify', type: ActivityType.Listening }],
  //   status: 'Idle',
  // });

  // 示例3:显示「正在看Netflix」
  // client.user.setPresence({
  //   activities: [{ name: 'Netflix', type: ActivityType.Watching }],
  //   status: 'DoNotDisturb',
  // });

  // 示例4:直播状态(需填写合法直播链接)
  // client.user.setPresence({
  //   activities: [{ name: '我的直播', type: ActivityType.Streaming, url: 'https://twitch.tv/你的频道' }],
  //   status: 'Online',
  // });
});

修改后的完整代码

将状态设置逻辑整合到你的现有代码中,最终版本如下:

const { REST, Routes } = require('discord.js');

const commands = [
  {
    name: 'ping',
    description: 'Replies with Pong!',
  },
];

const rest = new REST({ version: '10' }).setToken("MY-TOKEN");

(async () => {
  try {
    console.log('Started refreshing application (/) commands.');

    await rest.put(Routes.applicationCommands("CLIENT-ID"), { body: commands });

    console.log('Successfully reloaded application (/) commands.');
  } catch (error) {
    console.error(error);
  }
})();

const { Client, GatewayIntentBits, ActivityType } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.on('ready', () => {
  console.log(`Logged in as ${client.user.tag}!`);
  // 自定义活动状态
  client.user.setPresence({
    activities: [{ name: '第一个JS项目', type: ActivityType.Playing }],
    status: 'Online',
  });
});

client.on('interactionCreate', async interaction => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'ping') {
    await interaction.reply('Pong!');
  }
});

client.login("MY-TOKEN");

排查要点

  • 运行npm list discord.js确认当前版本确实为14.6.0;
  • 绝对不要在client.login()之前调用setPresence,必须等待ready事件触发;
  • 检查机器人在服务器内的权限,确保没有被限制状态展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:41:17