Discord Bot JavaScript

用JavaScript实现一个Discord Bot,实现生成艺术二维码的功能。

参考文档:Discord的JavaScript开发文档

代码仓库:https://github.com/Mitsui921/DiscordBot

准备工作

  • 开启Discord群组的开发者模式

  • 前往Discord开发者网站新建一个应用

  • 配置好Bot的权限列表,留存Bot的token-key,注意打开这些权限

    Bot权限
  • 生成OAuth2的URL,选中相应的URL生成域,生成URL并打开即可将Bot加入到群组中

    URL生成域

项目开发

通过JS对Bot的功能进行开发,可采用在线开发和本地开发两种模式。为了图方便,就用了在线IDE:Replit开发的方式。

代码结构

BotCommand
├── commands
│ └── generate.js
├── index.js
├── deploy-commands.js
├── config.json
├── package.json
└── package-lock.json

index.js为入口,终端运行node index.js启动项目

config配置

在根目录下新建一个config.json文件,分别填入对应的三个字符串,完成与机器人端的连接

1
2
3
4
5
{
"token": "YOUR_BOT_TOKEN",
"clientId": "YOUR_APPLICATION_ID",
"guildId": "YOUR_SERVER_ID"
}

SlashCommands部署

为了实现在聊天框打出/即可唤醒命令的功能,需要先定义这些命令。

在根目录下新建一个commands文件夹,保存所有的命令(后期随着命令的增加,也可以再增设分类的子文件夹);

commands文件夹下,新建一个generate.js,在里面实现“generate”斜杠命令的逻辑。

从官方开发文档获取deploy-commands.js,执行node deploy-commands.js即可将定义的命令部署到机器人端。

命令逻辑实现

命令的逻辑实现主要是在index.js以及generate.js两个文件中编写。

需求分析

  • Step 1: 群组用户能够发起generate命令,该命令需包含三个参数:prompturlweight,分别表示Stable Diffusion算法模型的关键字、原始的二维码链接、权重
  • Step 2: Bot接收该命令后,在执行过程中显示“响应中”状态
  • Step 3: SD算法生成图片完成后,Bot需在群组中回复以下内容:
    • @发起该命令的用户
    • 生成的艺术二维码图片
    • 产品文本信息与提示
    • “重新生成”按钮
  • Step 4: “重新生成”按钮需完成如下功能:
    • 群组内任意用户均可点击
    • 点击按钮后弹出一个窗口,该窗口有三个填写栏,分别对应上述的三个参数,初始显示为上一次生成图像的三个参数值
    • 用户可更改这些参数,并提交给Bot
    • Bot接收后重复Step3的功能