地河君_official 的 blog

当她笑的时候, 我就知道她是我的新老婆了。

0%

写在前面

摘要

近日, 毕方推出有自动报刀功能的公会战工具 ( bilibili only ), 鉴于游戏内的排行都不是实时刷新, 暂且认为毕方公会战工具数据延迟不可避免, 如果您是 bilibili 服休闲玩家的话, 建议您使用毕方查询会战记录, 若您是对公会站有追求的 b 服公会, so-net 服公会, 日服公会的话, 我会建议您使用为公主连结玩家在q群中提供应答服务的 yobot 和 HoshinoBot 。

另, 2020 年 8 月起, 酷q框架停运, 现阶段若您想部署一个机器人的话需要使用其他框架,比如 mirai 。

搭建前,您需要具备以下能力:

  • 初中以上英语水平
  • 基本的 shell 交互能力
  • git 基础知识
  • 熟悉搜索引擎 ( 指谷歌 ) 的使用
  • 知道如何使用 vim 编辑器

您还需知道 screen 如何使用, 相信我, 这非常简单, 您可先花五分钟时间先看一下。

为什么建议自己部署 bot

首先, 部署 bot 的门槛算非常低, 尤其是使用 Windows Server 部署, 几乎没有任何坑, Ice-Cirnoyuudi 将安装文档写的十分详细, 甚至在某站有手把手教学的视频 ( 虽然现在过时了 ) 。

因此, 也出现了非常多靠卖 bot 发家致富的大佬, 其中, 使用成本低廉, 刚学会怎么搭, 号都没有养好 ( 风控都没有解 ), 任何安全性都没有优化过的 bot 也敢拿来出租, 虽然功能是 bot 可用性的一个重要考核标准, 但不是全部, 事实上, 一个 bot 的优劣会被稍微接触过 bot 的人轻易的看出来。

并非功能越多的 bot 其维护水平越高, 因为大量的 功能 在 github 上是开源的, 添加这些功能就跟把米饭添进碗里一样简单。

另, 某鱼出现过大量天价 bot , 各种宣称部署难度, 或者吹嘘其服务器有多么特殊, 此类行为, 实在居心叵测。
如果论部署难度的话, 正如我前文所提到的 – 非常低, 而服务器无特殊与不特殊, 既没有能免备案的境内服务器, 也不存在不备案就用不了 yobot 的 web 的情况, 更不会有因为你在服务器上的 9222 端口开 web 就把你抓起来的警察。决定服务器的好坏在于服务器的 cpu 主频 / 内存 / I/O 速度 / 接入网络的速度 等, 一台阿里云 ECS 4h8g 5mbps cpu 主频 3.37 ghz 的服务器 ( 境内 ) 约 1053 r /年 ( 有优惠券会更便宜 ), 一台 1h1g 1mbps cpu 主频为 2.59 ghz 的服务器价格为 10 r 左右且能流畅运行 bot 并给 230+ 群提供应答服务 ( 某靠卖 bot 发家致富的大户说的 ) 。

更何况, 很多靠 bot “发家致富” 的大佬的 bot 根本保证不了功能的可用性, 例如, 很多大佬会在公会站期间关掉一些功能, 再比如, pcrdfans 加入 api 调用限制 ( 50次 / 小时 ) 后, bot 的竞技场解法查询几乎不可用等。

有些人急急忙忙想靠 bot 赚钱的样子真的有点可笑, 既没有为社区贡献任何代码, 也不顾及用户体验, 明知 pcrdfans 的调用次数有小时限制, 还一个劲的想给自己增加客户, 别人的 bot 一出问题就喊 “来租我的” , 此举未违背 bot 的开源协议, ( GPL 3.0 允许商用 ) , 但 bot 的作者会这么想, 可想而知, 算来, HoshinoBot 的代码未出现提交记录已一月有余。

若您自建了 bot 且需要有人分担服务器费用的话, 请记住 君子爱财取之有道。

