Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/DEPLOY.md

248 lines
9.3 KiB
Markdown
Raw Normal View History

2022-06-15 00:29:20 +00:00
# 简介
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
本文将会教你如何搭建自己的小可机器人。
# 准备
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
1. 一台可运行 Python 的服务器或主机(电脑、树莓派、安装了 Termux 的手机、etc...)。
2. 主机已安装并可运行 [Python 3 环境](https://www.python.org/) ,版本大于 3.8 皆可部署。
3. 对应你需要运行的平台所需要的必要内容环境、token等
# 基础部分部署
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
## 安装基础依赖
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
1. 从 [Release 页面](https://github.com/Teahouse-Studios/bot/releases/latest) 的 Assets 部分中下载 Source code源代码
2. 解压源代码,然后打开终端,输入 `pip install -r requirements.txt` 来安装依赖。
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
## 配置
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
进入 `config` 文件夹,将 `config.cfg.example` 重命名为 `config.cfg`,然后开始配置你所需要的内容。
对于第一次的简单部署,我们只需要关注数据库字段即可,其余字段可留空:
`db_path = mysql+pymysql://`
机器人需要一个数据库以用于存储用户数据。
此字段需要填写一个可被 `sqlalchemy` 支持的数据库链接,以下为推荐方案,请任选一个:
### MySQL
若使用 `MySQL` 作为主要使用数据库:
**格式**
`mysql+pymysql://<数据库用户名>:<数据库用户密码>@<数据库地址>`
**实际示例**
`mysql+pymysql://bot:123456@example.com/bot_prod`
### SQLite
2022-06-15 04:53:44 +00:00
如果你不希望为了部署一个机器人而去研究如何安装数据库(或购买某服务商的数据库服务)的话
2022-06-15 00:29:20 +00:00
,使用 SQLite 就是最佳选择。缺点是可能会遇到锁表问题(极小概率发生),以及将来运维失误(误删除 db 且没有备份)导致原先用户数据损毁的情况。
2022-06-15 04:53:44 +00:00
如果你选择 SQLite只需要将字段内容填写为以下格式即可。无需再关注数据库搭建等问题
2022-06-15 00:29:20 +00:00
**格式**
`db_path = sqlite:///<相对路径>/<数据库文件名>.db`
**实际示例**
`db_path = sqlite:///database/save.db`
此示例将会在 `database` 文件夹内创建 `save.db` 来存储用户数据。
2022-06-15 04:53:44 +00:00
## 运行测试控制台
2022-06-15 00:29:20 +00:00
2022-06-15 04:53:44 +00:00
一旦你配置好了数据库后,你就可以直接去启动测试控制台(`console.py`)了。
2022-06-15 00:29:20 +00:00
2022-06-15 04:53:44 +00:00
测试控制台包括一个基础的运行环境,你可以在测试控制台内使用命令进行基础的机器人交互。
2022-06-15 00:29:20 +00:00
2022-06-15 04:53:44 +00:00
测试控制台仅支持回复文本消息和图片,其它消息元素将被忽略或转换为文本或图片来显示。
1.`console.py` 所在目录,按下 `Shift` + `右键` 来打开右键菜单。
2. 选择 `在此处打开 Powershell 窗口``在此处打开命令窗口`
3. 于终端内输入 `python console.py` 来启动测试控制台。
2022-06-15 00:29:20 +00:00
## 配置平台机器人
接下来,我们需要开始配置你想让机器人运行的平台。
你只需要填写你需要的平台的字段,其余的留空即可。留空后对应平台的机器人将不会运行。
### QQ
我们在这里使用了 [aiocqhttp](https://github.com/nonebot/aiocqhttp) 来对接 [go-cqhttp](https://github.com/Mrs4s/go-cqhttp) 客户端。
`qq_host = 127.0.0.1:11451` - 将会在填写的 IP 地址和端口中开启一个 websocket 服务器,用于 go-cqhttp 反向连接。
`qq_account = 2052142661` - 填写机器人的 QQ 号。
填写好后,请配置 `go-cqhttp``config.yml` 文件中的对应的连接方式。
```
...
# 连接服务列表
servers:
# 添加方式,同一连接方式可添加多个,具体配置说明请查看文档
#- http: # http 通信
#- ws: # 正向 Websocket
#- ws-reverse: # 反向 Websocket
#- pprof: #性能分析服务器
- ws-reverse:
2022-06-27 14:47:06 +00:00
universal: ws://127.0.0.1:11451/ws/ # 此处填写先前的 IP 地址和端口,注意不要删去后面的 /ws/
2022-06-15 00:29:20 +00:00
reconnect-interval: 3000
middlewares:
<<: *default # 引用默认中间件
...
```
### Discord
我们在这里使用了 [Pycord](https://github.com/Pycord-Development/pycord) 来调用 Discord API。
2022-06-15 04:53:44 +00:00
为了达到目的,你需要于 [Discord 开发者平台](https://discord.com/developers) 创建一个机器人并获取 Token。
2022-06-15 00:29:20 +00:00
2022-06-15 04:53:44 +00:00
`dc_token =` - 填写你获取到的机器人 Token。
2022-06-15 00:29:20 +00:00
### Telegram
我们在这里使用了 [AIOGram](https://github.com/aiogram/aiogram) 来异步调用 Telegram API。
2022-06-15 04:53:44 +00:00
为了达到目的,你需要在 Telegram 搜索 `@BotFather` 来创建机器人。
2022-06-15 00:29:20 +00:00
2022-06-15 04:53:44 +00:00
`tg_token =` - 填写你获取到的机器人 Token。
2022-06-15 00:29:20 +00:00
## 运行平台机器人
### Windows
我们不推荐双击运行 `start.bat` 来启动程序。
2022-06-15 04:53:44 +00:00
建议在启动机器人之前先打开终端cmd 或 Powershell再运行 `start.bat`
2022-06-15 00:29:20 +00:00
1.`start.bat` 所在目录,按下 `Shift` + `右键` 来打开右键菜单。
2. 选择 `在此处打开 Powershell 窗口``在此处打开命令窗口`
2022-06-15 04:53:44 +00:00
3. 于终端内输入 `.\start.bat` Powershell`start.bat` cmd来启动机器人。
2022-06-15 00:29:20 +00:00
### Linux
1. 于终端内,设置 `start` 脚本的执行权限:`chmod +x start`
2. 启动脚本:`./start`
## 配置其他功能
由于小可有着许多的功能,部分功能需要进一步的配置才能使用。
部分字段可能并未预设于 `config.yml.example` 中,手动添加即可。
### 屏蔽词
小可内置了 [阿里云内容安全服务](https://www.aliyun.com/product/lvwang) 对接,可用于 QQ 平台下部分模块检查发送文本是否安全,以达到机器人账户安全的目的。
如有需求,请前往阿里云进行开通并获取 accessKeyId 及 accessKeySecret。未填写字段将不会使用屏蔽词服务。
`Check_accessKeyId =` - 填写获取的 `accessKeyId`
`Check_accessKeySecret =` - 填写获取的 `accessKeySecret`
### Webrender
此为小可的外置服务。主要用于处理 html 渲染图片及部分功能的访问代理。
#### 部署
2022-07-31 08:33:20 +00:00
1. 此服务使用 JavaScript 编写,由 `Puppeteer` 驱动,为此,你需要安装好 [Node.js](https://nodejs.org/)
环境,以及安装好 [Chrome](https://www.google.cn/intl/zh-CN/chrome/) 。
2022-06-15 00:29:20 +00:00
2. 下载 [源代码文件](https://github.com/Teahouse-Studios/oa-web-render) ,并在终端内使用 `npm install` 安装依赖。
3.`package.json` 同级目录中,创建 `.env` 文件,并于内填写以下字段:
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
```
CHROMIUM_PATH="C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 填写 chrome.exe 的绝对路径
FC_SERVER_PORT=15551 # 填写服务运行的端口
```
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
4. 于终端内,使用 `node ./src/index.js` 来开启服务。服务无任何内容输出。
你亦可使用云服务产商的 Serverless 服务来部署本服务。
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
#### 字段填写
`web_render =` - Webrender 的地址IP 或域名)及端口
2022-08-21 03:22:45 +00:00
`web_render_local =` - 本地 Webrender 的地址(可与上一字段同一参数)
2022-06-15 00:29:20 +00:00
**示例**
`web_render = 127.0.0.1:15551`
### 模块
#### Arcaea
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
Arcaea 模块使用了 Lowiro 官方的 ArcaeaLimitedAPI 和 BotArcAPI 进行开发。
ArcaeaLimitedAPI 需要向 Lowiro 官方发送邮件申请以获得 Token。
在没有 ArcaeaLimitedAPI Token 的情况下,也亦可仅使用 BotArcAPI 来支持模块部分功能运作。
`arcapi_official_url =` - 填写你于邮件中获得的 ArcaeaLimitedAPI 地址
`arcapi_official_token =` - 填写你于邮件中获得的 ArcaeaLimitedAPI Token
`botarcapi_url =` - 填写 BotArcAPI 公用实例地址
`botarcapi_agent =` - 填写 BotArcAPI 公用实例申请到的 UA 名
2022-07-31 08:33:20 +00:00
填写完后,你还需要从下载 [Arcaea](https://arcaea.lowiro.com/) 的 Apk 文件,将其放置于 `assets` 文件夹并重命名为 `arc.apk`,并在 Bot
启动后使用 `~arcaea initialize` 来初始化资源文件。
2022-06-15 00:29:20 +00:00
#### maimai
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
maimai 模块基于 [mai-bot](https://github.com/Diving-Fish/mai-bot) 修改而来。此模块需要额外的资源文件才可正常工作。
1. 下载 [资源文件](https://www.diving-fish.com/maibot/static.zip) ,并于 `assets` 目录下创建一个 `maimai` 文件夹。
2. 解压资源文件,形成以下目录结构:
2022-07-31 08:33:20 +00:00
2022-06-15 00:29:20 +00:00
```angular2html
assets
└─maimai
└─static
│ adobe_simhei.otf
│ aliases.csv
│ msyh.ttc
└─mai
│...
```
2022-06-28 05:37:19 +00:00
#### secret
2022-07-31 08:33:20 +00:00
2022-06-28 05:37:19 +00:00
此模块下的内容主要用于监测 Minecraft Wiki 注册日志和滥用日志,如无需要可直接删除此模块的文件夹。
2022-06-15 04:53:44 +00:00
### 其他功能
2022-06-15 00:29:20 +00:00
`qq_msg_logging_to_db = True` - 将 QQ 平台内的命令触发消息记录至 `database/msg.db` 中,有助于判断是否存在违规使用机器人的情况。
2022-07-31 08:33:20 +00:00
`base_superuser =` - 设置机器人主超级用户。可用格式为 `QQ|<QQ号>`、`Discord|<ClientID>`、`Telegram|<ClientID>`,可在机器人开启后使用 `~whoami`
命令来查看自身的 ID机器人启动后将自动标记对象为超级用户。
2022-06-15 00:29:20 +00:00
`slower_schedule = False` - 部分计划任务模块使用更长的时间间隔执行,可能有助于网络较差环境的优化。
2022-06-16 11:51:03 +00:00
`enable_tos = False` - 是否启用内置的违反服务条款的检查。
2022-06-28 10:14:44 +00:00
`qq_enable_dirty_check = True` - 是否启用 QQ 平台的屏蔽词检查。
`qq_enable_urlmanager = True` - 是否启用 QQ 平台的 URL 管理(替换外部链接,提示非官方页面)。
2022-06-15 04:53:44 +00:00
#### 自定义确认词及命令前缀
2022-07-31 08:33:20 +00:00
你可以通过编辑 `core/elements/others/__init__.py` 里面的 `confirm_command` 变量来添加(或删除)机器人在部分场景下询问用户是否继续的词语,通过编辑 `command_prefix`
变量来增加(或删除)可使用的命令前缀。
2022-06-15 04:53:44 +00:00
`command_prefix` 首位将被用作帮助文档中默认展示的前缀。