使用Node.JS搭建一个Discord机器人
最近都在用 Discord ,感觉 Discord 在各方面都要完爆国内的垃圾YY,说到 Discord,我就想到 Discord BOT,然后想到了跟他一样牛逼的孙悟空。说道孙悟空…开机…文体两开花…多多支持( ͡° ͜ʖ ͡°)
言归正传,Discord 的开放度确实很高,允许用户定制各种各样的BOT,Google 了一些教程,弄了个 Discord BOT,把一些步骤和踩到的坑记录一下。
注意:由于众所周知的原因,Discord 在国内是没法正常访问的,如果你的 BOT 打算在国内的服务器上跑的话,需要设置 Hosts,详情可 Google
前排提示:这篇文章使用discord.io
构建 BOT ,这个框架官方很久没更新了,我用的是民间的修改版本,我建议你去用另一个框架discord.js
,这个框架还在持续更新中,不过你得另外找教程了。
Discord BOT 可以用 Python 或者 Javascript 来写,我这里是用的 Javascript。这里假设你已经拥有 Discord 账号,没有的可以进入官网 https://discordapp.com/ 注册。
一、创建 Discord APP
首先第一步要创建一个 Discord APP ,点击https://discordapp.com/developers/applications/ , 然后点击 Create an application (创建应用)
ICON: 应用头像, 可上传可不上传, 别人邀请 BOT 进入频道时可以看见, 注意这个不是 BOT 的头像
NAME: 应用名称,也是 BOT 的默认名字,但是 BOT 名字后期可更改
CLIENT ID: BOT 的客户端 IP,后面邀请机器人进频道时会用得上
CLIENT SECRET: 应用秘钥,不可外泄。如果泄露,可以点Regenerate生成一个新的,旧的会作废。
DESCRIPTION: 应用介绍,随便写
二、创建一个 BOT
Discord APP信息填写完成后,我们回到主界面,在左手侧菜单转到 BOT
然后我们点击 Add BOT,创建一个BOT
ICON: BOT 的头像,可以与 Discord APP 头像不同
USERNAME: BOT 的名字,可以与 Discord APP 名字不同
TOKEN: BOT 的秘钥,后面编写程序需要用到,不要外泄,如果外泄,可以点 Regenerate 生成新的,旧的会作废。
PUBLIC BOT: 选中后所有人都能邀请该 BOT,否则只有你自己能邀请
REQUIRES OAUTH2 CODE GRANT: 进阶选项,这里一般不打开
填写完成后记得保存。
下拉表格还会看到 BOT PERMISSIONS 一项
这是一个生成 BOT 权限代码的工具,勾选你想让 BOT 在频道里拥有的权限,例如 Send Messages(发送信息),权限代码会显示在 PERMISSIONS INTEGER
中,记录下来,等下会用到。
三、将 BOT 邀请到服务器
现在一个 BOT 已经创建完成了,我们需要构建一个邀请链接,这样才能把 BOT 邀请到你的服务器。一个邀请链接的格式就像下面这样子:
把上面刚才申请 Discord APP 得到的CLIENT_ID
和 生成的权限代码PERMISSIONS INTEGER
替换之,最后的邀请链接应该是这样子的:
https://discordapp.com/oauth2/authorize?&client_id=527293830618415115&scope=bot&permissions=6
然后我们在浏览器打开这个链接,就能把你的 BOT 拉进服务器了。
那么 BOT 账号就创建完成了,但是现在还是个空壳,下面就开始编写他的灵魂—— (突然高大上
三、编写 BOT 程序
网上其实有很多现成的 BOT 框架,我们只要拿来改改就能用了。这里用的是discord.io
。
首先下载安装 Node.JS
、Git
和一个文本编辑器 (我用的是NotePad++
,其他也可以,总之不要用记事本)
Node.JS 官网: https://nodejs.org/
Git 官网: https://git-scm.com/
NotePad++ 官网: https://notepad-plus-plus.org/
安装教程可以通过Google找到,这里不细讲。
然后,在你的本地硬盘新建一个文件夹,作为BOT的程序目录,例如E:\DiscordBOT
,然后在里面新建3个文件:auth.json
、package.json
和 bot.js
,相关代码如下
1 | { |
1 | { |
1 | var Discord = require('discord.io'); |
代码准备完成,现在运行 NodeJS 命令行,安装依赖
1 | > e:\ #切换盘符 |
安装完毕后运行 node bot.js
, 出现如下图提示即代表登录成功。
然后试试在频道里发 !ping,看看BOT会不会做出回复
这样,一个BOT就搭建完成了~~可以根据自己的需要,进一步编写bot.js,实现更多的功能。
踩到的坑
弄这玩意当然也不是一帆风顺,虽然之前有了解JavaScript,但是 NodeJS 还算是第一次接触,不过上手还算是蛮快的,最重要的是勤于Google,学别人的写法。
这篇文章也可以算作网上 一些教程[1][2] 的汉化版,有些地方经过自己的整理和修改,比如,在 这篇教程[2] 中, bot.js
这个文件的代码其实是有问题的,第6-8行
1
2
3logger.add(logger.transports.Console, {
colorize: true
});
这句话会报错,加个new
问题就解决了:1
2
3logger.add(new logger.transports.Console, {
colorize: true
});
还是这篇文章,安装依赖这行代码
1 | npm install discord.io winston --save |
这行代码虽然没问题,但是安装完成后运行node bot.js
后不会有任何响应,直到我在 Github 上找到 解决方案[3] 才发现是 discord.io
这玩意太旧了,不支持 Discord API 的新规范,使用别人改好的 discord.io 就可以解决该问题。
1 | npm uninstall discord.io --save #卸载旧的discord.io |
然后又遇到了报错:1
Fatal error : git is not installed or not in the PATH
然后我就去安装 Git 了,安完回来再次运行还是报这个错误,检查了环境变量,发现 Git Windows Installer 已自动帮我设定好,搜索也没找到解决方案,头皮发麻了一阵时间,最后重启了一下命令行居然就好了,汗颜。。。
其实后来我发现了另一个 Discord BOT 框架,叫 discord.js
,不过我懒得重新折腾了。。
参考文章:
[1] https://www.digitaltrends.com/gaming/how-to-make-a-discord-bot/
[2] https://medium.com/davao-js/tutorial-creating-a-simple-discord-bot-9465a2764dc0
[3] https://github.com/renesansz/discord-greeter-bot/issues/48#issuecomment-354666726