( 注 : 以上只是指出了存在这种现象, 请勿对号入座, 如有雷同, 不甚荣幸 )
( 注 : pcrdfans 虽然限制了 api 调用, 但次数对于自用 bot 和业务量不是很大的 bot 来说是绰绰有余的 )
( 注 : 由于服务器压力, pcrdfans 现已关闭 api 申请, 若您现在自建, 您可能无法使用 pcrdfans 的竞技场解法查询功能 )

我不建议不具备任何基础的人尝试部署, 若您确实需要, 您可让您公会里学计算机的进行尝试。

若你不想自己动手, 你也可以直接找出租的大佬们 , 我个人认为, 除了 Hoshino ( prototype ) 和 右右 ( yobot prototype ) 较特殊, 其余的 bot 原创程度越高 ( 或者说自定义程度高 ) , 能提供优质稳定的应答 , 做好了安全措施 ( 呃, 这里指对 bot 进行安全加固等 ) , 另, 我不建议您租用大户的 bot , 此举可能会使您无法使用 bot 本应有的功能。

当然, 也有很多公用 bot 可以为你的群免费提供应答, 请自行判断其安全性。

注意! 本教程只能是介绍了一下部署流程, 后续的维护需要您自己完成。
大部分维护的操作可以通过 报错 和 阅读源码 解决。

准备工作

除此之外您还需一台服务器, 服务器价格昂贵, 但您只是想用来部署机器人的话,您可以租用服务器厂商的 虚拟服务器 ( vps ) 。当前, 境内的服务器大厂多数有学生优惠, 您可以在完成学生验证之后以超实惠的价格买到一台虚拟服务器。如果您不是学生, 您可尝试去某宝当假学生。

目前最划算的境内服务器是:阿里云轻量应用服务器, 配置为1h2g5m
价格为 9.5 r / 月 其他性价比较高的服务器有:阿里云ECS(学生优惠), 腾讯云学生优惠, 配置为1h2g1m 。

我的个人感受是腾讯云的配置高过阿里云。

截止到8月20日, 性价比最高的境外服务器是腾讯云香港轻量。腾讯云似乎在8月20日这天换了线路 , 没有换, 但是用的人太多了, 虚拟服务器的性能是会被邻居拉胯的 ( 毕竟共享 ), 目前腾讯云香港轻量已不值得推荐。 若您想使用境外服务器,您可以选 谷歌云 ,甲骨文云 ( 完成信用卡认证后免费 ), vultr ( 非常便宜, cpu有点拉跨, 总体而言性价比算高 ), 搬瓦工 (涨价后不香了, 但是支付方便, 另外坑多) , oneprivide ( 便宜, 支付方便, 总体较划算, 客服有点糟糕 )。linode (便宜, 挺好, 不支持极为先进的支付宝, 必须信用卡)。

若您只想用于部署 bot , 当前各大服务器厂商给的最低配服务器配置都绰绰有余。您可尝试更大程度利用您的服务器, 例如建网站或者云盘, 之类的, 今后我可能会写这样的 教程。

因此我建议您用 Linux 部署 bot , 理由有三 :

  • mirai 是全平台的, 对 Linux 非常兼容。
  • 命令行执行速度通常非常快, 对于服务器来说, 图形界面和 3d 菜单是累赘。
  • Linux 对硬件的要求比 Windows Server 低得多, 若您的服务器不是特别高的配置, 建议您选择 Linux 。

开始部署

本教程测试环境 : CentOS 7.6 , Ubuntu 18.04 , Debian ( 没测试, 不过应该和 Ubuntu 差不多 ) 。

若您希望在服务器上部署 bot , 首先您需要连上您服务器的终端。

相信您一定能独立完成这一步。

如果您使用的是 Ubuntu , 建议您切换到 root 账户再执行指令

安装环境

tips : 建议您一条一条复制, 一段一段复制容易出现错误。

