首页 > web前端 > js教程 > 如何用node.js构建第一个不和谐机

如何用node.js构建第一个不和谐机

Jennifer Aniston
发布: 2025-02-10 14:20:14
原创
699 人浏览过

如何用node.js构建第一个不和谐机

如今,机器人被用于自动执行各种任务。自从Amazon的Alexa设备发布以来,围绕自动化机器人的炒作才开始增长。除Alexa外,其他通信工具(例如Discord和Telegram)还提供API来开发自定义bot。

本文将仅专注于使用裸露的Discord API创建您的第一个机器人。也许最著名的Discord机器人是音乐机器人。音乐机器人可让您键入歌曲名称,并且该机器人将将新用户附加到播放请求歌曲的频道。这是在游戏或流媒体服务器上的年轻人中常用的机器人。

让我们开始创建一个自定义的Discord bot。

>

本文已更新了2020年。要了解更多节点,请查看Node.js Web开发。

钥匙要点

创建Discord Bot的过程涉及设置测试服务器,生成授权令牌,定义权限并将机器人添加到服务器,设置项目并探索Discord.js。

在Discord Developers Portal上的Discord帐户下注册后,可以通过代码控制该机器人。>
    > Discord Bot可以获得读取消息历史记录并发送消息的权限。这允许机器人读取发送到频道的任何消息。
  • >
  • 可以对机器人进行编程以响应特定的命令或消息。例如,如果一条消息包含“ ping”,则可以将机器人设置为用“ pong”回复。
  • 建议使用命令处理程序用于大型项目,因为它避免了与“ else”链条相关的问题,例如难以阅读,调试,组织和维护代码。
  • >先决条件
  • > >一个Discord帐户和Discord Client
>

使用终端的基本知识

  • 步骤1:设置测试服务器
  • 首先,我们需要一台测试服务器,以后可以在该服务器上测试我们的Discord Bot。我们可以通过单击屏幕左侧的Plus图标来创建新服务器。>
将显示一个弹出窗口,询问您是否要加入服务器或创建新服务器。当然,我们想创建一台新服务器。

接下来,我们需要输入服务器的名称。为了使事情保持简单,我将服务器discord_playground命名。如果需要,您可以根据位置的位置更改服务器位置以获得更好的ping。 如何用node.js构建第一个不和谐机

如果一切顺利,您应该看到新创建的服务器。

如何用node.js构建第一个不和谐机

步骤2:生成auth令牌

>当我们想通过代码控制机器人时,我们需要在我们的Discord帐户下首先注册该机器人。

注册机器人,转到Discord Developers Portal并使用您的帐户登录。>

登录后,您应该可以看到仪表板。让我们通过单击

新应用程序按钮来创建一个新的应用程序。>

如何用node.js构建第一个不和谐机 接下来,您将看到一个弹出窗口,要求您输入应用程序的名称。让我们称我们的机器人my-greeter-bot。通过单击

create

>按钮,Discord将创建一个API应用程序。>

创建应用程序后,您会看到新创建的My-Greeter-Bot应用程序的概述。您会看到诸如客户端ID和客户端秘密之类的信息。此秘密将在稍后用作授权令牌。如何用node.js构建第一个不和谐机

现在,单击如何用node.js构建第一个不和谐机

settings

菜单中的bot 菜单选项。 Discord将构建我们的my-greeter-bot应用程序,并在其中添加一个bot用户。>

如何用node.js构建第一个不和谐机>构建机器人时,您将获得自定义机器人的概述。看一下

令牌

部分。复制此授权令牌并将其写入某个地方,因为我们稍后需要将其连接到我们的bot用户。>

>步骤3:定义权限并将bot添加到服务器如何用node.js构建第一个不和谐机 第三,我们要定义机器人的权限,并将其添加到我们的Discord服务器中。

>导航到

oauth2

settings

菜单下的部分。在这里,我们可以定义机器人的范围。由于我们只想启用一个简单的机器人,因此我们选择bot选项。> >您可能会注意到下面的授权URL现在已更改。但是,权限= 0部分表示我们尚未设置权限。>

如果我们向下滚动,您会发现 bot Permissions 部分。我们希望该机器人能够发送消息并阅读消息历史记录。我们需要允许阅读消息历史记录,以便我们检测用户的请求。如何用node.js构建第一个不和谐机> 选择两个选项时,请注意授权URL中的权限参数的数字已更改。

最后,复制此URL并将其粘贴到您喜欢的Web浏览器中。您会找到一个概述,询问您要添加机器人的服务器。让我们选择新创建的discord_playground。

>

单击

>授权

>按钮将bot添加到我们的服务器中。如何用node.js构建第一个不和谐机

如何用node.js构建第一个不和谐机

如果您能够成功地将机器人添加到服务器中,则应看到以下成功屏幕。

如何用node.js构建第一个不和谐机

如果要仔细检查添加机器人,请访问常规>频道。您应该看到一条类似的消息,该消息表明该机器人已加入了频道。>

如何用node.js构建第一个不和谐机

成功!

步骤4:项目设置

