推荐软件产品
twitter,facebook,ins,youtube视频下载
磨针音视频转文字
磨针免费pdf转word
磨针微信定时发文件和消息
磨针c盘清理,任何场景都能释放几十G的空间

这个系列会带着您通过Node.js中的Discord.js套件,从0到1开始制作属于自己的Discord机器人,希望可以帮助大家成为机器人的开发者哦!

前言

这篇教学将会带着大家设定机器人的状态,以及状态消息。

上篇回顾

此篇教学将会用到上篇所介绍的官方范例,index.js机器人主程式

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

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

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

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

client.login('token');

请开启前一篇文章所完成的这个档案后,再继续进行后续步骤

状态设置

首先,先进行一个小小的互动,请问各位觉得若要让机器人一启动就设置状态,程式要写在哪里呢?

(A) 机器人启动成功时(onReady)
(B) 指令创建时(onInteractionCreate)
(C) 程式码第一行

答案是A,你答对了吗?
B选项没办法在机器人一启动就执行,要等到指令发送才可以
而C选项会在client被定义前就进行状态设置,会发生错误喔!

接下来要进入正题啰!来设置机器人的状态吧
如上所述,今天的状态设置只会使用到机器人启动成功时(onReady)的事件,因此只会改变到这段程式喔~

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

Step. 1 开启index.js

虽然前面已经提过,但再次提及,第一步先开启上篇文章制作的index.js档案,并找到这段程式

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

Step. 2 设定状态

机器人的状态分为:「状态」以及「行为」

首先,我们先来设定状态

状态是指机器人的「在线、闲置、请勿打扰、离线、直播」(直播为机器人特有的状态,一般使用者无法选择)

下图为一般使用者的状态列表

NOTE: 机器人不论为任何状态,只要程式正在运行皆可正常回覆讯息或运作

设置状态的方法是通过 client.user.setStatus() 函数,而括号内要填入的是字串,可以是:online(在线) / idle(闲置) / dnd(请勿打扰) / invisible(离线)

......前段省略
client.on('ready', () => {
  client.user.setStatus('online'); //設置狀態為在線
  client.user.setStatus('idle'); //設置狀態為閒置
  client.user.setStatus('dnd'); //設置狀態為請勿打擾
  client.user.setStatus('invisible'); //設置狀態為離線(隱形)
  console.log(`Logged in as ${client.user.tag}!`);
});
後段省略......

上述程式码中的四行 client.user.setStatus 分别是设置机器人的四种状态,仅需选择一种即可,例如:若要设置为线上,即如下设置

......前段省略
client.on('ready', () => {
  client.user.setStatus('online'); //設置狀態為在線
  console.log(`Logged in as ${client.user.tag}!`);
});
後段省略......

Step. 3 设定行为

设置完状态后,便要开始设置机器人的行为啰!

行为是指机器人状态文字的前缀,包括「正在玩、正在听、正在看、竞争、正在直播......」目前机器人尚无法进行自订行为

设置机器人的行为需要先修改机器人的第一行程式码,让从discord.js中引入的套件加上ActivityType

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

接着便可以设置机器人的行为

......前段省略
client.on('ready', () => {
  client.user.setActivity('前綴後面的文字', { type: ActivityType.Watching }); //將機器人的行為設置為正在看
  client.user.setActivity('前綴後面的文字', { type: ActivityType.Listening }); //將機器人的行為設置為正在聽
  client.user.setActivity('前綴後面的文字', { type: ActivityType.Streaming }); //將機器人的行為設置為正在直播
  client.user.setActivity('前綴後面的文字', { type: ActivityType.Playing }); //將機器人的行為設置為正在玩
  client.user.setActivity('前綴後面的文字', { type: ActivityType.Competing }); //將機器人的行為設置為競爭
  console.log(`Logged in as ${client.user.tag}!`);
});
後段省略......

同样仅须择一行为设置即可,需要注意的是正在直播的文字需填直播连结(twitch),例如:要设置为正在玩iTHome,则如下设置

......前段省略
client.on('ready', () => {
  client.user.setActivity('iTHome', { type: ActivityType.Playing }); //將機器人的行為設置為正在玩iTHome
  console.log(`Logged in as ${client.user.tag}!`);
});
後段省略......

Step. 2~3 同时设置状态与行为

觉得状态和行为分开设置很麻烦吗?当然也可以在同一行进行设置喔!但目前已知仅能设置「正在玩」

设置方式如下

client.user.setPresence({ activities: [{ name: '行為後的文字' }], status: 'idle' });

status: 'idle'中的idle可以如刚刚设置状态一样替换为其他状态,而 activities: [{ name: '正在玩後面的文字' }] 可以在name栏位中填入要设置的文字

Step. 4 重新启动

NOTE: 机器人每次程式码修改都需要重新启动,若要中止正在运行的机器人请在控制台按下Ctrl+C

重新启动index.js程式码之后就成功啰!
启动指令是在终端机输入

node index.js

成功设置机器人状态了耶!

总结

此篇文章我们带着大家设置了机器人的状态,恭喜您可以让机器人改变成自己想要的状态啰,下篇文章再见啰,掰掰!