啊!2024才学TypeScript还有价值吗?!学的话,就用最新的上。
目标
- 学习使用Node.js第三方
oicq
模块 - 学习掌握QQ聊天机器人的个性化开发
- 学会查看
oicq
模块的TypeScript
源代码,梳理核心代码组织结构和作用
1、效果演示
2、文件规范
在VScode
中创建文件夹目录结构:
- 创建 大文件夹
TS2024
《TypeScript》课程整个学期的 - 创建子文件夹
w1
表示第一周 形成如下文件夹结构: - 创建文件
w1\1扫码.js
,复制以下代码,VScode中结构如下:
js
//1扫码.js 复制以下代码
const { createClient } = require("oicq")
const QQ号 = '2919386060' //填写你的QQ号码
const client = createClient(QQ号)
client.on("system.online", () => console.log("登录成功!"))
client.on("message", e => {
console.log(e)
console.log('\n')
e.reply("你好,世界", true) //true表示引用对方的消息
})
client.on("system.login.qrcode", function (e) {
//扫码后按回车登录
process.stdin.once("data", () => {
this.login()
})
}).login()
-
pnpm -v
8.15.4
确保在命令行可以运行 pnpm 包管理工具。
此命令只要能执行,说明node环境和包管理工具无问题。
实验一、使用安装好oicq模块,尝试执行QQ扫码登录😉
我们将模拟一个虚拟手表设备,在VScode或win命令行运行以下命令:
步骤1 运行pnpm -v
查看版本号
只要能显示pnpm 版本号,确定模块安装工具 pnpm无问题
步骤2 通过pnpm config set
配置新的pnpm代码仓库
因为我们通过Node.js下载代码模块,通过淘宝源作中转,近期 淘宝源地址到期,切换新的npm代码仓库源https://registry.npmmirror.com(新)
registry.npm.taobao.org (已到期,废弃),实际执行以下代码
通过pnpm config list
查看 registry
值 改变
shell
pnpm config set registry https://registry.npmmirror.com
pnpm config list
步骤3 通过pnpm install oicq
命令安装模块
install- 安装 。此处可以简写为 pnpm i oicq。以下两种语法都可:
shell
pnpm install oicq //工具 安装 模块名
pnpm i oicq //以上install简写 i
步骤4 运行 node 1扫码.js
执行代码
使用手机QQ扫码,代码会创建一个虚拟 手表设备,由于安全中心的限制,仅作体验。
特别说明
- 测试前IP变化,会被安全中心风控。如在固定位置长期登录,更容易一次成功。
- 由于QQ的接口策略可能会随时间变化,需要定期关注官方动态及第三方库的更新情况。
- 对此我们使用更稳定的
密码+人工滑块验证
登录方式。
实验二、使用安装好oicq模块,尝试执行QQ扫码登录🤪
步骤1 新建代码文件2滑块.js
js
//滑块验证登录
const { createClient } = require("oicq")
let QQ号 = '2919386060' //填入你的QQ号
let 密码 = '2024abcA.' //填入你的密码
const client = createClient(QQ号)
client.on("system.login.slider", function (e) {
console.log("复制ticket输入:\n")
process.stdin.once("data", ticket => this.submitSlider(String(ticket).trim()))
}).login(密码)
步骤2 运行 node 2滑块.js
执行代码
shell
node 2滑块
步骤3 进行人工验证获得ticket
值
获取程序显示URL到浏览器,如上图红框 https://ssl.captcha.qq.com/template...
完整地址
注:该地址为[官方]腾讯多端通用滑块验证码页面,当你使用手机QQ修改密码后验证也是这个页面。
需要人工辅助验证!!!别急点确定,提前打开浏览器控制台
需要人工辅助验证!!!别急点确定,提前打开浏览器控制台
需要人工辅助验证!!!别急点确定,提前打开浏览器控制台
3.1 [GIF演示]
按F12在浏览器控制台获取属性ticket
的值, 操作如下动图演示:
3.2 在60秒内将复制ticket
的值粘贴在程序下方 按回车。
正常情况下会如下图所示获得好友列表,并且自动捕捉私聊和群消息。
大多数情况下手机QQ会收到安全中心拦截,因为新设备和IP地址的变化,我们需要打个虚拟设备补丁代码。 device.js
步骤4 修复 oicq
模块 设备缺陷
将最新的device.js
覆盖到\TS2024\w1\node_modules\oicq\lib\core
目录下
步骤5 运行 pnpm i
模块 加载识别device.js
文件
步骤6 两次步骤2-步骤3,重复多次。
结果1. 登录成功,可以获得好友列表。
结果2. 增加一条手机验证提示,复制URL地址到网址,手机验证后再次重复步骤2-3即可。
结果3. 仍然提示 各种问题,解决办法,如以上操作无问题,只有等待安全中心72小时放行IP。
课程中进入 腾讯会议进行演示。
课后拓展
错误收集&反馈💢
加演示图片QQ好友,发送错误截图或视频:
问题1. pnpm 无权限加载脚本
shell
set-ExecutionPolicy RemoteSigned