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
相关推荐
OpenTiny社区3 分钟前
TinyRobot Skills技巧大公开:让 AI 成为你的 “UI 搭建”副驾驶
前端·vue.js·ai编程
土豆12506 分钟前
Rust 实战:手把手教你开发一个命令行工具
前端·rust
Moment10 分钟前
2026年,TypeScript还值不值得学 ❓❓❓
前端·javascript·面试
林九生13 分钟前
【Vue3】解决 Tailwind CSS v4 + Vite 8 中 `@import “tailwindcss“` 不起作用的问题
前端·css
陈随易14 分钟前
AI时代,说点心里话
前端·后端·程序员
console.log('npc')24 分钟前
Cursor,Trae,Claude Code如何协作生产出一套前后台app?
前端·人工智能·react.js·设计模式·ai·langchain·ai编程
乌拉那拉丹37 分钟前
vue3 配置跨域 (vite.config.ts中配置)
前端·vue.js
happymaker062641 分钟前
web前端学习日记——DAY01(HTML基本标签)
前端·学习·html
笨笨狗吞噬者1 小时前
【uniapp】小程序支持分包引用分包 node_modules 依赖产物打包到分包中
前端·微信小程序·uni-app
悟空瞎说1 小时前
Electron 踩坑实录:主窗口 icon 配置了,打包 Windows 后死活不显示?(全网最细排查+解决方案)
前端