Total Pageviews

Friday 1 November 2024

coolq-http-api

 

SDK/开发框架

对于下面这些语言的开发者,如果不想自己处理繁杂的请求和解析操作,可以尝试社区中开发者们已经封装好的的 SDK 或开发框架:

语言Web 框架通信方式地址核心作者
PythonQuartHTTP,
反向 WebSocket
nonebot/nonebotrichardchien
yanyongyu
PythonQuartHTTP,
反向 WebSocket
nonebot/aiocqhttprichardchien
Node.jsWebSocket-NodeWebSocketmomocow/node-cq-websocketmomocow
Node.jsExpressHTTP,
WebSocket
koishijs/koishiShigma
Node.jsWebSocket-NodeWebSocketCaoMeiYouRen/node-coolq-robotCaoMeiYouRen
Node.jsExpressHTTPXHMM/lemon-botXHMM
JavaScript-WebSocketpandolia/js-botpandolia
Deno标准库反向 WebSocketnenojs/deno-cqhttprikakomoe
PHPSwoole反向 WebSocketzhamao-robot/zhamao-frameworkcrazywhalecc
PHP-HTTPLovelyA72/YeziiBot-v2LovelyA72
Java标准库HTTPHyDevelop/PicqBotXHykilpikonna
Java
Kotlin
Groovy
Spring反向 WebSocketlz1998/Spring-CQ教程lz1998
Java标准库HTTPForteScarlet/simple-robot-coreForteScarlet
JavaJFinalHTTPthevsk/cqhttp-java-jfinal-sdkthevsk
Kotlin标准库HTTPJuerGenie/juerobotJuerGenie
Go标准库API:
HTTP,
WebSocket
Event:
HTTP,
长轮询,
WebSocket,
反向 WebSocket
catsworld/qq-bot-apicatsworld
rikakomoe
C#标准库HTTP,
WebSocket
int-and-his-friends/Sisters.WudiLibbleatingsheep
C#标准库HTTP,
WebSocket,
反向 WebSocket
frank-bots/cqhttp.Cyanfrankli0324
C#Fleck反向 WebSocketcqbef/cqhttp.WebSocketReverse.NETCorecqbef
PowerShell.NETHTTPcqmoe/cqhttp-powershell-sdkrichardchien
Lualua-httpHTTP,
WebSocket
cleoold/cqhttp-lua53-sdkcleoold

应用案例

QQ 机器人可以用来做很多有意思的事情,下面列出一些基于本插件的应用案例:

项目地址简介
milkice233/efb-qq-slave基于 ehForwarderBot 框架的 QQ 从端
projectriri/bot-gateway提供跨聊天平台的通用机器人 API 的机器人消息网关
jqqqqqqqqqq/UnifiedMessageRelayQQ <-> Telegram Bot Framework & Forwarder
Mother-Ship/cabbageWeb基于 Java Web 的 osu! 游戏数据查询机器人
bdbai/KobirtIngress 游戏辅助机器人
JRT-FOREVER/hub2coolqGitHub webhook 消息转发至 QQ 群
Kurarion/Bangumi-for-QQ用于在 QQ 平台便捷地使用 Bangumi 部分功能(查寻条目、更新条目进度等)
rikakomoe/cqhttp-twitter-bot自动订阅 Twitter 发送到 QQ
XiaoLin0815/QQ2TG帮助 QQ 与 Telegram 互联的小程序
spacemeowx2/splatoon2-qqbot宇宙第一的 Splatoon2 的地图机器人
OYMiss/forward-bot用 Telegram 和 QQ 好友聊天的转发机器人
mrthanlon/SICNUBOT专为四川师范大学设计用于审核发布消息用的 QQ 机器人
billjyc/pocket48监控成员口袋 48 聚聚房间、微博和摩点项目
chinshin/CQBot_hzx摩点 & 微博 & 口袋 48 机器人(BEJ48-黄子璇)
Ice-Hazymoon/grnd_bot订阅 RSSHub 更新并推送到 QQ 群
Ray-Eldath/Avalon多功能、可扩展的群机器人,支持 QQ 和 Discord
Bluefissure/FFXIVBOT基于 Django Channels 的最终幻想 14 游戏数据查询机器人
Milkitic/Daylily基于 ASP.NET Core 的跨平台机器人(含快速开发插件框架)
cczu-osa/aki基于 NoneBot 的多功能 QQ 机器人
cleoold/sendo-erika基于 cqhttp 和 NoneBot 的,主要通过私聊摇控的 QQ 机器人
duan602728596/qqtools基于 Nwjs 的 QQ 群工具(摩点、口袋 48、微博提醒、入群欢迎、定时喊话、自定义命令和回复信息等)
Tsuk1ko/CQ-picfinder-robot基于 Saucenao 的搜图机器人
kasora/diceCOC7 骰子 QQ 机器人
shidenggui/tuishujun-for-qq基于推书君的小说查询推荐 QQ 机器人
JuerGenie/cn.juerwhang.jgbot基于 JuerGenie/juerobot 的娱乐用 QQ 机器人
drsanwujiang/DiceRobot一个基于 coolq-http-api 插件的 TRPG 骰子机器人
UltraSoundX/SDFMU-Library山东第一医科大图书馆预约机器人
Quan666/ELF_RSS基于 NoneBot 的,交互式 RSS 订阅、转发机器人
lz1998/Spring-CQ-web基于 SpringCQ 的机器人 web 控制台
suisei-cn/stargazer-qq一个灵活的 vtuber 发推/直播动态监控机器人
Ninzore/Wecab网络内容聚合机器人,支持微博、B站、Twitter 等

