在 Repl.it 上托管 Discord 机器人
随着博客文章的老化,内容会变得有些陈旧。此处的信息可能不再准确。
如果你是一位 Discord 的忠实用户,你肯定在你所在的服务器里见过一个(或十个)机器人。如果你是某种类型的程序员(业余爱好者、大学生或疲惫的专业人士),你可能想过“我可以把它做得更好!🤓”。
如果符合以下条件,那么这篇文章就很棒:
- 您无法使用信用卡,并且希望将您的项目托管在您的朋友(和潜在雇主)可以全天候访问的地方。
- 你有一个超酷的 Discord 机器人创意,并且能够用某种编程语言编写石头剪刀布游戏。我在这个例子中使用了 JavaScript,但这个概念可以应用于 Ruby、Python、Java 等语言。
- 您知道无论您使用哪种编程语言,包管理器如何工作。
- 你和我一样吝啬鬼,想要免费运行一个或一百个 discord 机器人!
如果您需要一个具有语音功能的机器人,请立即返回。我们将使用 Repl.it 来托管我们的机器人,在其上安装 ffmpeg 非常麻烦。
步骤 1:创建机器人用户
a) 在https://discordapp.com上登录你的 Discord 帐户,并在此处创建一个新的应用程序。然后向该应用程序添加一个机器人用户:
c) 我们需要从此门户获取的最后一项是您的机器人的邀请 URL。这决定了您的机器人拥有哪些权限。它至少需要发送消息的权限。请务必使用该 URL 邀请它加入您的服务器!
第 2 步:前往 Repl.it
如果你还没听说过,Repl.it 是一款在线 IDE,可以让你创建和分享小型项目。它非常出色,并且不断添加新功能,帮助你在线完成更多工作。我们称之为repls。
b) 首先,我们需要确保我们的 repl 中有一个 Web 服务器正在运行。当您关闭浏览器标签页时,Repl.it 会终止正在运行的 repl,除非它正在提供 Web 内容。之后,即使您关闭了标签页,Repl 也会让它保持活动状态一小时。将以下代码粘贴到您的 repl 中,Repl.it 将自动为您安装软件包并启动一个 Express Web 服务器。
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
如果你往左边看,package.json
应该会出现一个名为 的文件。 这个文件包含了你在 repl 中需要的所有包,以及我们可能编写的其他脚本。就像一个普通的 NodeJS 项目一样。
我选择 Express 作为我的 Web 服务器。如果你使用 Python,你可能会使用Flask;Ruby 则会使用Sinatra。然而,对于 Java,我建议你研究一下com.sun.net.httpserver.HttpServer
它的启动速度。
c) 接下来我们需要实例化我们的机器人。
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
// ================= START BOT CODE ===================
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
if (msg.content === 'ping') {
msg.reply('pong!');
}
});
// You really don't want your token here since your repl's code
// is publically available. We'll take advantage of a Repl.it
// feature to hide the token we got earlier.
client.login(process.env.DISCORD_TOKEN);
ping pong
有点像机器人的 Hello World。启动后,你应该会在服务器上看到你的机器人在线。如果你在服务器上发送 ping 命令,机器人应该会回复 pong。
粘贴该代码片段后,请不要单击“重新启动”!
d)创建.env
文件
在左侧创建一个名为的文件.env
,文件内容应为:
DISCORD_TOKEN=your_token
这将帮助我们向外界隐藏您的令牌。更多信息,请参阅Repl.it 的文档。
现在,正确的凭据已输入,您可以点击“立即重启”。您的机器人应该已经上线了!

恭喜!您可以仔细阅读discord.js
文档,实现您梦想的所有酷炫机器人功能!
步骤 3:保持机器人正常运行

正如我之前提到的,Repl.it 会让 repls 进入睡眠状态。以下是他们文档中关于此操作的说明:
部署完成后,即使您关闭浏览器标签页,服务器仍会在后台持续运行。服务器将保持唤醒状态,直至最后一个请求发出后一小时,之后将进入休眠状态。休眠的 repl 会在收到另一个请求后立即被唤醒;无需重新运行 repl。但是,如果您对服务器进行了更改,则需要重新启动 repl 才能在正式版本中看到更改。
我们将使用Uptime Robot来保持我们的机器人在线。
b) 在 Uptime Robot 上创建一个帐户,并创建一个监视器,每 5 分钟 ping 一次您的服务器
就这样!我们完成了。尽情享受你的全天候托管机器人吧!有时机器人可能会离线。但得益于 Uptime Robot,它在一天中 99% 的时间里都会保持在线。
祝大家编码愉快!
文章来源:https://dev.to/fizal619/so-you-want-to-make-a-discord-bot-4f0n