TypeScript2024第一周拓展实战训练——QQ聊天机器人

啊!2024才学TypeScript还有价值吗?!学的话,就用最新的上。

目标

  • 学习使用Node.js第三方oicq模块
  • 学习掌握QQ聊天机器人的个性化开发
  • 学会查看oicq模块的TypeScript源代码,梳理核心代码组织结构和作用

1、效果演示

2、文件规范

VScode中创建文件夹目录结构:

  1. 创建 大文件夹TS2024《TypeScript》课程整个学期的
  2. 创建子文件夹w1表示第一周 形成如下文件夹结构:
  3. 创建文件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
相关推荐
IT_陈寒7 分钟前
React 性能优化:5个实战技巧让首屏加载提升50%,开发者亲测有效!
前端·人工智能·后端
rising start24 分钟前
前端基础一、HTML5
前端·html·html5
鬼谷中妖33 分钟前
JavaScript 循环与对象:深入理解 for、for...in、for...of、不可枚举属性与可迭代对象
前端
大厂码农老A38 分钟前
你打的日志,正在拖垮你的系统:从P4小白到P7专家都是怎么打日志的?
java·前端·后端
im_AMBER39 分钟前
CSS 01【基础语法学习】
前端·css·笔记·学习
DokiDoki之父43 分钟前
前端速通—CSS篇
前端·css
pixle01 小时前
Web大屏适配终极方案:vw/vh + flex + clamp() 完美组合
前端·大屏适配·vw/vh·clamp·终极方案·web大屏
ssf19871 小时前
前后端分离项目前端页面开发远程调试代理解决跨域问题方法
前端
天才测试猿1 小时前
WebUI自动化测试:POM设计模式全解析
自动化测试·软件测试·python·selenium·测试工具·设计模式·测试用例
@PHARAOH1 小时前
WHAT - 前端性能指标(加载性能指标)
前端