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
相关推荐
BBB努力学习程序设计33 分钟前
CSS Sprite技术:用“雪碧图”提升网站性能的魔法
前端·html
BBB努力学习程序设计39 分钟前
CSS3渐变:用代码描绘色彩的流动之美
前端·html
冰暮流星1 小时前
css之动画
前端·css
jump6801 小时前
axios
前端
spionbo1 小时前
前端解构赋值避坑指南基础到高阶深度解析技巧
前端
用户4099322502121 小时前
Vue响应式声明的API差异、底层原理与常见陷阱你都搞懂了吗
前端·ai编程·trae
开发者小天1 小时前
React中的componentWillUnmount 使用
前端·javascript·vue.js·react.js
永远的个初学者2 小时前
图片优化 上传图片压缩 npm包支持vue(react)框架开源插件 支持在线与本地
前端·vue.js·react.js
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ2 小时前
npm i / npm install 卡死不动解决方法
前端·npm·node.js
Kratzdisteln2 小时前
【Cursor _RubicsCube Diary 1】Node.js;npm;Vite
前端·npm·node.js