最近都在用 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 的客户端 ID,后面邀请机器人进频道时会用得上 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/
然后,在本地硬盘新建一个文件夹作为 BOT 的程序目录,例如 E:\DiscordBOT,然后在里面新建 3 个文件:auth.json、package.json 和 bot.js,相关代码如下。
{
"token": "填入刚才创建BOT的时候获得的TOKEN"
}
{
"name": "CrazyKid-BOT",
"version": "1.0.0",
"description": "My own Discord bot",
"main": "bot.js",
"author": "CrazyKid",
"dependencies": {}
}
var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// 日志设定
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
colorize: true
});
logger.level = 'debug';
// 初始化 Discord Bot
var bot = new Discord.Client({
token: auth.token,
autorun: true
});
// 当 BOT 登录成功后运行的内容
bot.on('ready', function (evt) {
logger.info('Connected');
logger.info('Logged in as: ');
logger.info(bot.username + ' - (' + bot.id + ')');
});
// 当 BOT 接收到信息后的处理逻辑
bot.on('message', function (user, userID, channelID, message, evt) {
// BOT 将检测接收到的信息是否以 '!' 开头
if (message.substring(0, 1) == '!') {
var args = message.substring(1).split(' ');
var cmd = args[0];
args = args.splice(1);
switch(cmd) {
// !ping
case 'ping':
bot.sendMessage({
to: channelID,
message: 'Pong!'
});
break;
// 照葫芦画瓢,添加其他的 case..
}
}
});
代码准备完成,现在运行 Node.JS 命令行,安装依赖。


e: # 切换盘符
cd e:\DiscordBOT # 切换到 BOT 程序目录
npm install woor/discord.io#gateway_v6 --save # 安装 Discord 机器人框架
# 不要用 npm install discord.io,这里踩到了坑,后面会说
npm install winston --save # 安装 logger 框架
安装完毕后运行 node bot.js,出现如下图提示即代表登录成功。

然后试试在频道里发 !ping,看看 BOT 会不会做出回复。

这样,一个 BOT 就搭建完成了。可以根据自己的需要进一步编写 bot.js,实现更多的功能。
踩到的坑
弄这玩意当然也不是一帆风顺,虽然之前有了解 JavaScript,但是 Node.JS 还算是第一次接触,不过上手还算蛮快的,最重要的是勤于 Google,学别人的写法。
这篇文章也可以算作网上一些教程的汉化版,有些地方经过自己的整理和修改。比如,在这篇教程中,bot.js 文件的代码其实是有问题的,第 6-8 行:
logger.add(logger.transports.Console, {
colorize: true
});
这句话会报错,加个 new 问题就解决了:
logger.add(new logger.transports.Console, {
colorize: true
});
还是这篇文章,安装依赖这行代码:
npm install discord.io winston --save
这行代码虽然没问题,但是安装完成后运行 node bot.js 后不会有任何响应,直到我在 GitHub 上找到解决方案才发现是 discord.io 这玩意太旧了,不支持 Discord API 的新规范,使用别人改好的 discord.io 就可以解决该问题。
npm uninstall discord.io --save # 卸载旧的 discord.io
npm install woor/discord.io#gateway_v6 --save # 安装新的 discord.io
然后又遇到了报错:
Fatal error : git is not installed or not in the PATH
然后我就去安装 Git 了,安完回来再次运行还是报这个错误,检查了环境变量,发现 Git Windows Installer 已自动帮我设定好,搜索也没找到解决方案,头皮发麻了一阵时间,最后重启了一下命令行居然就好了,汗颜。
其实后来我发现了另一个 Discord BOT 框架,叫 discord.js,不过我懒得重新折腾了。
