本文将仅专注于使用裸露的Discord API创建您的第一个机器人。也许最著名的Discord机器人是音乐机器人。音乐机器人可让您键入歌曲名称,并且该机器人将将新用户附加到播放请求歌曲的频道。这是在游戏或流媒体服务器上的年轻人中常用的机器人。
让我们开始创建一个自定义的Discord bot。>
本文已更新了2020年。要了解更多节点,请查看Node.js Web开发。钥匙要点
创建Discord Bot的过程涉及设置测试服务器,生成授权令牌,定义权限并将机器人添加到服务器,设置项目并探索Discord.js。
在Discord Developers Portal上的Discord帐户下注册后,可以通过代码控制该机器人。- > Discord Bot可以获得读取消息历史记录并发送消息的权限。这允许机器人读取发送到频道的任何消息。
- > 可以对机器人进行编程以响应特定的命令或消息。例如,如果一条消息包含“ ping”,则可以将机器人设置为用“ pong”回复。
- 建议使用命令处理程序用于大型项目,因为它避免了与“ else”链条相关的问题,例如难以阅读,调试,组织和维护代码。
- >先决条件
使用终端的基本知识
- 步骤1:设置测试服务器
- 首先,我们需要一台测试服务器,以后可以在该服务器上测试我们的Discord Bot。我们可以通过单击屏幕左侧的Plus图标来创建新服务器。
>
接下来,我们需要输入服务器的名称。为了使事情保持简单,我将服务器discord_playground命名。如果需要,您可以根据位置的位置更改服务器位置以获得更好的ping。
如果一切顺利,您应该看到新创建的服务器。
步骤2:生成auth令牌
>当我们想通过代码控制机器人时,我们需要在我们的Discord帐户下首先注册该机器人。
注册机器人,转到Discord Developers Portal并使用您的帐户登录。
新应用程序按钮来创建一个新的应用程序。>
接下来,您将看到一个弹出窗口,要求您输入应用程序的名称。让我们称我们的机器人my-greeter-bot。通过单击
>按钮,Discord将创建一个API应用程序。
创建应用程序后,您会看到新创建的My-Greeter-Bot应用程序的概述。您会看到诸如客户端ID和客户端秘密之类的信息。此秘密将在稍后用作授权令牌。
现在,单击
菜单中的bot 菜单选项。 Discord将构建我们的my-greeter-bot应用程序,并在其中添加一个bot用户。>
>构建机器人时,您将获得自定义机器人的概述。看一下
部分。复制此授权令牌并将其写入某个地方,因为我们稍后需要将其连接到我们的bot用户。
>步骤3:定义权限并将bot添加到服务器
第三,我们要定义机器人的权限,并将其添加到我们的Discord服务器中。
>导航到
oauth2settings
菜单下的部分。在这里,我们可以定义机器人的范围。由于我们只想启用一个简单的机器人,因此我们选择bot选项。> >您可能会注意到下面的授权URL现在已更改。但是,权限= 0部分表示我们尚未设置权限。>
如果我们向下滚动,您会发现

最后,复制此URL并将其粘贴到您喜欢的Web浏览器中。您会找到一个概述,询问您要添加机器人的服务器。让我们选择新创建的discord_playground。
>单击
>授权>按钮将bot添加到我们的服务器中。
如果您能够成功地将机器人添加到服务器中,则应看到以下成功屏幕。
如果要仔细检查添加机器人,请访问常规>频道。您应该看到一条类似的消息,该消息表明该机器人已加入了频道。
步骤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>
听“消息”事件
>除了
事件之外,Discord Client允许您收听
<span>TOKEN=my-unique-bot-token </span>
>如果我们进一步探索代码,您会发现我们正在寻找带有内容ping的消息。如果我们收到只包含ping的消息,则该机器人将与Pong回复。之后,我们使用msg.channel.send再次发送pong。
请注意两个命令之间的区别:
- msg.reply:标记已发送消息的初始用户
- > msg.channel.send:在没有标记任何人的情况下向频道发送消息
- >尝试使用节点索引。验证是否看到相同的结果。
寻找标记的用户
为了添加新命令,我们必须扩展我们与其他条款相关的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:其他问题……如果链
> 但是,当我们决定以这种方式构建一个广泛的项目时,我们最终会遇到其他……如果语句。以下是您不应该使用其他原因的原因很小的原因...
>成为意大利面代码的受害者更容易
代码很难读取访问
- 并不容易
- 很难组织代码
- >随着代码的增长 ,维护并不容易
-
因此,让我们看一下我们可以使用的命令模式。
> 实现命令处理程序 - >命令处理程序是一种由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.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中文网其他相关文章!

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

Python和JavaScript在性能和效率方面的差异主要体现在:1)Python作为解释型语言,运行速度较慢,但开发效率高,适合快速原型开发;2)JavaScript在浏览器中受限于单线程,但在Node.js中可利用多线程和异步I/O提升性能,两者在实际项目中各有优势。

JavaScript起源于1995年,由布兰登·艾克创造,实现语言为C语言。1.C语言为JavaScript提供了高性能和系统级编程能力。2.JavaScript的内存管理和性能优化依赖于C语言。3.C语言的跨平台特性帮助JavaScript在不同操作系统上高效运行。

JavaScript在浏览器和Node.js环境中运行,依赖JavaScript引擎解析和执行代码。1)解析阶段生成抽象语法树(AST);2)编译阶段将AST转换为字节码或机器码;3)执行阶段执行编译后的代码。

Python和JavaScript的未来趋势包括:1.Python将巩固在科学计算和AI领域的地位,2.JavaScript将推动Web技术发展,3.跨平台开发将成为热门,4.性能优化将是重点。两者都将继续在各自领域扩展应用场景,并在性能上有更多突破。

Python和JavaScript在开发环境上的选择都很重要。1)Python的开发环境包括PyCharm、JupyterNotebook和Anaconda,适合数据科学和快速原型开发。2)JavaScript的开发环境包括Node.js、VSCode和Webpack,适用于前端和后端开发。根据项目需求选择合适的工具可以提高开发效率和项目成功率。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用

Dreamweaver CS6
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具