Giter Site home page Giter Site logo

lz1998 / spring-cq Goto Github PK

View Code? Open in Web Editor NEW
187.0 10.0 46.0 25.3 MB

新框架 https://github.com/ProtobufBot/ProtobufBot 。这是一个spring boot starter。基于SpringBoot的QQ机器人框架,demo分支是例子,jar分支是框架。

Java 100.00%
bot qq qqbot coolq qqrobot websocket java cqhttp coolq-http-api springboot spring-cq

spring-cq's Introduction

Spring-CQ

maven QQ群

开发环境

  • IntelliJ IDEA Ultimate(学生认证免费)
  • IntelliJ IDEA中的lombok插件,File->Settings->Plugins->搜索Lombok->Install->重启IDEA
  • JDK IDEA自动安装,不需要自己装
  • MAVEN IDEA自动安装,不需要自己装

导入maven依赖

    <dependency>
        <groupId>net.lz1998</groupId>
        <artifactId>spring-cq</artifactId>
        <version>4.14.1.1</version>
    </dependency>

推荐SpringBoot 2.1.8
为了避免一些问题,可以直接下载demo修改

编写插件

  1. 编写XXXPlugin,继承CQPlugin

    /**
    * 示例插件
    * 插件必须继承CQPlugin,上面要 @Component
    *
    * 添加事件:光标移动到类中,按 Ctrl+O 添加事件(讨论组消息、加群请求、加好友请求等)
    * 查看API参数类型:光标移动到方法括号中按Ctrl+P
    * 查看API说明:光标移动到方法括号中按Ctrl+Q
    */
    @Component
    public class DemoPlugin extends CQPlugin {
       /**
        * 收到私聊消息时会调用这个方法
        *
        * @param cq    机器人对象,用于调用API,例如发送私聊消息 sendPrivateMsg
        * @param event 事件对象,用于获取消息内容、群号、发送者QQ等
        * @return 是否继续调用下一个插件,IGNORE表示继续,BLOCK表示不继续
        */
       @Override
       public int onPrivateMessage(CoolQ cq, CQPrivateMessageEvent event) {
           // 获取 发送者QQ 和 消息内容
           long userId = event.getUserId();
           String msg = event.getMessage();
    
           if (msg.equals("hi")) {
               // 调用API发送hello
               cq.sendPrivateMsg(userId, "hello", false);
    
               // 不执行下一个插件
               return MESSAGE_BLOCK;
           }
           // 继续执行下一个插件
           return MESSAGE_IGNORE;
       }
    
    
       /**
        * 收到群消息时会调用这个方法
        *
        * @param cq    机器人对象,用于调用API,例如发送群消息 sendGroupMsg
        * @param event 事件对象,用于获取消息内容、群号、发送者QQ等
        * @return 是否继续调用下一个插件,IGNORE表示继续,BLOCK表示不继续
        */
       @Override
       public int onGroupMessage(CoolQ cq, CQGroupMessageEvent event) {
           // 获取 消息内容 群号 发送者QQ
           String msg = event.getMessage();
           long groupId = event.getGroupId();
           long userId = event.getUserId();
    
           if (msg.equals("hello")) {
               // 回复内容为 at发送者 + hi
               String result = CQCode.at(userId) + "hi";
    
               // 调用API发送消息
               cq.sendGroupMsg(groupId, result, false);
    
               // 不执行下一个插件
               return MESSAGE_BLOCK;
           }
    
           // 继续执行下一个插件
           return MESSAGE_IGNORE;
       }
    }
  2. 配置resources/application.yml

    server:
      port: 8081 # 下面的cqhttp都是8081端口,可以自己改
    
    spring:
      cq:
        # 在这里配置各个功能执行顺序
        # 如果前一个功能返回MESSAGE_BLOCK,下一个功能不会被执行
        # 如果前一个功能返回MESSAGE_IGNORE,会继续执行下一个功能
        plugin-list:
          - com.example.demo.plugin.DemoPlugin
          - com.example.demo.plugin.TestPlugin
          - com.example.demo.plugin.HelloPlugin

测试应用

  1. 运行SpringCqApplication的main方法

打包应用

  1. 使用maven打包应用
    mvn clean package
  2. 在target目录下,spring-cq-0.0.1-SNAPSHOT.jar即为打包的jar

运行应用

  1. 输入指令
    java -jar spring-cq-0.0.1-SNAPSHOT.jar

如果是Windows,并且不需要查看运行情况,可以直接双击jar文件运行,右下角托盘会出现小图标

