如何使用Node开发一个属于自己的QQ机器人

如何使用Node开发一个属于自己的QQ机器人

PluginsKers
2021-05-31 / 0 评论 / 8 阅读 / 正在检测是否收录...

oicq

前言

关于环境安装什么的,真的不想再说了,移步:https://www.52craft.cc/archives/108/
首先你需要知道QQ的传讯方式如果说知道那是最好,不知道也没有关系
这篇文章在我的草稿里躺了好久了,因为我在这块领域也是萌新一个,只不过较早入坑而已,那么就将一些自己的总结分享出来。

本源

站在巨人的肩膀上的感觉,爽啊。
这里推荐一个oicq

用法:

const { createClient } = require("oicq");
const uin = 123456789; // your account
const client = createClient(uin);

//监听上线事件
client.on("system.online", () => console.log("Logged in!"));

//监听消息并回复
client.on("message", (data) => data.reply("hello world"));

//监听滑动验证码事件并输入ticket
client.on("system.login.slider", function () {
  process.stdin.once("data", (input) => {
    this.sliderLogin(input);
  });
});

client.login("password"); // your password or password_md5

Demo:

"use strict";
try {
    var { createClient } = require("oicq");
} catch {
    var { createClient } = require("../index");
}

// your account
const uin = 123456789;
const bot = createClient(uin, {
    log_level: "debug", //日志级别设置为debug
    platform: 5, //登录设备选择为iPad
});

//监听并输入滑动验证码ticket(同一设备只需验证一次)
bot.on("system.login.slider", () => {
    process.stdin.once("data", (input) => {
        bot.sliderLogin(input);
    });
});

//监听设备锁验证(同一设备只需验证一次)
bot.on("system.login.device", () => {
    bot.logger.info("验证完成后敲击Enter继续..");
    process.stdin.once("data", () => {
        bot.login();
    });
});

//监听上线事件
bot.on("system.online", function () {
    console.log(`Logged in as ${this.nickname}!`);
});

//自动同意好友申请
bot.on("request.friend.add", (data) => {
    bot.setFriendAddRequest(data.flag);
});

//自动同意群邀请
bot.on("request.group.invite", (data) => {
    bot.setGroupAddRequest(data.flag);
});

//监听私聊
bot.on("message.private", (data) => {
    // console.log(data);
    bot.sendPrivateMsg(data.user_id, "hello");
});

//监听群聊
bot.on("message.group", (data) => {
    // console.log(data);
    bot.sendGroupMsg(data.group_id, "hello");
});

//监听群员入群事件
bot.on("notice.group.increase", (data) => {
    bot.sendGroupMsg(data.group_id, data.nickname + " 加入了群");
});

// login with your password or password_md5
bot.login("password");

//同一事件可以多次监听
//更多api和事件请参考文档或index.d.ts文件

关于如何开始,官方的Wiki详细的不能再详细了 表情
以上内容都只用到了,基础的函数和事件的相关知识,如果还是看不懂......KERS建议去学习一下基础。
你可以用它捏一个属于自己的机器人,一些花里胡哨的功能,对接你的业务?

针对QQ冻结封禁等问题?
看来要解决的问题与很多啊。

针对于风控和账号高危行为

是否会因为使用开源的第三方QQ协议实现而被tx封号?

目前不会,但是不能保证未来。开源协议在明,并且特征明显,tx如果要加以打击非常容易,只不过它没有这么做。
所以,如果你被封了,一定不是因为使用了非官方客户端,常见原因如下。

可能会导致封号的原因:

  1. 发送违法消息(色情、暴力、反动等)并遭人举报。通常封禁1-7天,连续多次或内容恶劣可能转为永久。
  2. 业务违规(批量登录或发消息太快等)。通常改密码或刷脸可解封。
  3. 发广告、垃圾消息、诈骗(新号在私聊中发送链接或奇怪内容可能直接触犯此条)。通常改密码或刷脸可解封。
  4. 不开设备锁在异地登录陌生设备(一段时间后提示密码泄露被强制下线)。通常手机登录一下就行,有时需改密。
  5. 使用xposed、qn等。

风控号:一些注册时间较短或被tx判定为风险等级过高的账号

风控的意思是:看上去正常的账号,实际被tx暗中限制某些功能。
风控的现象在官方客户端也仍然存在,以下为一些实际表现。

  • 风控号在群聊中可能无法直接发送诸如:100字以上的消息、图文消息、tx认为奇怪的消息(由AI判断)
  • 风控号更换设备后,可能在最长几天之内都无法发送超过2个字节的群消息。
  • 风控号可能无法发送合并转发,以及一些xml消息。
  • 风控号可能被一定程度限制加群、加好友以及邀请入群的功能(可能进入过滤列表,或直接收不到)。
    ※目前 新注册 的账号管控非常严格,稍有不慎就会被被冻结,风控也是家常便饭。

※本仓库不再单独解答关于封号和风控的问题。

对此?希望能够对应的做出一些调整,比如发信速率,还有业务逻辑

如果有需要老账号(一般1个太阳)可以联系博主 表情

关于我遇到的一些问题

client.getSystemMsg()只能捕获正常信息,如果说是以过滤的信息,那么oicq是没有办法捕捉的
但是看样子,问题应该可以被修复,已经提交了issue

关于微信机器人

博主查阅了很多资料,还有许多issue,发现了一个轮子
一个可以制作微信机器人的轮子

2

评论 (0)

取消