以上列出的只是实际应用中的一小部分,如果你使用本插件编写了任何好的应用案例或开发框架,也可以通过 issue 或 pull request 添加到这里的列表,共同充实社区。

修改、编译

本项目基于 CoolQ C++ SDK,构建方式和它一致,但由于一些历史原因,需要先手动下载预编译的依赖库,并且使用 Visual Studio 2019 和 MSVC v141 构建(可以只安装 Build Tools,不必安装完整的 IDE)。

首先,克隆或下载本仓库代码:

git clone https://github.com/richardchien/coolq-http-api.git
cd coolq-http-api
git submodule init
git submodule update

然后,从 这里 下载 vcpkg-export-20191012.zip(也就是预编译的依赖),并解压到当前工程目录,确保工程目录结构如下:

coolq-http-api
├── ...
├── src
├── vcpkg-export-20191012
|   ├── installed
|   ├── scripts
│   └── .vcpkg-root
├── CMakeLists.txt
└── ...

最后生成并构建 CMake 项目:

powershell .\scripts\generate.ps1 Debug
powershell .\scripts\build.ps1 Debug











除了 CQHTTP,还有一些其它相似功能的插件:

除了上述基于 酷Q 平台的插件,还有一些基于其它机器人平台、旨在兼容 CQHTTP 接口的项目,为 QQ 机器人开发社区注入了新的活力:

from https://github.com/kyubotics/coolq-http-api
(https://github.com/kyubotics/coolq-cpp-sdk)
----------------------------------------------------------

对开源的一些感悟

通过 CQHTTP(最初的全称叫 CoolQ HTTP API),我经历的不只是一个项目的开发、迭代和流行,而是一整个以 CQHTTP 为核心的开源社区的形成,这里面包括各语言 SDK、开发框架、具体的机器人应用、web 控制面板、API 兼容的替代实现、CoolQ 关闭服务之后的替代 runtime、各类教程和文档等。

有时候我觉得这个过程和 Linus Torvalds 上传 Linux 初版代码之后逐渐形成 Linux 社区没什么本质的不同,只是规模小了几个数量级、场景更加小众。

在这个社区的形成过程中,很重要的一点是,CQHTTP 和大部分周边项目都是开源的,开源的关键在于“开放源代码”(open source),而不只是“公开源代码”(public source)。“开放”的意思是说,首先,社区是开放的,任何人都可以参与到社区里来,开发各式各样的周边项目,其次,这些项目本身也是开放的,从项目的一开始就以开源的方式进行,作者在 GitHub 上公开 push 代码,同时也随时可接受别人的 pull request。与之相对的,是另一种我想称之为“假开源”的形式,在项目封闭开发完成后,去掉所有 Git 历史,创建新的第一个 commit,内容写做“release 1.0.0”,然后发布到代码托管网站,接着可能在 issue 里面回答一些问题,代码仍然封闭开发,到下一版完成后,再去掉 Git 历史,覆盖到上一版代码中,提交第二个 commit,写做“release 1.1.0”。这后一种“开源”,只是把源代码公开了,而不是真正的开放。

另一个很重要的点,是所有项目的开发者,都是自发地来参与开发,而不是为了钱或是被迫的。每个人都是出于自身的兴趣,选择从头开发或者参与社区中的已有项目,没有人需要被安排“你这周做什么,下个月做什么”,也没有人期待从项目中获得金钱收益。大家主动从社区中发现需要修复的 bug、需要补充的功能,而不是被动地做自己不愿意做的事。如果你要问这些开发者为什么作业那么多、上课那么忙,还要熬夜写这些代码,大部分会回答“因为好玩”。

从初中生、高中生到大学生,甚至是工作后半路转行做程序员的人们,有很多人在使用 CQHTTP 社区项目的过程中入门了编程,无论是 C++、Python 或是其它。也有很多人通过开发 CQHTTP 社区项目获得了自己的用户群体、GitHub 星星、更丰富的编程经验和更广的人脉,并以此找到了更好的学习和工作机会,包括我自己。这常常让我感慨万分,让我感到自己曾经做的事情并不是简单的玩具,虽然它的影响范围很小,但它是有意义的,它帮助到了许多人,也或许间接地微弱地帮助到了中国的软件行业。

我想我会一直坚持我所认同的开源理想主义,坚持我的初心。

当然了,开源的开发形式和理想主义并不是 CQHTTP 本身成功的根本原因,它成功的根本原因是解决了 CoolQ 难以用多种编程语言开发的痛点。如果当时我选择闭源,它可能仍然会成功。但如果真的闭源,可能就很难形成后来那么开放的社区了。所以,要想成功,解决痛点是必须的,而解决痛点之后以什么形式呈现,就是理想主义和现实主义的分野了。

from https://stdrc.cc/post/2021/12/19/about-open-source/

 

 

 

No comments:

Post a Comment