Windows运行酷Q和cqhttp

  1. 准备酷Q Air
    • 方案一:下载已经配置好cqhttp的酷Q Air
    • 方案二:自己配置
      1. 下载酷Q Air
      2. 下载CQHTTP插件
      3. 创建文件酷Q Air\data\app\io.github.richardchien.coolqhttpapi\config.ini
        [general]
        use_http=false
        use_ws_reverse=true
        ws_reverse_url=ws://127.0.0.1:8081/ws/cq/
        ws_reverse_use_universal_client=true
        enable_heartbeat=true
        heartbeat_interval=60000
  2. 解压后运行 CQA.exe 登录QQ账号

如果需要酷Q Pro,下载解压后替换exe文件,其他不需要动

Docker运行酷Q和cqhttp

  1. 安装酷Q和CQHTTP插件
    docker run -d --name cq01 \
    -v $(pwd)/coolq:/home/user/coolq \
    -p 9000:9000 \
    -e VNC_PASSWD=你的VNC密码(不超过8位) \
    -e COOLQ_URL=http://dlsec.cqp.me/cqa-tuling \
    -e COOLQ_ACCOUNT=你的机器人QQ号 \
    -e CQHTTP_USE_HTTP=false \
    -e CQHTTP_USE_WS_REVERSE=true \
    -e CQHTTP_WS_REVERSE_URL=ws://宿主机地址:8081/ws/cq/ \
    -e CQHTTP_WS_REVERSE_USE_UNIVERSAL_CLIENT=true \
    -e CQHTTP_ENABLE_HEARTBEAT=true \
    -e CQHTTP_HEARTBEAT_INTERVAL=60000 \
    richardchien/cqhttp
    如果不知道宿主机地址是什么,可以使用Docker的host模式,共享主机网络
    docker run -d --name cq01 \
    -v $(pwd)/coolq:/home/user/coolq \
    --net=host \
    -e VNC_PASSWD=你的VNC密码(不超过8位) \
    -e COOLQ_URL=http://dlsec.cqp.me/cqa-tuling \
    -e COOLQ_ACCOUNT=你的机器人QQ号 \
    -e CQHTTP_USE_HTTP=false \
    -e CQHTTP_USE_WS_REVERSE=true \
    -e CQHTTP_WS_REVERSE_URL=ws://127.0.0.1:8081/ws/cq/ \
    -e CQHTTP_WS_REVERSE_USE_UNIVERSAL_CLIENT=true \
    -e CQHTTP_ENABLE_HEARTBEAT=true \
    -e CQHTTP_HEARTBEAT_INTERVAL=60000 \
    richardchien/cqhttp
  2. 访问 http://127.0.0.1:9000 登录QQ账号

如果需要酷Q Pro,把http://dlsec.cqp.me/cqa-tuling改为http://dlsec.cqp.me/cqp-tuling

截图

spring-cq's People

Contributors

lz1998 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spring-cq's Issues

酷Q定制client

你好,酷Q定制client是什么意思?什么原理?你的群满了,哪里可以下载?

接受信息有问题

CQHTTP日志显示发送成功.Spring-CQ最多只输出2位的字符、字母及数字,中文不行.但最初的测试,可发送其他中文文字信息.
环境是mac + 虚拟机Win10.Spring-CQ在mac上,酷Q及CQHttp在虚拟机上.排查了代码,没啥问题

linux服务器部署coolQ和插件后并不能ws到spring中,但windows可以。

使用了richardchien/cqhttp 和coolq/wine-coolq +配置文件(应该是一样的)测试结果都不行,日志显示
image
加载的配置信息:
image
确认服务器能ws访问:
image

望博主查看下,windows测试完美,能实现我通过coolQ控制我页面,发表文章等功能,十分感谢,所以想部署到linux下,但经测试,websocket连接不上。

问题

Closing session due to exception for StandardWebSocketSession[id=99f7f58b-5f4a-9e3f-c2a9-c4229920b183, uri=ws://127.0.0.1:8888/ws/cq/]

java.lang.NullPointerException: null
at net.lz1998.cq.robot.ApiHandler.onReceiveApiMessage(ApiHandler.java:33) ~[spring-cq-4.14.1.1.jar!/:4.14.1.1]
at net.lz1998.cq.websocket.WebSocketHandler.handleTextMessage(WebSocketHandler.java:106) ~[spring-cq-4.14.1.1.jar!/:4.14.1.1]
at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) ~[spring-websocket-5.2.5.RELEASE.jar!/:5.2.5.RELEASE]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.