chocolatl / qqlight-websocket Goto Github PK
View Code? Open in Web Editor NEWQQLight机器人WebSocket-RPC插件,让你能够使用任何语言编写QQ机器人程序
License: Other
QQLight机器人WebSocket-RPC插件,让你能够使用任何语言编写QQ机器人程序
License: Other
比如收到群文件,转发群文件
使用示例进行测试,发送了一个文件,收到一个语音。。。
另外,能否开发一个HTTP(S)协议的插件
缺少以下文档:
向机器人发起加好友请求后,QQlight 的日志里会有这个记录,说明QQlight 是成功接收到信息的,然而 插件这边,服务器并没有发送任何信息过来
接口.获取群名片 --> 返回 null
接口.设置群名片 --> 乱码
接口.设置个性签名 --> 乱码
接口.获取Bkn --> 异常调用
另外,可以加个设置昵称么
首先感谢作者提供了如此简单和优美的 websocket 接口。关于源码中有个问题想请教一下您,在 api.h 中定义的函数指针全局变量,比如下面这个:
const char* __stdcall (*QL_getPluginPath)(const char* authCode);
这里定义了一个指针类型的全局变量。但这个 api.h 又被好几个源文件 include ,按我的理解,似乎是应该只有一个源文件中是定义变量,其他源文件中都只是声明变量,需要加上 extern 关键字,比如:
extern const char* __stdcall (*QL_getPluginPath)(const char* authCode);
这里为什么可以不加修改的被多个源文件 include ,且可以正常链接而不报重复定义的错?
得到以下错误:
(插件日志)
09-24 16:07:44 WebSocket Protocol receiveComingData Bytes received: 179
09-24 16:07:44 WebSocket Protocol wsShakeHands Missing required fields
客户端日志:
ERROR:root:HTTP 400: Bad Request
Traceback (most recent call last):
File "C:/workspace/qqlight/client.py", line 26, in connect
self.ws = yield websocket_connect(self.url)
File "C:\Users\yangy\Miniconda3\envs\qqlight\lib\site-packages\tornado\gen.py", line 1133, in run
value = future.result()
tornado.httpclient.HTTPClientError: HTTP 400: Bad Request
客户端代码:
class Client(object):
def init(self, url, timeout):
self.url = url
self.timeout = timeout
self.ioloop = IOLoop.instance()
self.ws = None
self.connect()
self.ioloop.start()
@gen.coroutine
def connect(self):
try:
self.ws = yield websocket_connect(self.url)
except Exception as e:
logger.exception(e)
else:
logger.info("connected")
self.run()
if name == "main":
client = Client("ws://192.168.1.8:49632/", 5)
这段代码连接别的客户端是没问题的。
另基于js的客户端代码示例也没有问题,可以连接
插件启动时没有生成 config.json 文件,手动添加 config.json 文件设置端口不生效
我尝试着做一个QQ跑团游戏,利用JS canvas导入背景地图后,在上面描绘人物所在位置的点。背景图37KB,描绘后将Base64转为16进制数据,利用method: "uploadImage"接口发送的时候,会导致与QQLight的连接中断(这时的JSON data项有590KB大)。使用较小背景图(5KB)测试后能够正常发送,所以考虑是图片大小的原因
日志
08-27 09:32:05 WebSocket Protocol receiveConnect Accepted client: 1.0.0.0:10606
08-27 09:32:05 WebSocket Protocol wsShakeHands WebSocket handshake succeeded
08-27 09:32:10 QQLight [接收]-群消息 群:511371420 QQ:1097793260 。pic 70 50
08-27 09:32:10 WebSocket Protocol wsClientDataHandle This is not the final fragment in a message
08-27 09:32:10 WebSocket Protocol removeClient Client socket closed, now length of clients: 0
如题
监听地址为localhost,而非0.0.0.0。
最新的源代码似乎已变更为0.0.0.0,但发行版插件似乎仍然使用了localhost地址,见下图:
大佬,邀请加群和主动加群经常不成功是什么情况啊?
另外接口getLoginAccount能否同时返回登录QQ号码和昵称?
接口 退出群能否增加一个是否永久拒绝此人入群参数?
事件 收到消息时能否同时把对方的昵称、群名片、群角色同步返回呢?
09-24 19:52:03 WebSocket Protocol wsClientDataHandle Payload data is {"method": "addFriend", "params": {"qq": 1927115659, "message": "test add friend"}}
09-24 19:49:59 WebSocket Protocol wsClientDataHandle Payload data is {"method": "addFriend", "params": {"qq": "1927115659", "message": "test add friend"}}
09-24 19:52:03 WebSocket Protocol jsonRPC Client call 'addFriend' method
09-24 19:52:03 WebSocket Protocol jsonParse Invalid data
无论是哪种调用格式都是合格的json,为何认定数据格式无效?
麻烦作者有时间弄一个契约版的socket插件,可以留下微信或支付宝大家好方便捐赠。
契约QQ下载地址:https://qyue.cc/topic/165
使用python socketio client连接qqlight-ws报400错误,但是python连接flask_websocketio服务器没问题。
在网页上用js可以连接qqlight-ws确是好的。
你拿个这个是拿来做什么玩的呀!做出了了什么好玩的事情了吗
如题,请大佬指点一下
。。。invalid data,很难受
日志显示“Connection close frame”
能接收一阵子数据,然后断掉
代码如下
//todo 接受推送过来的消息和事件,在这里面进行解析和分发
async void StartReceiving(ClientWebSocket client)
{
while (true)
{
var array = new byte[4096];
WebSocketReceiveResult result = await client.ReceiveAsync(new ArraySegment(array), CancellationToken.None);
await client.CloseOutputAsync(WebSocketCloseStatus.Empty,"",CancellationToken.None);
if (result != null)
{
if (result.MessageType == WebSocketMessageType.Text)
{
string msg = Encoding.UTF8.GetString(array, 0, result.Count);
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine("--> {0}", msg);
Console.ForegroundColor = ConsoleColor.DarkGray;
//todo 对消息进行解析,事件分发
JObject msgobj = (JObject)JsonConvert.DeserializeObject(msg);//或者JObject jo = JObject.Parse(jsonText);
switch (msgobj["event"].ToString())
{
case "message":
recieveMsgEvent(msgobj);
break;
case "friendRequest":break;
case "friendChange":break;
case "groupMemberIncrease":break;
case "groupMemberDecrease":break;
case "adminChange":break;
case "groupRequest":break;
case "receiveMoney":break;
}
}
}
}
}
请问:
当收到图片消息 [QQ:pic=xxx-xx-xxx-xxx-xx.jpg]
有接口可以下载该图片么。或者得到图片的真实地址
这里如果指定为 127.0.0.1 很多时候外网服务器是无法访问的
能出一个qqlight-websocket作为客户端的版本么。
遇到这么一个场景:需要一个集中处理QQ消息服务器,消息服务器还要挂接其他的业务服务器。是一个被动型的处理,不是向QQ主动发送消息
因为水平问题,不知道怎么把处理QQ消息的ws客户端集成在web服务器上,如果qqlight-websocket是ws的客户端,那么就能在自己的服务器上业务处理。不用再写一个中间的qq消息处理了。
版本v2.0.1 事件.收到好友请求 事件.成为好友 无法触发
报告大佬,3.1.7版本获取群成员列表会报错,好像是QQLight更新了解口。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.