使用 Discord.js v14 开发全能Discord机器人 | Ep.5.2 关于指令「info」-使用者资讯

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

前言

此篇文章将会带着各位为自己的Discord.js机器人製作一个指令:user-info,用于获得使用者的资料,指令注册的部分已在前导文章完成啰!若需要的话可以先行前往阅读。

指令构想

指令名称

指令名称在此设定为user-info,亦可以自行设定名称。

Note: 指令的注册和回应侦测需使用同样的名称,否则会发生错误。

指令说明

指令是用于得知使用者的相关资料,在此使用「查看指定使用者的资讯」来作为指令的说明文字。

指令用途

综上所述,指令是用来了解使用者的相关资讯,因此我们在製作或构想时须朝此方向,若偏离太多会导致使用者使用时感到困惑或混乱。

回应内容

让我们来构思并列出一个使用者会有哪些相关资讯:

静态资讯(不会随时间改变的资讯):

使用者名称使用者ID使用者创建的时间使用者是否是机器人使用者头像(将会等讲解嵌入后再教学)

动态资讯(会随着时间或其他因素改变):

想不到

可以注意到这次的资讯和机器人资讯不同,这次几乎没有动态的资料?
因为使用者基本上属于一个比较稳定的实体,没有启动的时间、版本号码等资讯。

之所以加上是否为机器人,是因为我们之后会将此指令做为可以「查看指定使用者的资料」,而非只有自己。

其他功能

目前此指令只是一个单纯的user-info指令,因此尚无其他功能。

指令製作

接下来要开始製作指令啰,将修改机器人的主程式 index.js

......前段省略client.on('interactionCreate', async interaction => {  if (!interaction.isChatInputCommand()) return;  if (interaction.commandName === 'ping') {    const msg = await interaction.reply({      content: "正在计算延迟......",      fetchReply: true    });        const ping = msg.createdTimestamp - interaction.createdTimestamp;          interaction.editReply(`机器人延迟:${ping} ms\nAPI延迟:${client.ws.ping} ms`)   }  if (interaction.commandName === 'bot-info') {    interaction.reply(      `机器人名称:${client.user.username}\n`+      `机器人ID:${client.user.id}\n`+      `机器人製作者:自行填写\n`+      `机器人建立时间:<t:${~~(client.user.createdTimestamp/1000)}:R>\n`+      `机器人邀请连结:自行填写\n`+      `机器人版本:自行填写\n`+      `机器人所在伺服器数量:${client.guilds.cache.size}\n`+      `机器人上线时间:${msToHMS(client.uptime)}`    )  }});后段省略......

首先,新增一个用于判断指令的判断式,用来处理user-info指令

......前段省略  if (interaction.commandName === 'user-info') {      }后段省略......

接下来就要进入正题啰!

资料获取

首先,先了解各个资料的获取方式,由于我们要取得资讯的是使用指令的使用者,因此之后有许多资料都会以 interaction 开头,例如:interaction.user 即为指令的使用者

使用者名称

获取方法如下:

interaction.user.username

使用者ID

获得的方法如下:

interaction.user.id

使用者创建的时间

要获得使用者创建时间的方式如下,和前篇文章bot-info的机器人创建时间相同,会以毫秒时间戳记,因此需要进行转换,方式与上篇文章相同因此不多做论述:

原始型态

interaction.user.createdTimestamp

处理后的Discord时间戳记型态

`<t:${~~(interaction.user.createdTimestamp/1000)}:R>`

使用者是否是机器人

得知方法如下(将会传出布林值):

interaction.user.bot

为了方便辨识,在此转换为字串

interaction.user.bot? '是':'否'

此用法将会判断判断式是否成立,若成立则回传冒号左侧的值,否则回传右侧的值。

整理为程式码

接下来,就要整理成程式码放入程式中啰!

......前段省略  if (interaction.commandName === 'user-info') {    interaction.reply(      `使用者名称:${interaction.user.username}\n`+      `使用者ID:${interaction.user.id}\n`+      `使用者创建时间:<t:${~~(interaction.user.createdTimestamp/1000)}:R>\n`+      `是否为机器人:${interaction.user.bot? '是':'否'}\n`    )  }后段省略......

存档后执行

node index.js

到Discord执行程式码即可正常使用指令啰!

成功啰!
之后会找机会带着各为让此讯息变成更加美观的「嵌入讯息」,请拭目以待吧!

总结

此篇文章带着大家製作了user-info指令,并告诉各位许多相关资料的获取方法,希望可以对于大家开发机器人提供协助,下篇文章再见啰,掰掰!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章