1
2
3
4
5
6
7
8
9
10
#CentOS 用户
yum -y update
yum -y groupinstall "Development tools"
yum -y install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* libffi-devel make git java vim screen

#Ubuntu, Debian 用户
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y gcc* make libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev screen default-jre git vim

安装 Python 3.8

1
2
3
4
5
6
7
8
9
wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz
# 境内服务器请将链接替换成 http://repo.huaweicloud.com/python/3.8.5/Python-3.8.5.tgz

tar -zxvf Python-3.8.5.tgz&&cd Python-3.8.5
./configure
make&&make install
pip3 install --upgrade pip
#境内服务器请加上参数 -i https://pypi.tuna.tsinghua.edu.cn/simple/

注意, 此方法仅是使您可以配置好 bot 运行所需要的环境, 若您的服务器需要用于其他用途, 可能需要 Python 优化以及用到 ssl 模块, 如果你需要用到, 本方法将不适合您, 安装请参考 这里

下载 go-cqhttp

go-cqhttp 是使用 go 语言对 cqhttp 协议重新实现, 并增加了很多拓展。

go-cqhttp 目前正在快速更新迭代, 本教程给出的链接可能不是最新版。
您可以在 这里 获取到最新版的下载地址。

1
2
3
4
5
6
7
8
9
10
mkdir mirai
cd mirai
wget https://github.com/Mrs4s/go-cqhttp/releases/download/v0.9.27/go-cqhttp-v0.9.27-linux-amd64.tar.gz
#若这里的 go-cqhttp 不是最新版, 此处的链接替换成最新版 go-cqhttp-linux-amd64 的下载地址
tar -zxvf go-cqhttp-v0.9.27-linux-amd64.tar.gz
#若你替换掉了上面的链接, 请同时修改这里要解压的文件的名字
chmod +x go-cqhttp
#此命令是为了防止权限不够
./go-cqhttp
#首次允许, 生成配置文件

go-cqhttp 配置

json 是不允许注释的, 所以请不要直接复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"uin": 0, // 此处填入你用来做 bot 的账号
"password": "", // 此处填入你 bot 账号的密码
"encrypt_password": false, // 是否对密码进行加密, 默认为否
"password_encrypted": "", // 加密后的密码, 请勿修改此项
"enable_db": true, // 是否开启内置数据库, 关闭后将无法使用 回复/撤回 等上下文相关接口
"access_token": "", // 和 cqhttp 原版一样, 用于身份验证
"relogin": { // 自动重新登陆配置
"enabled": true, // 是否自动重新登陆, 默认为是
"relogin_delay": 3, //重新登陆时间间隔, 单位是 秒
"max_relogin_times": 0 // 尝试重新登陆的次数限制, 0 为无限重试
},
"_rate_limit": { // api 调用限制
"enabled": false, // 是否限制 api 调用
"frequency": 1, // 1s内能调用API的次数
"bucket_size": 1 // 令牌桶的大小, 默认为1, 修改此值可允许一定程度内连续调用 api
},
"ignore_invalid_cqcode": false, // 是否忽略错误的CQ码, 当此处的值为 false 时, bot 会直接发送错误的 cq 码
"force_fragmented": true, // 是否强制分片发送群长消息, 此项为 true 时, bot 不容易被腾讯封号 ( 有内鬼的情况则另说 )
"heartbeat_interval": 0, // 心跳间隔时间,单位秒。小于 0 则关闭心跳,等于 0 使用默认值 ( 5秒 ), 此项用于检测机器人存活, 关闭此项容易使机器人断线
"http_config": { // http 配置, 您部署 koishi 框架的机器人会用到
"enabled": true,
"host": "0.0.0.0",
"port": 5700,
"timeout": 0,
"post_urls": {}
},
"ws_config": { // 正向 ws 配置, 您部署 cq-picsearcher-bot 时会用到
"enabled": true,
"host": "0.0.0.0",
"port": 6700
},
"ws_reverse_servers": [ // 反向 ws 配置, 此连接方式的机器人通常能获得极高的性能
{ // 著名的 nonebot, 本教程要介绍的 HoshinoBot , yobot 均使用这种连接方式
"enabled": false, //是否开启, 此处的值, 默认为false, 当此处的值为 true 时为开启
"reverse_url": "ws://you_websocket_universal.server", // 反向 ws 上报地址, 填了此项, 就不会检查下面两项
"reverse_api_url": "ws://you_websocket_api.server", // 反向 ws_api 上报地址, 当 reverse_url 字段为空的时候使用此处配置
"reverse_event_url": "ws://you_websocket_event.server", // 反向 ws_event 上报地址, 当 reverse_url 字段为空的时候使用此处配置
"reverse_reconnect_interval": 3000 // 断线重连时间, 单位是毫秒
}
],
"post_message_format": "string", // 上传数组还是字符串, 默认是字符串
"debug": false, // 是否开启 debug , 此处指为 false 时 go-cqhttp 有较高性能
"log_level": "" // 指定日志收集级别,将收集的日志单独存放到固定文件中,便于查看日志线索 当前支持 warn,error
}

