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

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

前言

时隔六个月,笔者决定继续来更新这个系列的文章。主要是因为过了这半年多的时间,仍然发现网路上的Discord.js v14教学不多,并且自己的文章也得到越来越多的迴响,决定藉此机会继续更新,带给大家更丰富的教学!

除此之外,笔者开始在自己的部落格更新文章啰!
之后的文章将会优先在部落格更新,但仍会于此更新,欢迎多多支持我的Github Pages自架部落格哦~

部落格连结:https://winson-otp.github.io/
此篇文章连结:https://winson-otp.github.io/posts/discord-js-ep-5-3/

今天这篇文章将会带着大家为Discord.js的机器人製作一个指令: server-info,用于得知伺服器的相关资讯,让我们开始实作吧!

指令构想

在製作server-info指令前,先来构想一下指令的相关架构:

指令名称

如上述,使用 server-info 作为指令的名称,简短且方便辨识。

指令说明

在前导文章曾经提到,将使用「查看伺服器的资讯」作为其说明文字。

指令用途

指令的用途是在使用者使用时,回传当前伺服器的相关资料和资讯。

回应内容

那接下来就来确定要加上的资料有哪些吧!

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

伺服器名称伺服器ID伺服器创建的时间伺服器简介伺服器拥有者伺服器头像(将会等讲解嵌入后再教学)

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

伺服器人数

这次的资料内容与上一篇文章的类似,并且有了更多资料。

其他功能

目前此指令只是一个单纯的server-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)}`    )  }  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`    )  }});后段省略......

资料获取

首先,我们先一个一个了解资料该如何取得,并且在后续整理为完整的程式码。在许多资料的获取方式中,我们会看到 interaction.guild 这个物件,这个物件会指向指令所使用所处在的伺服器,因此在此将多次使用到这个物件。接下来让我们来获取资料吧!

伺服器名称

获取方式如下:

interaction.guild.name

伺服器ID

获得方式如下:

interaction.guild.id

伺服器创建的时间

获得的方式如下:

interaction.guild.createdTimestamp

但是通过这种方式获得的内容将会是一串数字,也就是时间戳记,难易阅读,因此需要经过处理:

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

这样我们就可以以正常的时间标示格式来检视伺服器的建立时间啰!

伺服器简介

伺服器的简介获取方式如下,为了避免该伺服器没有简介,我们使用 ?? 让其在简介不存在时显示为无

interaction.guild.description ?? "无"

伺服器拥有者

伺服器的拥有者获取后将会以id方式传回,因此我们使用 <@> 包裹让他会显示为标记的使用者。

`<@${interaction.guild.ownerId}>`

伺服器人数

伺服器的人数会数字方式传出,为了让其成为字串,我们使用 ` 将其包住:

`${interaction.guild.memberCount}`

整理为程式码

接下来,我们将上述资讯整理为程式码来运行:

......前段省略  if (interaction.commandName === 'server-info') {    interaction.reply(      `伺服器名称:${interaction.guild.name}\n` +      `伺服器ID:${interaction.guild.id}\n` +      `伺服器创建时间:<t:${~~(interaction.guild.createdTimestamp/1000)}:R>\n` +      `伺服器简介:${interaction.guild.description ?? "无"}\n` +       `伺服器拥有者:<@${interaction.guild.ownerId}>\n` +      `伺服器人数:${interaction.guild.memberCount}\n`    )  }后段省略......

将此档案存档后执行:

node index.js

到Discord就可以使用指令啰!

这样第五集的所有分支文章就完结啰!

总结

以上就是这篇文章的所有内容啰!也感谢您用心阅读完毕了这篇文章。之后的文章,由于指令数量愈来愈多,会先以指令各自分档案的教学为优先,除此之外也会介绍各种大大小小的功能,引导大家更深入Discord.js套件唷!

谢谢您的阅读,我们下篇文章再见啰!


关于作者: 网站小编

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

热门文章