实现QQ机器人 + 消息"尾巴" 土豪专用...(Nodejs版)

实现QQ机器人 + 消息"尾巴" 土豪专用…(Nodejs版)

简单的写一个qq机器人.代码地址http://hi.baidu.com/woairuibaobao/item/186e8839caf57ff72784f437 效果如下:
alt 效果

原理:

QQ里两个关键的函数:
接收消息的函数 : mq.model.chat.addMessage(x,y)

发送消息的函数 : mq.model.chat.sendMsg(x)

通过hook接收消息的函数.判断接收到的消息内容是否是指令.如果是指令就执行相关的功能.忽略其他消息内容.

代码:

mq.model.chat.addMessage = function(j, k) { //替换掉接收消息的函数 实现hook
 var Msg = ''; //显示功能
 try {
  var i = (k.content[1].replace(/\ $/g, '').match(/^-[0-9a-z]$/g))[0]; //获取指令
 } catch (e) {
  var i = '@'; //不是指令的时候 忽略
 };
 switch (i) //判断指令
 {
 case '-1':
  Msg = "我叫咪咪."; // 指令 -1 这里可以换成自己想要的功能.
  break;
 case '-2':
  Msg = "我是女性."; // 指令 -2
  break;
 case '-3':
  Msg = "我喜欢坑蒙拐骗."; //指令 -3
  break;
 case '-h':
  Msg = "指令:\n -1 : 我的名字.\n -2 : 我的性别.\n -3 : 我的爱好.\n -h : 帮助."; //指令 -h
  break;
 default:
  Msg = "你好,我是机器人.请输入 -h 查看帮助."; //其他内容
  break;
 }

var m = { //发送给用户的消息 json格式 “to”: j, // 对方qq id 不是qq号码 “content”: “[”" + Msg + “”,[“font”,{“name”:“宋体”,“size”:10,“style”:[0,0,0],“color”:“000000”}]]", //消息内容和样式 “face”: 555, //未知意义 按格式填充 “clientid”: mq.clientid, //未知意义 按格式填充 “msg_id”: 68020001, //未知意义 按格式填充 “psessionid”: mq.psessionid //未知意义 按格式填充 } mq.model.chat.sendMsg(m); //发送消息 }

如何使用:

登录http://w.qq.com/index.html?webqq_type=10 以chrome浏览器为例,打开"开发者工具" 在控制台里输入上面的代码,按回车执行. 如图:
alt 代码

代码执行之后.好友给这个qq号发消息的时候,就可以收到指令提示.见图一.

QQ消息尾巴
效果 如图:

alt 代码

原理:

跟机器人类似.hook发送消息的函数.把消息后面加在尾巴即可.

代码:

var old_send = mq.model.chat.sendMsg; //保存原函数
mq.model.chat.sendMsg = function(k) { //hook
    var old = eval(k.content)[0]; //原消息内容
 var msg = old + '\\n\\n -来自 iphone5S 土豪金客户端.'; //添加尾巴
 k.content = "[\"" + msg + "\",[\"font\",{\"name\":\"宋体\",\"size\":10,\"style\":[0,0,0],\"color\":\"000000\"}]]"; //新消息内容
 old_send(k); //用原函数 发送消息
}

如何使用:

登录http://w.qq.com/index.html?webqq_type=10 以chrome浏览器为例,打开"开发者工具" 在控制台里输入上面的代码,按回车执行. 跟机器人一样…


10 回复

实现QQ机器人 + 消息"尾巴" 土豪专用…(Nodejs版)

标题

实现QQ机器人 + 消息"尾巴" 土豪专用…(Nodejs版)

内容

简单的写一个QQ机器人。代码地址: [http://hi.baidu.com/woairuibaobao/item/186e8839caf57ff72784f437](http://hi.baidu.com/woairuibaobao/item/186e8839caf57ff72784f437)
效果如下:
![效果](http://h.hiphotos.bdimg.com/album/s%3D550%3Bq%3D90%3Bc%3Dxiangce%2C100%2C100/sign=6c21b81a4936acaf5de096f94ce2fc2d/77094b36acaf2edd0402b2ca8f1001e939019326.jpg?referer=fbaefabb5cdf8db1e5394854ddfc&x=.jpg)

#### 原理:

QQ里有两个关键的函数:

1. **接收消息的函数**: `mq.model.chat.addMessage(x, y)`
2. **发送消息的函数**: `mq.model.chat.sendMsg(x)`

通过hook接收消息的函数,判断接收到的消息内容是否是指令。如果是指令,则执行相关的功能,忽略其他消息内容。

#### 代码:

```javascript
mq.model.chat.addMessage = function(j, k) { // 替换掉接收消息的函数 实现hook
    var Msg = ''; // 显示功能
    try {
        var i = (k.content[1].replace(/\ $/g, '').match(/^-[0-9a-z]$/g))[0]; // 获取指令
    } catch (e) {
        var i = '@'; // 不是指令的时候 忽略
    };

    switch (i) { // 判断指令
        case '-1':
            Msg = "我叫咪咪."; // 指令 -1 这里可以换成自己想要的功能.
            break;
        case '-2':
            Msg = "我是女性."; // 指令 -2
            break;
        case '-3':
            Msg = "我喜欢坑蒙拐骗."; // 指令 -3
            break;
        case '-h':
            Msg = "指令:\n -1 : 我的名字.\n -2 : 我的性别.\n -3 : 我的爱好.\n -h : 帮助."; // 指令 -h
            break;
        default:
            Msg = "你好,我是机器人.请输入 -h 查看帮助."; // 其他内容
            break;
    }

    var m = { // 发送给用户的消息 json格式
        "to": j, // 对方qq id 不是qq号码
        "content": "[\"" + Msg + "\",[\"font\",{\"name\":\"宋体\",\"size\":10,\"style\":[0,0,0],\"color\":\"000000\"}]]", // 消息内容和样式
        "face": 555, // 未知意义 按格式填充
        "clientid": mq.clientid, // 未知意义 按格式填充
        "msg_id": 68020001, // 未知意义 按格式填充
        "psessionid": mq.psessionid // 未知意义 按格式填充
    }
    mq.model.chat.sendMsg(m); // 发送消息
}

如何使用:

登录 http://w.qq.com/index.html?webqq_type=10 以Chrome浏览器为例,打开"开发者工具" 在控制台里输入上面的代码,按回车执行。如图:

代码

代码执行之后,好友给这个QQ号发消息的时候,就可以收到指令提示。见图一。

QQ消息尾巴

效果 如图:

代码

原理:

跟机器人类似,hook发送消息的函数,把消息后面加在尾巴即可。

代码:

var old_send = mq.model.chat.sendMsg; // 保存原函数
mq.model.chat.sendMsg = function(k) { // hook
    var old = eval(k.content)[0]; // 原消息内容
    var msg = old + '\\n\\n -来自 iPhone5S 土豪金客户端.'; // 添加尾巴
    k.content = "[\"" + msg + "\",[\"font\",{\"name\":\"宋体\",\"size\":10,\"style\":[0,0,0],\"color\":\"000000\"}]]"; // 新消息内容
    old_send(k); // 用原函数 发送消息
}

如何使用:

登录 http://w.qq.com/index.html?webqq_type=10 以Chrome浏览器为例,打开"开发者工具" 在控制台里输入上面的代码,按回车执行。跟机器人一样…


以上就是完整的实现步骤和代码示例。希望对您有所帮助!

自己顶.

顶一下!!!

这个很不错,如果自己编译webkit还能嵌入到应用中。

用node-webkit 可以实现很多犀利的功能…

图片挂了。

地址图片都挂了 Mark 一下

恢复了.

顶一下!

要实现一个带有“消息尾巴”的QQ机器人,可以通过拦截并修改QQ客户端中的消息发送函数来实现。这里提供一个基于Node.js的示例,但请注意,直接操作QQ客户端的函数可能涉及不合规的行为,建议用于合法、合规的场景中。

示例代码

首先,你需要安装node-qq-bot这样的库来模拟QQ机器人的行为,但是由于官方并没有提供这样具体的库,你可以使用itchat来模拟微信机器人的行为作为参考,虽然它们是不同的平台,但实现原理相似。

const itchat = require('itchat');

// 登录微信(这里以微信作为参考,实际应该替换为QQ的API)
itchat.login();

// 监听文本消息
itchat.on('text', (msg) => {
  console.log(msg);
  
  // 判断是否为特定消息,例如判断是否为指定命令
  if (msg.Content === '-1') {
    msg.reply("我叫咪咪.");
  } else {
    // 添加消息尾巴
    const originalContent = msg.Content;
    const newContent = `${originalContent}\n\n-来自 iphone5S 土豪金客户端.`;

    // 使用原生方法回复
    msg.reply(newContent);
  }
});

// 开始监听
itchat.start();

解释

  1. 登录:首先使用相应的库进行登录。
  2. 监听消息:通过itchat.on('text', ...)来监听所有文本消息。
  3. 判断指令:对消息内容进行判断,如果是特定指令,则做出特定响应。
  4. 添加尾巴:如果不是特定指令,将原始消息内容加上预设的“消息尾巴”。
  5. 回复:最后使用msg.reply(...)方法回复消息。

请注意,上述代码是基于itchat库编写的,因为Node.js社区没有直接针对QQ的官方库。如果你的目标确实是QQ,可能需要寻找或开发一个类似的库来实现功能。同时,直接操作QQ客户端内部函数可能涉及逆向工程,这在某些地区或情况下可能是非法的,务必确保你的行动符合当地法律法规。

回到顶部