以下给出两种可供参考的配置 :

第一种

1
2
3
4
5
6
7
8
9
10
11
{
"ws_reverse_servers": [
{
"enabled": true,
"reverse_url": "ws://127.0.0.1:8080/ws/",
"reverse_api_url": "",
"reverse_event_url": "",
"reverse_reconnect_interval": 3000
}
]
}

第二种

1
2
3
4
5
6
7
8
9
10
11
{
"ws_reverse_servers": [
{
"enabled": true,
"reverse_url": "",
"reverse_api_url": "ws://127.0.0.1:8080/ws/api/",
"reverse_event_url": "ws://127.0.0.1:8080/ws/event/",
"reverse_reconnect_interval": 3000
}
]
}

此处默认您没有改过 Hoshino 的端口。如果您改过 Hoshino 的端口, 请同时修改 反向 ws 上报地址中端口的那部分。

两种配置都是正确的, 任选一种即可。

安装 HoshinoBot

克隆仓库, 安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14

cd
git clone https://github.com/Ice-Cirno/HoshinoBot.git
cd HoshinoBot
cp -r hoshino/config_example hoshino/config
pip3 install -r requirements.txt
#境内服务器请加上参数 -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip3 install msgpack ujson python-Levenshtein
#境内服务器请加上参数 -i https://pypi.tuna.tsinghua.edu.cn/simple/
#这一步是可选的, 但我推荐您完成它, 如果您希望您的机器人有更高的性能的话

vim hoshino/config/__bot__.py
#自定义你的机器人, 按照中文注释填好。

若您是在 vultr 或者其它境外厂商购买的服务器, 您的服务器可能会有中文乱码的现象, 您可以对照 这里 修改您的配置。

获取静态资源

使用以下命令获取静态资源 :

1
2
3
4
5
6
cd
wget -O res.tar.gz https://pan.yobot.win/downloads/res.tar.gz
#感谢 yuudi 分发静态资源
tar -zxvf res.tar.gz
rm -rf res.tar.gz
mv res HoshinoBot

测试 bot 是否搭建成功

启动 go-cqhttp

1
2
3
screen -S mirai
cd ~/mirai
./go-cqhttp

然后使用组合键, Ctrl + a,d 挂起这个窗口

启动 HoshinoBot

1
2
cd ~/HoshinoBot
python3 run.py

如果按照正确的步骤搭建, 控制台应该会输出这样一条日志

1
2

[2020-09-21 22:30:45,435] 127.0.0.1:56363 GET /ws/ 1.1 101 - 114514

然后使用组合键, Ctrl + a,d 挂起这个窗口, 成功搭建。

搭建 yobot

两种方法, 任意选择一种搭建

方法一, 使用 Python 运行 yobot 的源码 ( 推荐 )

