go-cqhttp使用 mirai 以及 MiraiGo 开发的 cqhttp golang 原生实现。
很多机器人要自己编译安装……需要JDK环境、Gradle依赖、导入jar包等,看得头大。直到看到Github的go-cqhttp项目。配置超级简单,10分钟就可以配置好,下面开始介绍。
一、项目介绍
1、兼容性
接口
- HTTP API
- 反向HTTP POST
- 正向WebSocket
- 反向WebSocket
拓展支持
拓展API可前往 文档 查看
- HTTP POST多点上报
- 反向WS多点连接
- 修改群名
- 消息撤回事件
- 解析/发送 回复消息
- 解析/发送 合并转发
- 使用代理请求网络图片
2、性能
在关闭数据库的情况下, 加载 25 个好友 128 个群运行 24 小时后内存使用为 10MB 左右. 开启数据库后内存使用将根据消息量增加 10-20MB , 如果系统内存小于 128M 建议关闭数据库使用。
二、开始运行
在开始之前,至少要会一种脚本类语言,如php、python、shell。
1、下载
从 release (opens new window)界面下载最新版本的 go-cqhttp
- Windows下32位文件为
go-cqhttp-v*-windows-386.zip
- Windows下64位文件为
go-cqhttp-v*-windows-amd64.zip
- Windows下arm用(如使用高通CPU的笔记本)文件为
go-cqhttp-v*-windows-arm.zip
- Linux下32位文件为
go-cqhttp-v*-linux-386.tar.gz
- Linux下64位文件为
go-cqhttp-v*-linux-amd64.tar.gz
- Linux下arm用(如树莓派)文件为
go-cqhttp-v*-linux-arm.tar.gz
- MD5文件为
*.md5
, 用于校验文件完整性 - 如果没有你所使用的系统版本或者希望自己构建, 请移步 进阶指南-如何自己构建
2、解压
- Windows下请使用自己熟悉的解压软件自行解压
- Linux下在命令行中输入
tar -xzvf [文件名]
3、使用
这里介绍 CentOS 8.2.2004 下的配置
3.1 初始化
- 打开一个命令行/ssh
cd
到解压目录- 输入
./go-cqhttp
,Enter
运行 , 此时将提示
[WARNING]: 尝试加载配置文件 config.hjson 失败: 文件不存在
[INFO]: 默认配置文件已生成,请编辑 config.hjson 后重启程序.
3.2 修改参数
编辑 config.yml文件,参照 config,md 修改。
3.3 启动项目
再次输入 ./go-cqhttp
, Enter
运行 扫码登录
3.4 守护进程
建议使用PM2管理器守护进程,或 nohup ./go-cqhttp
命令。 PM2管理器守护进程:
pm2 start ./go-cqhttp --name="go-cqhttp"
pm2 save
pm2 startup
4、测试
验证http是否成功配置
此时, 如果在本地开启的服务器, 可以在浏览器输入http://127.0.0.1:5700/send_private_msg?user_id=[接收者qq号]&message=[发送的信息]
来发送一条测试信息 如果出现{"data":{"message_id":balabala},"retcode":0,"status":"ok"}
则证明已经成功配置HTTP 注:请 连 中括号 也替换掉, 就像这样:http://127.0.0.1:5700/send_private_msg?user_id=10001&message=ffeecoishp
5、优化
可以设置域名,然后反代。这个较简单,不赘述。
三、玩转项目
这里介绍几个QQ机器人应用
1、WordPress网站评论推送
function push_qq($comment_id)
{
// 通过 comment_id 获取 comment 全部信息
$comment = get_comment($comment_id);
$siteurl = get_bloginfo('url');
// 根据自己需求,产生相关描述,可以包括文章内容、评论人、IP、评论内容等
$text = '文章 《' . get_the_title($comment->comment_post_ID) . '》 有新评论啦!';
$desp = $text . "\n\n" . "作者: $comment->comment_author \n\n邮箱: $comment->comment_author_email \n\n 评论: $comment->comment_content \n\n 点击查看:$siteurl/?p=$comment->comment_post_ID#comments";
// 封装一个 Object 对象,其 msg 字段是我们需要推送到 QQ 的消息内容
$postdata = http_build_query(
array(
'message' => $desp
)
);
// 一个 POST 请求
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
// 将自己的接口地址填在这里
return $result = file_get_contents('http://ip地址:5700/send_private_msg?user_id=[接收者qq号]', false, $context);
}
// 挂载 WordPress 评论提交的接口
add_action('comment_post', 'push_qq', 19, 2);
2、定时发送每日一图
服务器新建 bing.php 文件并编辑保存
<?php
$api = 'https://api.szfx.top/bing/api/';
$oriapi ='https://api.szfx.top/longurl/?url='.$api; //获取重定向后的网址
$str = file_get_contents($oriapi);
$res = json_decode($str, true);
$pic = $res['orinalUrl'];
$request = 'http://ip地址:5700/send_group_msg?group_id=【QQ群号】&auto_escape=false&message=[CQ:image,file='.$pic.']';
file_get_contents($request); //发送Bing每日一图
$api2 = 'https://api.szfx.top/bing/api/?type=json';
$str = file_get_contents($api2);
$res = json_decode($str, true);
$title = $res['bing_title'];
$request2 = 'http://ip地址:5700/send_group_msg?group_id=【QQ群号】';
$postdata = http_build_query(
array(
'message' => $title
)
);
// 一个 POST 请求
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
file_get_contents($request2, false, $context);//发送图片版权信息文字
?>
宝塔面板定时程序 进阶玩法:NoneBot2给QQ机器人注入灵魂 – 技术松鼠
四、参考资料
Mmx的博客-https://mmxblog.com/p-6024/Mmx.html
go-cqhttp文档-https://docs.go-cqhttp.org/
文章有(1)条网友点评
显示IP属地
游客 就爱要
2022年6月14日
Chrome 102.0.0.0 Windows 8.1
Where there is a will, there is a way.