作品: 基于 YuQ框架 的QQ机器人 文档
image.png

一、YuQ的工作原理

YuQ的本身实际是一种「无头 QQ 客户端」

  1. 腾讯下发信息到客户端
  2. YuQ对信息进行包装

(消息本体会被封装成为com.icecreamqaq.yuq.message.Message信息对象

  1. 经过Event(事件层)
  2. 经过Before(过滤器层)
  3. Action(路由器节点)
  4. After (经过Action层之后的处理器)

image.png

二、YuQ的特点

  • 最值得讲的一点就是YuQ的开发很像 SpringMVC,使得从开始接触到入门上手并不是一件很难的事情

image.png

三、启动YuQ

Springboot项目类似,项目的主入口在 Start 启动类中
image.png

  • Start是YuQ启动的地方,由于某些原因,这个地方除非非常娴熟的人,我不建议你添加任何其他代码,否则可能会对YuQ的启动造成一定的干扰。
  • Controller包是类似于MVC框架中的Controller部分,文件中写了相对详细的注释,主要是根据命令来进行反馈(这是YuQ自带的命令系统)
  • Event包是一个触发器系统,当某事发生(比如好友申请)时,想要处理就应该在Event中来进行了。MyEvent是一个自定义事件的Demo,在进阶部分我们会讲到这里。
  • Job包是定时器相关,这里为你介绍了YuQ自带的定时器系统,简单的使用定时器去处理一些东西。
  • Resources的Conf文件夹里面是YuQ的配置文件,如果你有任何自己的配置文件,我建议你另外新建一个文件夹,因为YuQ会扫描外层以及Conf层两层来加载。

当我们向机器人发送私聊消息 hello 的时候
image.png

当我们在群聊消息中想禁言某人的时候
image.png

四、发生了什么

  1. 正如之前所说的那样,YuQ是一个无头的QQ客户端。所以,当我们向机器人发送消息的时候,这条消息也会从腾讯的服务器下发到 机器人QQ,YuQ的作用就是解析这些消息并作出对应的响应。
  2. 这时候,消息已经被YuQ所拿到,他将信息和发送者包装成为一个个对象,再进入到之后的流程
  3. 首先进入到的是Event层,机器人收到消息之后就会将消息发送给事件。比如MessageEventimage.png顾名思义,消息事件会在这里触发,并允许处理逻辑,对于MessageEvent,有两个子类,分别是PrivateMessageEvent和GroupMessageEvent,对应的处理群聊和私聊逻辑。
  4. 经过了Event事件层,消息会给到对应的Controller,在Controller层中,最核心的部分就是@Action,所以只有遇到了适合@Action的情况下,才会走所在类的@Before@After,如果没匹配到任何的@Action,那么信息在走完Event之后就已经结束了。
    • @Before 构思来自于Web的拦截器。可以实现命令的权限管理
    • @Action 是信息匹配的地方,对收到的信息进行过滤匹配
    • @After After是消息的终点站,经过此处,消息一般就会被YuQ发往腾讯服务器,也就可以在群聊和私聊窗口看到他。