修改 go-cqhttp 的配置文件, 使其能连上 yobot

此处给出一段示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"ws_reverse_servers": [
{
"enabled": true,
"reverse_url": "ws://127.0.0.1:8080/ws/",
"reverse_api_url": "",
"reverse_event_url": "",
"reverse_reconnect_interval": 3000
},
{
"enabled": true,
"reverse_url": "ws://127.0.0.1:9222/ws/",
"reverse_api_url": "",
"reverse_event_url": "",
"reverse_reconnect_interval": 3000
}
]
}

安装 yobot

1
2
3
4
5
6
7
8
9
cd
git clone https://github.com/pcrbot/yobot.git
cd yobot/src/client
pip3 install -r requirements.txt
#境内服务器请加上参数 -i https://pypi.tuna.tsinghua.edu.cn/simple/

screen -S yobot
python3 main.py
sh yobotg.sh

开启 web 模式

1
2
3
sudo firewall-cmd --zone=public --add-port=9222/tcp --permanent
sudo firewall-cmd --reload
#若服务器为 Ubuntu 或者 Debian , 无需执行此命令

tips:若您是在服务器大厂租用的, 您的服务器商很可能自带了防火墙, 您需要自行去后台放通 9222 端口。若您不知道怎么开启,您可以谷歌搜索 [你的服务器商的名字] + 放通端口。

作为 Hoshino 插件运行 ( 可选 )

1
2
3
4
5
6
7
8
9
10
11
12
13
cd ~/HoshinoBot/hoshino/modules
mkdir yobot
cd yobot
git init
git submodule add https://github.com/pcrbot/yobot.git

vim ~/HoshinoBot/hoshino/config/__bot__.py
#MODULE_ON 添加 'yobot'
#HOST修改为 0.0.0.0 ( 默认值为 127.0.0.1 )

sudo firewall-cmd --zone=public --add-port=9222/tcp --permanent
sudo firewall-cmd --reload
#若服务器为 Ubuntu 或者 Debian , 无需执行此命令

使用 python3 ~/HoshinoBot/run.py 运行一次 Hoshino , 此时启动日志应有

1
[2020-09-22 18:36:31,967 nonebot] INFO: Succeeded to import "hoshino.modules.yobot.yobot"

使用 Ctrl + C 关闭 Hoshino , 修改 yobot 的配置文件使机器人发送的链接能被访问

1
2
vim ~/HoshinoBot/hoshino/modules/yobot/yobot/src/client/yobot_data/yobot_config.json
# public_address 中的字段, 9222 修改为 8080

tips:若您是在服务器大厂租用的, 您的服务器商很可能自带了防火墙, 您需要自行去后台放通 9222 端口。若您不知道怎么开启,您可以谷歌搜索 [你的服务器商的名字] + 放通端口。

1
2
3
4
5
screen -r bot
#Ctrl + C 关闭
python3 ~/HoshinoBot/run.py
#重新启动

反向代理

本节将介绍使用 nginx 对 yobot 设置反向代理, 其原理是把 9222 ( 或 8080 ) 端口上的 yobot 转发到标准的 80 端口。

设置反向代理的其中一个好处是可以为你的 yobot web 引入 https 支持, https 协议可以通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护, 是一种安全的传输协议。

为此, 您需要一个域名, 阿里云, 腾讯云等众多域名商, 价格可能因域名商的不同而不同, 例如腾讯云的 .cn 域名便宜, 阿里云的 .top 域名便宜, 境外域名 .win 便宜。

注意, 若您只有境内服务器, 建议您购买域名时先了解清楚您要购买的域名是否能备案 ( 例如 .vip 域名是无法备案的 ) 。

注意, 强烈不推荐您买 .xyz 域名, .xyz首年便宜, 续费贵的一*。

若您只需要一个保证可用性的机器人, 那么您可以跳过本节。 若您只有境内服务器且您不想备案, 您也可以跳过本节。( 境内服务器+未备案域名会使得 80 和 443 端口被拦截。 )