>最后,让我们设置项目。您可以在Github上找到基本项目。请使用git克隆https://github.com/sitepoint-editors/discord-bot-sitepoint。

该项目取决于两个依赖项,即dotenv和discord.js。第一个依赖关系使我们可以使用一个.ENV文件,该文件保存了我们写下的机器人令牌。很明显,我们需要第二个依赖性,discord.js来开发不和谐bot。

为了安装两个依赖项,请在项目文件夹中执行NPM安装。

最后,要完成安装,请在项目的根部创建.ENV文件。将一个称为令牌的环境变量添加到这样的文件:

>

>步骤5:探索Discord.js

>让我们看一下位于项目根部的index.js文件:>
<span>TOKEN=my-unique-bot-token
</span>
登录后复制
登录后复制
登录后复制

>我们首先加载了通过从环境中需要配置.env文件的环境变量。这使我们可以使用通过process.env.token定义的令牌变量。上面片段的最后一行显示了我们如何将令牌传递给登录功能,以便访问我们创建的机器人。

>

机器人变量实际上是我们的Discord客户端,我们将通过它进行交互。

听“准备就绪”事件
<span>require('dotenv').config();
</span><span>const Discord = require('discord.js');
</span><span>const bot = new Discord<span>.Client</span>();
</span>
<span>const TOKEN = process.env.TOKEN;
</span>
bot<span>.login(TOKEN);
</span>
登录后复制
登录后复制
登录后复制

接下来,我们可以聆听事件。首先,我们正在听准备的活动。一旦我们连接到机器人,就可以发射现成的事件:

如果您已经使用了正确的令牌登录到机器人,则终端应打印bot bot.user.tag的名称。

>您可以通过简单地执行终端中的节点index.js来启动bot。确保您是在项目的根源中执行此命令。

>

如果成功连接了机器人,则应看到在终端中打印的机器人的名称。
bot<span>.on('ready', () => {
</span>  <span>console.info(<span>`Logged in as <span>${bot.user.tag}</span>!`</span>);
</span><span>});
</span>
登录后复制
登录后复制

听“消息”事件

>除了

如何用node.js构建第一个不和谐机事件之外,Discord Client允许您收听

>消息的事件。这意味着机器人可以读取发送到频道的任何消息。要绑定到权限部分,这就是我们需要授予机器人许可以阅读消息历史记录的确切原因。
<span>TOKEN=my-unique-bot-token
</span>
登录后复制
登录后复制
登录后复制

>如果我们进一步探索代码,您会发现我们正在寻找带有内容ping的消息。如果我们收到只包含ping的消息,则该机器人将与Pong回复。之后,我们使用msg.channel.send再次发送pong。

请注意两个命令之间的区别:

    msg.reply:标记已发送消息的初始用户
  • > msg.channel.send:在没有标记任何人的情况下向频道发送消息
  • >尝试使用节点索引。验证是否看到相同的结果。

如何用node.js构建第一个不和谐机寻找标记的用户

为了添加新命令,我们必须扩展我们与其他条款相关的if子句……if:

>

>假设我们想通过发送诸如kick @username之类的消息来踢某人。因此,首先我们要寻找!启动消息的内容。如果我们找到以!踢开头的消息,我们可以检查用户是否在消息中使用msg.mentions.users属性标记。
<span>require('dotenv').config();
</span><span>const Discord = require('discord.js');
</span><span>const bot = new Discord<span>.Client</span>();
</span>
<span>const TOKEN = process.env.TOKEN;
</span>
bot<span>.login(TOKEN);
</span>
登录后复制
登录后复制
登录后复制
如果有标记用户,我们可以使用msg.mentions.users.first()选择第一个提到的用户。接下来,我们在消息中使用用户的用户名来回复频道。

>

>步骤6:其他问题……如果链如何用node.js构建第一个不和谐机

接下来,让我们与所有其他……如果语句讨论问题。如果您在消息事件中只有几个命令可以侦听,则代码是相当可读的。

> 但是,当我们决定以这种方式构建一个广泛的项目时,我们最终会遇到其他……如果语句。以下是您不应该使用其他原因的原因很小的原因...

>成为意大利面代码的受害者更容易

代码很难读取

访问
    并不容易
  • 很难组织代码
  • >随着代码的增长
  • ,维护并不容易
  • 因此,让我们看一下我们可以使用的命令模式。>
  • 实现命令处理程序
  • >命令处理程序是一种由discord.js软件包支持的方法。在继续之前,请查看具有Git Checkout Advanced的高级分支。该分支拥有命令处理程序实现。
  • >
  • >命令文件夹

首先,让我们探索命令文件夹。该文件夹包含一个index.js文件,该文件导出我们将定义的所有命令。为了使事情变得简单,我们只会定义一个命令,ping:

>

接下来,让我们看一下ping命令的实现,该命令基本上导出一个包含以下内容的对象:>
  • 名称:命令名称。
  • 描述:为每个命令添加描述是最好的做法。>
  • 执行:接受msg和args输入的函数。此功能具有与我们在其他方面的逻辑相同的逻辑……如果链。
  • >
<span>TOKEN=my-unique-bot-token
</span>
登录后复制
登录后复制
登录后复制
>导入命令

