├── .github ├── FUNDING.yml └── workflows │ ├── maven-test.yml │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── action.md ├── event.md ├── imgs │ ├── img.png │ ├── img_1.png │ └── img_2.png ├── message.md ├── network.md ├── readme.md └── v2.md ├── pom.xml └── src ├── main └── java │ └── io │ └── github │ └── kloping │ └── qqbot │ ├── HttpClientConfig.java │ ├── Resource.java │ ├── Start0.java │ ├── Starter.java │ ├── api │ ├── AtAble.java │ ├── BotContent.java │ ├── DeleteAble.java │ ├── DirectSender.java │ ├── Intents.java │ ├── OpAble.java │ ├── Reactive.java │ ├── SendAble.java │ ├── Sender.java │ ├── SenderAndCidMidGetter.java │ ├── SenderV2.java │ ├── SessionCreator.java │ ├── event │ │ ├── ChannelEvent.java │ │ ├── ChannelUpdateEvent.java │ │ ├── ConnectedEvent.java │ │ ├── Event.java │ │ ├── GuildEvent.java │ │ ├── GuildUpdateEvent.java │ │ ├── InterActionEvent.java │ │ ├── MemberUpdateEvent.java │ │ └── ReactionEvent.java │ ├── exc │ │ └── RequestException.java │ ├── message │ │ ├── Builder.java │ │ ├── MessageChannelReceiveEvent.java │ │ ├── MessageContainsAtEvent.java │ │ ├── MessageDeleteEvent.java │ │ ├── MessageDirectReceiveEvent.java │ │ ├── MessageEvent.java │ │ ├── MessageReactionEvent.java │ │ ├── MessageReceiveEvent.java │ │ └── Pinsble.java │ └── v2 │ │ ├── FriendAdd.java │ │ ├── FriendEvent.java │ │ ├── FriendMessageEvent.java │ │ ├── GroupEvent.java │ │ ├── GroupMessageEvent.java │ │ ├── GroupOpRobotEvent.java │ │ ├── MessageV2Event.java │ │ └── V2Event.java │ ├── entities │ ├── Bot.java │ ├── Pack.java │ ├── ex │ │ ├── At.java │ │ ├── AtAll.java │ │ ├── BaseKeyVals.java │ │ ├── ChannelData.java │ │ ├── Image.java │ │ ├── Keyboard.java │ │ ├── Markdown.java │ │ ├── MessageAsyncBuilder.java │ │ ├── MessagePre.java │ │ ├── MessagePreBuilder.java │ │ ├── PlainText.java │ │ ├── enums │ │ │ └── EnvType.java │ │ └── msg │ │ │ └── MessageChain.java │ ├── exc │ │ └── QBotError.java │ ├── exceptions │ │ └── ImageUploadFailedException.java │ └── qqpd │ │ ├── Channel.java │ │ ├── ChannelType.java │ │ ├── Common.java │ │ ├── Dms.java │ │ ├── DmsRequest.java │ │ ├── Guild.java │ │ ├── InterAction.java │ │ ├── Member.java │ │ ├── MemberWithGuildID.java │ │ ├── PinsMessage.java │ │ ├── Role.java │ │ ├── Roles.java │ │ ├── User.java │ │ ├── data │ │ └── Emoji.java │ │ ├── message │ │ ├── DirectMessage.java │ │ ├── EmojiReaction.java │ │ ├── MessageAttachment.java │ │ ├── MessagePack.java │ │ ├── MessageReference.java │ │ ├── RawMessage.java │ │ ├── RawPreMessage.java │ │ └── audited │ │ │ ├── MessageAudit.java │ │ │ ├── MessageAuditData.java │ │ │ └── MessageAudited.java │ │ └── v2 │ │ ├── Contact.java │ │ ├── Friend.java │ │ ├── Group.java │ │ └── Member.java │ ├── http │ ├── AuthV2Base.java │ ├── BaseV2.java │ ├── BotBase.java │ ├── ChannelBase.java │ ├── DmsBase.java │ ├── GroupBaseV2.java │ ├── GuildBase.java │ ├── InterActionBase.java │ ├── MemberBase.java │ ├── MessageBase.java │ ├── UserBase.java │ ├── UserBaseV2.java │ └── data │ │ ├── ActionResult.java │ │ ├── MutePack.java │ │ ├── Result.java │ │ ├── Token.java │ │ ├── UrlPack.java │ │ ├── V2MsgData.java │ │ └── V2Result.java │ ├── impl │ ├── BaseChannelEvent.java │ ├── BaseChannelUpdateEvent.java │ ├── BaseConnectedEvent.java │ ├── BaseGuildEvent.java │ ├── BaseGuildUpdateEvent.java │ ├── BaseInterActionEvent.java │ ├── BaseMemberRemoveEvent.java │ ├── BaseMemberUpdateEvent.java │ ├── ListenerHost.java │ ├── MessagePacket.java │ ├── exc │ │ ├── InvalidRequestException.java │ │ └── TokenExpireException.java │ ├── message │ │ ├── BaseMessageChannelReceiveEvent.java │ │ ├── BaseMessageContainsAtEvent.java │ │ ├── BaseMessageDeleteEvent.java │ │ ├── BaseMessageDirectReceiveEvent.java │ │ ├── BaseMessageEvent.java │ │ ├── BaseMessageReactionEvent.java │ │ ├── BaseMessageReceiveEvent.java │ │ └── v2 │ │ │ ├── BaseFriendAdd.java │ │ │ ├── BaseFriendEvent.java │ │ │ ├── BaseFriendMessageEvent.java │ │ │ ├── BaseGroupAddRobotEvent.java │ │ │ ├── BaseGroupDelRobotEvent.java │ │ │ ├── BaseGroupEvent.java │ │ │ ├── BaseGroupMessageEvent.java │ │ │ ├── BaseGroupOpRobotEvent.java │ │ │ └── BaseMessageEvent.java │ └── registers │ │ ├── ChannelEventsRegister.java │ │ ├── FriendEventsRegister.java │ │ ├── GroupEventsRegister.java │ │ ├── GroupRobotEventRegister.java │ │ ├── GuildEventsRegister.java │ │ ├── InterActionEventRegister.java │ │ ├── MemberEventRegisters.java │ │ ├── MessageDeleteEventRegister.java │ │ ├── MessageEventsRegister.java │ │ └── MessageReactionEventRegister.java │ ├── interfaces │ ├── ImageUploadInterceptor.java │ ├── OnCloseListener.java │ └── OnPackReceive.java │ ├── network │ ├── AuthAndHeartbeat.java │ ├── Events.java │ ├── WebSocketListener.java │ ├── WssWorker.java │ └── hookauth │ │ ├── CustomPrivateKey.java │ │ ├── CustomPublicKey.java │ │ └── HookAuth.java │ └── utils │ ├── BaseUtils.java │ ├── InvokeUtils.java │ ├── LoggerImpl.java │ └── PdCode.java └── test └── java ├── EventsRegisterTest.java ├── test_Intents.java ├── test_bot_all.java ├── test_channel_create_delete.java ├── test_inputSendMessage.java ├── test_main.java ├── test_mute.java ├── test_onError.java ├── test_onMessage.java ├── test_sendMessage.java └── test_weather.java /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: 2 | - "Kloping" 3 | custom: 4 | - "https://kloping.top/sponsors" -------------------------------------------------------------------------------- /.github/workflows/maven-test.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time 2 | # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven 3 | 4 | # This workflow uses actions that are not certified by GitHub. 5 | # They are provided by a third-party and are governed by 6 | # separate terms of service, privacy policy, and support 7 | # documentation. 8 | 9 | name: Java CI with Maven 10 | 11 | on: 12 | push: 13 | branches: [ "group-r0" ] 14 | paths: 15 | - '**/src/test/**/*.java' 16 | pull_request: 17 | branches: [ "group-r0" ] 18 | paths: 19 | - '**/src/main/**/*.java' 20 | 21 | jobs: 22 | build: 23 | 24 | runs-on: ubuntu-latest 25 | 26 | steps: 27 | - uses: actions/checkout@v3 28 | - name: Set up JDK 11 29 | uses: actions/setup-java@v3 30 | with: 31 | java-version: '11' 32 | distribution: 'temurin' 33 | cache: maven 34 | - shell: bash 35 | name: Build with Maven 36 | env: 37 | test: ${{ secrets.SIMPLESECRET }} 38 | appid: ${{ secrets.APPID }} 39 | token: ${{ secrets.TOKEN }} 40 | run: mvn test --file pom.xml -Dappid=${appid} -Dtoken=${token} 41 | 42 | # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive 43 | - name: Update dependency graph 44 | uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6 45 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Publish package to the Maven Central Repository 2 | on: 3 | push: 4 | branches: [ "group-r0","master" ] 5 | paths: 6 | - '**/src/main/java/io/github/kloping/qqbot/impl/BaseConnectedEvent.java' 7 | 8 | jobs: 9 | publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - name: Set up Maven Central Repository 14 | uses: actions/setup-java@v2 15 | with: 16 | java-version: '8' 17 | distribution: 'adopt' 18 | server-id: central 19 | server-username: MAVEN_USERNAME 20 | server-password: MAVEN_PASSWORD 21 | - id: install-secret-key 22 | name: Install gpg secret key 23 | run: | 24 | cat <(echo -e "${{ secrets.GPG_PRIVATE_KEY }}") | gpg --batch --import 25 | gpg --list-secret-keys --keyid-format LONG 26 | - name: Publish package 27 | env: 28 | MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} 29 | MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} 30 | appid: ${{ secrets.APPID }} 31 | token: ${{ secrets.TOKEN }} 32 | run: mvn --batch-mode -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} clean deploy -P release -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs/* 2 | temp* 3 | # Project exclude paths 4 | src/test/java/temp/gs/** 5 | out/** 6 | /target/ 7 | .idea 8 | temp.log 9 | temp.json 10 | temp.http 11 | bot-qqpd-java.iml 12 | test_temp.java 13 | src/test/java/temp/* 14 | /src/test/java/test_temp_public.java 15 | /src/test/java/test_temp_private.java 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |  2 | 3 |
7 | 8 | ## QQ机器人 Java/JVM/kotlin SDK 9 | 10 | > 非官方 可用于 Java 8+ 11 | 12 | Java SDK主要基于[基础 API (opens new window)](https://bot.q.qq.com/wiki/develop/api/)封装,提供给用户一种简单、高效的使用方式。 13 | 14 | ### ✨ 特性 15 | - 支持QQ官方频道与Q群消息收发(私域/公域兼容) 16 | - 开箱即用的消息类型(文本/图片/Markdown/按钮交互) 17 | - 灵活的事件监听机制(`@EventReceiver`注解驱动) 18 | - 多环境支持(沙箱/正式环境一键切换) 19 | - 完善的HTTP API封装(频道管理、禁言、消息审核等) 20 | - 支持Java 8+及Kotlin协程环境 21 | - 支持`websocket`与`webhook`方式链接 22 | 23 | Maven 24 | 25 | ```xml 26 | 27 |CODE | 名称 | 客户端操作 | 描述 |
---|---|---|---|
0 | Dispatch | Receive | 服务端进行消息推送 |
1 | Heartbeat | Send/Receive | 客户端或服务端发送心跳 |
2 | Identify | Send | 客户端发送鉴权 |
6 | Resume | Send | 客户端恢复连接 |
7 | Reconnect | Receive | 服务端通知客户端重新连接 |
9 | Invalid Session | Receive | 当identify或resume的时候,如果参数有错,服务端会返回该消息 |
10 | Hello | Receive | 当客户端与网关建立ws连接之后,网关下发的第一条消息 |
11 | Heartbeat ACK | Receive/Reply | 当发送心跳成功之后,就会收到该消息 |
12 | HTTP Callback ACK | Reply | 仅用于 http 回调模式的回包,代表机器人收到了平台推送的数据 |