注意, 本节仅使用 CentOS 7.6 作为测试, Ubuntu 和 Debian 可能略有区别。

在此之前, 您需要将您的域名解析到您的服务器, 相信您一定可以独立完成这一步。

下载 nginx

目前的 stable 版是 1.18.0, 本教程就以 1.18.0 为例, 可能以后的 stable 版会变, 无论何时我都建议您下载 stable 版, 您可以在 这里 查看 stable 版。

1
2
3
4
5
6
cd&&wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --with-http_ssl_module --with-http_v2_module
#如果没有加上这两个参数, 就无法引入 https 支持。
make&&make install

验证安装

1
2
3
/usr/local/nginx/sbin/nginx
curl 127.0.0.1
#此处应输出 nginx 欢迎界面

加入环境变量

加入环境变量以简化后续操作。

1
vim /etc/profile

在这个文件的结尾填入

1
2
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin

使用 source /etc/profile 使其生效

验证

1
2
3
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
#放通 80 端口

然后, 使用你的手机或者电脑的浏览器, 输入你的域名并回车, 能访问到 nginx 的欢迎页面。

申请 Let’s Encrypt 的 ssl 证书

1
2
3
4
5
6
7
8
9
cd&&git clone https://github.com/certbot/certbot
cd certbot

./certbot-auto certonly --manual \
-d *.example.com \
-d example.com --agree-tos \
--manual-public-ip-logging-ok --preferred-challenges \
dns-01 --server https://acme-v02.api.letsencrypt.org/directory
#将本条命令第二行和第三行中 example.com 替换成你自己的域名。

然后, 它会自动安装一些依赖, 安装完毕后它会要求您输入您的邮箱。

输入完邮箱, 它会询问您是否同意它往您的邮箱里发小广告, 建议您回答 no 。

随后, 它会要求您为您的域名添加一条 txt 记录 (这一步是为了验证域名的所有权) , 您需要在您的域名控制台添加, 您可能会看到以下内容 :

1
2
3
4
5
6
Please deploy a DNS TXT record under the name 
_acme-challenge.example.com with the following value:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Before continuing, verify the record is deployed.

注意此处的 example.com 应为您自己的域名

此处应该这样添加:
类型: txt , 主机记录: _acme-challenge , 记录值: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

添加完后回车, 有概率要求您再添加一条, 您可按照上述方法添加第二个

成功之后, 您服务器目录下的 /etc/letsencrypt/live/您的域名 下会生成一些文件, 其中 fullchain.pem 是您的证书, privkey.pem 是您的私钥。

配置 nginx

配置文件示例 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

server_name example.com;

location /
{
proxy_pass http://localhost:9222;
proxy_set_header X-Real-IP $remote_addr;
}

location /yobot/assets/ {
alias /home/yobot/src/client/public/static/;
expires 30d;
}

location /yobot/output/ {
alias /home/yobot/src/client/yobot_data/output/;
charset utf-8;
expires 30d;
}
}

修改 nginx 的配置文件

1
vim /usr/local/nginx/conf/nginx.conf

需将这个配置文件的内容复制粘贴到 nginx.conf 的第八十一行, 其中的 example.com修改为你自己的域名。
若您的 yobot 是作为 HoshinoBot 插件运行的, 您还需要修改示例配置中第一个 location 中 的 9222 变更为 8080

重启 nginx 使其生效

1
2
nginx -s reload
#没报错就是成功

修改 yobot 的配置文件

1
2
3
4
5
6
7
8
9
#源码版
vim ~/yobot/src/client/yobot_data/yobot_config.json
# public_adress 字段的值修改为 https://example.com/
#↑↑↑ example.com 替换成你自己的域名 ↑↑↑

#插件版
vim ~/HoshinoBot/hoshino/modules/yobot/yobot/src/client/yobot_data/yobot_config.json
# public_adress 字段的值修改为 https://example.com/
#↑↑↑ example.com 替换成你自己的域名 ↑↑↑