继续,让我们将命令导入index.js文件中。请注意,我们在Discord Bot上定义了命令集合。我们在所有命令上循环,然后将它们一个一个添加到命令集合中。>

bot.commands.set函数接受命令的名称和整个命令对象:

之后,我们必须删除其他……如果链条并用一些动态代码替换它,以找到我们要调用的正确命令:
<span>require('dotenv').config();
</span><span>const Discord = require('discord.js');
</span><span>const bot = new Discord<span>.Client</span>();
</span>
<span>const TOKEN = process.env.TOKEN;
</span>
bot<span>.login(TOKEN);
</span>
登录后复制
登录后复制
登录后复制

>我们首先尝试使用.split( / /)将消息的内容拆分。我们假设此ARGS数组中的第一个项目是我们的命令。要检查该命令是否存在于我们的集合中,该集合将公开A HES()函数,该功能只是返回对或false。如果命令不存在,我们返回一个空的响应。
bot<span>.on('ready', () => {
</span>  <span>console.info(<span>`Logged in as <span>${bot.user.tag}</span>!`</span>);
</span><span>});
</span>
登录后复制
登录后复制
> 但是,如果存在命令,我们使用get()函数检索正确的命令并使用输入参数msg和args执行。

>这是一种易于阅读的,动态的呼叫命令的方式,而无需编写意大利面条代码。如果需要,这使您可以将项目扩展到数百个命令。

>

>再次,如果要测试我们代码的新版本,请确保查看具有Git Checkout Advanced的高级分支。接下来,使用NPM安装安装所有依赖关系,并使用节点索引启动机器人。

总结

>一开始安装和设置新的Discord机器人可能会感到不知所措。但是,discord.js软件包提供的API很简单,Discord网站提供了很好的示例。

本教程仅涵盖了两个权限,因此还有更多可找到的权限。您可以在discordjs.guide网站上了解有关权限的更多信息。

构建您的第一个Discord Bot! 顺便说一句,您可以使用此链接加入Sitepoint的Discord社区。快来与我们谈谈技术。

经常询问的问题(常见问题解答)有关与node.js 构建不和谐机器人的问题

>如何在我的Discord bot中添加更多功能?

>在您的Discord Bot中添加更多功能,涉及了解Discord.js库和Discord API。您可以添加功能,例如发送消息,回复消息,加入语音频道,播放音频等等。要添加这些事件,您需要收听事件,然后根据这些事件执行操作。例如,要使您的机器人发送消息,您可以使用“消息”事件和'Message.Channel.Send'方法。

>如何调试我的Discord Bot?

>调试您的Discord Bot涉及使用console.log语句打印有关机器人状态和动作的信息。您还可以使用node.js调试工具,例如内置调试器或外部工具,例如Visual Studio Code的调试器。此外,Discord.js库还提供了诸如“调试”和“警告”之类的事件,您可以听取有关机器人正在做什么的更多信息。

>

>如何使我的Discord Bot与其他API相互作用?

>

使您的Discord Bot与其他API相互作用涉及使用“ Fetch”或“ Axios”库发送HTTP请求。您可以使用这些库从其他API获取数据,然后在机器人中使用该数据。例如,您可以制作一个机器人,以获取天气数据并将其作为消息频道中发送。在服务器上而不是本地计算机上。您可以使用云托管提供商,例如Heroku,AWS或Google Cloud。这些提供商允许您24/7运行机器人,并且它们经常提供可以与机器人一起使用的数据库和其他服务。

>如何使我的Discord bot响应特定命令?

使您的Discord Bot响应特定命令涉及聆听“消息”事件,然后检查消息内容是否以特定命令开头。您可以使用“ startswith”方法为此。如果消息以命令开头,则可以执行特定的操作。

>如何使我的Discord bot在语音频道中播放音频?

>使您的Discord Bot播放音频语音频道涉及使用Discord.js库的“语音”部分。您可以使用“ JOINVOICECHANNEL”方法使机器人加入语音频道,然后使用“播放”方法播放音频。音频可以是本地文件,流或URL。在discord.js库中的'messageembed'类。您可以创建一个新的嵌入,设置其标题,描述,颜色,图像和其他属性,然后使用'Message.Channel.Send'方法。到消息?

>使您的Discord机器人对消息做出反应涉及使用“ Message.React”方法。您可以将表情符号传递给此方法,并且该机器人将对该表情符号的消息做出反应。您可以通过传递其ID来使用自定义表情符号,或通过传递其Unicode字符来使用默认表情符号。

>如何使我的Discord机器人处理错误?

>处理您的Discord Bot中的错误涉及使用尝试/捕获块并聆听“错误”事件。如果在尝试块中发生错误,则将执行捕获块。每当在ciscord.js库中发生错误时,“错误”事件将发出。

>如何使我的Discord bot使用数据库?

>使您的Discord Bot使用数据库涉及使用数据库库(例如or Mongoose'用于MongoDB或用于SQL数据库的“续集”。您可以使用这些库连接到数据库,定义模型,然后创建,读取,更新和删除数据。

以上是如何用node.js构建第一个不和谐机的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板