# abcliyew/xattiibot architecture

> Architecture diagram of the GitHub repository abcliyew/xattiibot, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/abcliyew/xattiibot
- Repository: https://github.com/abcliyew/xattiibot

## Overview

XatiiBot is a QQ bot whose main workflow is to receive a chat message, recognize a Bilibili link, fetch video/live/dynamic details (including short-link resolution), and reply in chat. Separate workflows manage room subscriptions and scheduled live/dynamic notifications, and provide group check-ins and fortune interactions. Services and MyBatis mappers form the internal data layer for subscriptions, sign-in records, administrators, and runtime configuration. README documents these capabilities; unsampled implementation links are shown only where documented, not inferred as detailed call chains.

Main entry points: [`src/main/java/com/esdllm/service/impl/PushInfoServiceImpl.java`](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/PushInfoServiceImpl.java) (Push scheduling), [`resources/xatiiBot.db`](https://github.com/abcliyew/xattiibot/blob/master/resources/xatiiBot.db) (Bot database), [`src/main/java/com/esdllm/service/impl/BilibiliAnalysisImpl.java`](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/BilibiliAnalysisImpl.java) (Content analysis), [`src/main/java/com/esdllm/botPlugins/BiliBiliPushPlugins.java`](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BiliBiliPushPlugins.java) (Subscription commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_parsing["Link analysis"]
  node_link_plugin["Link detection"]
  node_analysis["Content analysis"]
  node_analysis_service["Analysis service"]
end

subgraph group_push["Subscriptions and pushes"]
  node_push_plugin["Subscription commands"]
  node_push_service["Push scheduling"]
  node_push_api["Push service contract"]
  node_bili_config["Bilibili settings"]
  node_dynamic_image["Dynamic rendering"]
end

subgraph group_chat["Chat features"]
  node_signin_plugin["Check-in commands<br/>[SignInPlugins.java]"]
  node_signin_service["Check-in settlement"]
  node_fortune["Fortune interaction"]
end

subgraph group_data["Services and data"]
  node_admin_check["Admin authorization"]
  node_admin_service["Admin service"]
  node_admin_mapper["Admin mapper<br/>[AdminMapper.java]"]
  node_push_mapper["Subscription mapper"]
  node_signin_mapper["Check-in mapper"]
  node_config_loader["Runtime configuration<br/>[LoadDSConfig.java]"]
  node_config_mapper["Configuration mapper<br/>[ConfigMapper.java]"]
end

node_qq_user(("QQ user"))
node_qq{{"QQ bot platform"}}
node_bilibili{{"Bilibili platform"}}
node_db[("Bot database<br/>[xatiiBot.db]")]

node_qq_user -->|"sends messages"| node_qq
node_qq -->|"dispatches events"| node_link_plugin
node_link_plugin -->|"requests analysis"| node_analysis_service
node_analysis_service -->|"implemented by"| node_analysis
node_analysis -->|"fetches content"| node_bilibili
node_analysis -->|"replies with details"| node_qq
node_qq -->|"dispatches commands"| node_push_plugin
node_push_plugin -->|"manages subscriptions"| node_push_api
node_push_api -->|"implemented by"| node_push_service
node_push_service -->|"fetches live and dynamic data"| node_bilibili
node_push_service -->|"reads and updates subscriptions"| node_push_mapper
node_push_service -->|"sends notifications"| node_qq
node_push_service -->|"renders dynamic images"| node_dynamic_image
node_bili_config -->|"updates runtime settings"| node_config_loader
node_config_loader -->|"loads configuration"| node_config_mapper
node_config_mapper -->|"reads and writes"| node_db
node_signin_plugin -->|"records check-in"| node_signin_service
node_signin_service -->|"reads and saves records"| node_signin_mapper
node_fortune -->|"replies to chat"| node_qq
node_signin_plugin -->|"replies with status"| node_qq
node_push_plugin -->|"checks permissions"| node_admin_check
node_bili_config -->|"checks permissions"| node_admin_check
node_admin_check -->|"checks allowlist"| node_admin_service
node_admin_service -->|"queries administrators"| node_admin_mapper
node_admin_mapper -->|"reads administrator records"| node_db
node_push_mapper -->|"reads and writes"| node_db
node_signin_mapper -->|"reads and writes"| node_db

click node_db "https://github.com/abcliyew/xattiibot/blob/master/resources/xatiiBot.db"
click node_link_plugin "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BilibiliAnalysisPlugin.java"
click node_analysis "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/BilibiliAnalysisImpl.java"
click node_analysis_service "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/BilibiliAnalysis.java"
click node_push_plugin "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BiliBiliPushPlugins.java"
click node_push_service "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/PushInfoServiceImpl.java"
click node_push_api "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/PushInfoService.java"
click node_bili_config "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BiliConfigPlugins.java"
click node_dynamic_image "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/contant/BiliBiliContant.java"
click node_signin_plugin "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/SignInPlugins.java"
click node_signin_service "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/SignInRecordsServiceImpl.java"
click node_fortune "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/TodayWifePlugins.java"
click node_admin_check "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/common/BotAdminChecker.java"
click node_admin_service "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/AdminServiceImpl.java"
click node_admin_mapper "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/AdminMapper.java"
click node_push_mapper "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/PushInfoMapper.java"
click node_signin_mapper "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/SignInRecordsMapper.java"
click node_config_loader "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/config/LoadDSConfig.java"
click node_config_mapper "https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/ConfigMapper.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_link_plugin,node_analysis,node_analysis_service,node_qq_user toneBlue
class node_push_plugin,node_push_service,node_push_api,node_bili_config,node_dynamic_image,node_db toneAmber
class node_signin_plugin,node_signin_service,node_fortune toneMint
class node_admin_check,node_admin_service,node_admin_mapper,node_push_mapper,node_signin_mapper,node_config_loader,node_config_mapper toneRose
class node_qq,node_bilibili toneIndigo
```

## Components

### Link analysis

- [Link detection](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BilibiliAnalysisPlugin.java): `src/main/java/com/esdllm/botPlugins/BilibiliAnalysisPlugin.java`
- [Content analysis](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/BilibiliAnalysisImpl.java): `src/main/java/com/esdllm/service/impl/BilibiliAnalysisImpl.java`
- [Analysis service](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/BilibiliAnalysis.java): `src/main/java/com/esdllm/service/BilibiliAnalysis.java`

### Subscriptions and pushes

- [Subscription commands](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BiliBiliPushPlugins.java): `src/main/java/com/esdllm/botPlugins/BiliBiliPushPlugins.java`
- [Push scheduling](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/PushInfoServiceImpl.java): `src/main/java/com/esdllm/service/impl/PushInfoServiceImpl.java`
- [Push service contract](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/PushInfoService.java): `src/main/java/com/esdllm/service/PushInfoService.java`
- [Bilibili settings](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/BiliConfigPlugins.java): `src/main/java/com/esdllm/botPlugins/BiliConfigPlugins.java`
- [Dynamic rendering](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/contant/BiliBiliContant.java): `src/main/java/com/esdllm/contant/BiliBiliContant.java`

### Chat features

- [Check-in commands](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/SignInPlugins.java): `src/main/java/com/esdllm/botPlugins/SignInPlugins.java`
- [Check-in settlement](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/SignInRecordsServiceImpl.java): `src/main/java/com/esdllm/service/impl/SignInRecordsServiceImpl.java`
- [Fortune interaction](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/botPlugins/TodayWifePlugins.java): `src/main/java/com/esdllm/botPlugins/TodayWifePlugins.java`

### Services and data

- [Admin authorization](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/common/BotAdminChecker.java): `src/main/java/com/esdllm/common/BotAdminChecker.java`
- [Admin service](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/service/impl/AdminServiceImpl.java): `src/main/java/com/esdllm/service/impl/AdminServiceImpl.java`
- [Admin mapper](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/AdminMapper.java): `src/main/java/com/esdllm/mapper/AdminMapper.java`
- [Subscription mapper](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/PushInfoMapper.java): `src/main/java/com/esdllm/mapper/PushInfoMapper.java`
- [Check-in mapper](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/SignInRecordsMapper.java): `src/main/java/com/esdllm/mapper/SignInRecordsMapper.java`
- [Runtime configuration](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/config/LoadDSConfig.java): `src/main/java/com/esdllm/config/LoadDSConfig.java`
- [Configuration mapper](https://github.com/abcliyew/xattiibot/blob/master/src/main/java/com/esdllm/mapper/ConfigMapper.java): `src/main/java/com/esdllm/mapper/ConfigMapper.java`

### Other components

- **QQ user**
- **QQ bot platform**
- **Bilibili platform**
- [Bot database](https://github.com/abcliyew/xattiibot/blob/master/resources/xatiiBot.db): `resources/xatiiBot.db`

## Connections

- QQ user → QQ bot platform: sends messages
- QQ bot platform → Link detection: dispatches events
- Link detection → Analysis service: requests analysis
- Analysis service → Content analysis: implemented by
- Content analysis → Bilibili platform: fetches content
- Content analysis → QQ bot platform: replies with details
- QQ bot platform → Subscription commands: dispatches commands
- Subscription commands → Push service contract: manages subscriptions
- Push service contract → Push scheduling: implemented by
- Push scheduling → Bilibili platform: fetches live and dynamic data
- Push scheduling → Subscription mapper: reads and updates subscriptions
- Push scheduling → QQ bot platform: sends notifications
- Push scheduling → Dynamic rendering: renders dynamic images
- Bilibili settings → Runtime configuration: updates runtime settings
- Runtime configuration → Configuration mapper: loads configuration
- Configuration mapper → Bot database: reads and writes
- Check-in commands → Check-in settlement: records check-in
- Check-in settlement → Check-in mapper: reads and saves records
- Fortune interaction → QQ bot platform: replies to chat
- Check-in commands → QQ bot platform: replies with status
- Subscription commands → Admin authorization: checks permissions
- Bilibili settings → Admin authorization: checks permissions
- Admin authorization → Admin service: checks allowlist
- Admin service → Admin mapper: queries administrators
- Admin mapper → Bot database: reads administrator records
- Subscription mapper → Bot database: reads and writes
- Check-in mapper → Bot database: reads and writes