验证反向代理

浏览器访问 https://example.com/yobot/ , 能访问就算成功。

再次提高安全性

修改 yobot 的配置文件, 仅允许本机监听

1
2
3
4
5
6
7
#源码版
vim ~/yobot/src/client/yobot_data/yobot_config.json
# HOST 字段的值修改为 127.0.0.1

#插件版
vim ~/HoshinoBot/hoshino/config/__bot__.py
# HOST 字段的值修改为 127.0.0.1

安装 cq-picsearcher-bot

此项与公主连结并没有关系, 但其功能过于优秀, 搭建者可以根据需求要求安装。

安装 nodejs

1
2
3
4
5
6
7
8
9
#CentOS用户请执行:
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum -y install nodejs

#Ubuntu , Debian 用户请执行
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

# 请不要安装更高版本的 nodejs , 高版本的 nodejs 容易装不上依赖

安装 cq-picsearcher-bot

1
2
3
4
5
6
7
8
9
cd
git clone https://github.com/Tsuk1ko/cq-picsearcher-bot.git
cd cq-picsearcher-bot
npm install -g yarn
npm install -g pm2

#境内服务器请执行yarn config set registry https://registry.npm.taobao.org --global&&yarn config set disturl https://npm.taobao.org/dist --global

yarn install

修改配置文件

1
2
cp config.default.json config.json
vim config.json

需要将第十五行 admin 字段中的 -1 改为自己的 qq 账号 ( 作为主人 )

启动 cq-picsearcher-bot

1
yarn start

bot 会给你发送 已上线 的消息。

安装更多功能

访问 https://github.com/pcrbot/ 寻找您想要的插件, 并按照说明添加即可。

优化

有多种优化 bot 进程, 提高流畅度, 或者是节约服务器开支的方法。

使用 http 协议发送图片

两种方法, 任意选择一种即可。

使用 Python 建立 http server

1
2
3
4
5
6
7
8
9
10
11
#假如你的静态资源存放于 /root 目录
cd ~/res
chmod 666 .

#建立 http server
python3 -m http.server 12227

#修改发图协议
vim ~/HoshinoBot/hoshino/config/__bot__.py
#修改 RES_PROTOCOL 的值为 http ( 默认为 file )
# RES_URL 填入 http://127.0.0.7:12227/

使用 nginx 建立 http server

1
2
3
4
5
cd ~/res
touch index.html
chmod 666 .

vim /usr/local/nginx/conf/nginx.conf

配置文件示例 ( 只给出关键部分 ) :

1
2
3
4
5
6
7
8
server {
listen 12227;

location / {
root html;
index /root/res;
}
}

最后,

1
2
3
4
#修改发图协议
vim ~/HoshinoBot/hoshino/config/__bot__.py
#修改 RES_PROTOCOL 的值为 http ( 默认为 file )
# RES_URL 填入 http://127.0.0.7:12227/

编写功能

Hoshino 不仅提供了大量实用 / 有趣的功能, 其对于 nonebot 的良好封装也极大的降低了 bot 的开发难度。

若你希望能自己编写功能, 我推荐你在阅读完 廖雪峰的 Python 教程 之后, 阅读 onebot 文档HoshinoBot ( v2 ) 插件开发指南 ( 社区版 )

之后你就能自主开发一些功能了。

参与开发

若你希望分享你的项目, 您可以与 michikawachin@outlook.com 联系以加入 pcrbot github 组织

致谢

本项目需致谢 Adpex, Aspirin Lancercmd, Ice-Cirno, thgsohack, yoshino, yuudi 等人物。

扬了 WordPress , 选择了 hexo , 好耶 ! 是 markdown !

hexo 没有那么多花里胡哨的东西, 访问速度应该能变快一点点, 大概吧。

我就不备案, 我就不备案, 我就不备案。
觉得访问速度慢请使用科学手段。