# deliasama/starbot architecture

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

- Interactive diagram: https://gitdiagram.com/deliasama/starbot
- Repository: https://github.com/deliasama/starbot

## Overview

StarBot is a Discord bot with a guild-based virtual economy and town game. The main user workflow is a slash-command interaction routed through command dispatch to a feature command, which reads or updates a member’s profile, items, daily rewards, or buildings and replies in Discord. Separate branches cover trading and stock history, birthday announcements, guild configuration, and interactive town menus. Paths and connections for unsampled features are limited to what the file tree and sampled code support; no README was provided.

Main entry points: [`src/main/java/de/delia/starBot/database/Table.java`](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/database/Table.java) (Feature tables), [`src/main/java/de/delia/starBot/features/stars/commands/DailyCommand.java`](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/commands/DailyCommand.java) (Daily rewards), [`src/main/java/de/delia/starBot/features/stars/StarProfileManager.java`](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/StarProfileManager.java) (Star profiles), [`src/main/java/de/delia/starBot/features/birthday/BirthdayManager.java`](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/birthday/BirthdayManager.java) (Birthday scheduler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Bot runtime"]
  node_main["Application startup<br/>[Main.java]"]
  node_bot["Bot setup<br/>[Bot.java]"]
  node_slashlistener["Slash interaction listener"]
  node_commands["Command dispatch"]
  node_menus["Interactive menus<br/>[EmbedMenu.java]"]
  node_guildready["Guild ready"]
end

subgraph group_economy["Stars economy"]
  node_daily["Daily rewards<br/>[DailyCommand.java]"]
  node_profiles["Star profiles"]
  node_items["Member items<br/>[Item.java]"]
  node_trading["Trading and stock<br/>[TradeManager.java]"]
end

subgraph group_town["Town game"]
  node_townmenu["Town interface<br/>[TownMenu.java]"]
  node_buildings["Town buildings<br/>[Building.java]"]
  node_mine["Mining gameplay<br/>[Mine.java]"]
  node_inventory["Inventory command"]
end

subgraph group_community["Guild features"]
  node_birthdaycommand["Birthday management"]
  node_birthdaymanager["Birthday scheduler"]
  node_guildconfig["Guild settings<br/>[ConfigCommand.java]"]
end

subgraph group_persistence["Persistence"]
  node_persistence["Entity manager"]
  node_tables[("Feature tables<br/>[Table.java]")]
end

node_member(("Discord member"))
node_discord{{"Discord API"}}

node_member -->|"issues commands"| node_discord
node_discord -->|"delivers interaction"| node_slashlistener
node_slashlistener -->|"dispatches command"| node_commands
node_commands -->|"invokes command"| node_daily
node_daily -->|"loads and updates"| node_profiles
node_daily -->|"updates pickaxe"| node_items
node_daily -->|"loads town hall"| node_buildings
node_daily -->|"replies with reward"| node_discord
node_main -->|"creates bot"| node_bot
node_main -->|"initializes tables"| node_bot
node_guildready -->|"upserts commands"| node_commands
node_guildready -->|"creates manager"| node_trading
node_profiles -->|"loads and updates"| node_tables
node_profiles -->|"loads member items"| node_items
node_items -->|"reads and writes"| node_tables
node_trading -->|"reads and updates"| node_tables
node_trading -->|"sends trade results"| node_discord
node_townmenu -->|"loads buildings"| node_buildings
node_townmenu -->|"renders menu"| node_discord
node_mine -->|"loads profile"| node_profiles
node_mine -->|"updates mine view"| node_discord
node_inventory -->|"shows inventory"| node_discord
node_birthdaymanager -->|"finds birthdays"| node_tables
node_birthdaymanager -->|"reads channel setting"| node_guildconfig
node_birthdaymanager -->|"announces birthday"| node_discord
node_birthdaycommand -->|"manages birthdays"| node_tables
node_guildconfig -->|"stores settings"| node_tables
node_persistence -->|"provides entity access"| node_tables

click node_main "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/main/Main.java"
click node_bot "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/main/Bot.java"
click node_slashlistener "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/listeners/SlashCommandInteractionListener.java"
click node_commands "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/commands/CommandManager.java"
click node_menus "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/menus/EmbedMenu.java"
click node_guildready "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/listeners/GuildReadyListener.java"
click node_daily "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/commands/DailyCommand.java"
click node_profiles "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/StarProfileManager.java"
click node_items "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/items/Item.java"
click node_trading "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/TradeManager.java"
click node_townmenu "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/menus/TownMenu.java"
click node_buildings "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/Building.java"
click node_mine "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/Mine.java"
click node_inventory "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/items/commands/InventoryCommand.java"
click node_birthdaycommand "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/birthday/BirthdayCommand.java"
click node_birthdaymanager "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/birthday/BirthdayManager.java"
click node_guildconfig "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/guildConfig/ConfigCommand.java"
click node_persistence "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/database/CustomEntityManager.java"
click node_tables "https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/database/Table.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_main,node_bot,node_slashlistener,node_commands,node_menus,node_guildready toneBlue
class node_daily,node_profiles,node_items,node_trading toneAmber
class node_townmenu,node_buildings,node_mine,node_inventory,node_discord toneMint
class node_birthdaycommand,node_birthdaymanager,node_guildconfig toneRose
class node_persistence,node_tables,node_member toneIndigo
```

## Components

### Bot runtime

- [Application startup](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/main/Main.java): `src/main/java/de/delia/starBot/main/Main.java`
- [Bot setup](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/main/Bot.java): `src/main/java/de/delia/starBot/main/Bot.java`
- [Slash interaction listener](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/listeners/SlashCommandInteractionListener.java): `src/main/java/de/delia/starBot/listeners/SlashCommandInteractionListener.java`
- [Command dispatch](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/commands/CommandManager.java): `src/main/java/de/delia/starBot/commands/CommandManager.java`
- [Interactive menus](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/menus/EmbedMenu.java): `src/main/java/de/delia/starBot/menus/EmbedMenu.java`
- [Guild ready](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/listeners/GuildReadyListener.java): `src/main/java/de/delia/starBot/listeners/GuildReadyListener.java`

### Stars economy

- [Daily rewards](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/commands/DailyCommand.java): `src/main/java/de/delia/starBot/features/stars/commands/DailyCommand.java`
- [Star profiles](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/StarProfileManager.java): `src/main/java/de/delia/starBot/features/stars/StarProfileManager.java`
- [Member items](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/items/Item.java): `src/main/java/de/delia/starBot/features/items/Item.java`
- [Trading and stock](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/TradeManager.java): `src/main/java/de/delia/starBot/features/stars/TradeManager.java`

### Town game

- [Town interface](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/menus/TownMenu.java): `src/main/java/de/delia/starBot/features/stars/town/menus/TownMenu.java`
- [Town buildings](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/Building.java): `src/main/java/de/delia/starBot/features/stars/town/Building.java`
- [Mining gameplay](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/stars/town/Mine.java): `src/main/java/de/delia/starBot/features/stars/town/Mine.java`
- [Inventory command](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/items/commands/InventoryCommand.java): `src/main/java/de/delia/starBot/features/items/commands/InventoryCommand.java`

### Guild features

- [Birthday management](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/birthday/BirthdayCommand.java): `src/main/java/de/delia/starBot/features/birthday/BirthdayCommand.java`
- [Birthday scheduler](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/features/birthday/BirthdayManager.java): `src/main/java/de/delia/starBot/features/birthday/BirthdayManager.java`
- [Guild settings](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/guildConfig/ConfigCommand.java): `src/main/java/de/delia/starBot/guildConfig/ConfigCommand.java`

### Persistence

- [Entity manager](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/database/CustomEntityManager.java): `src/main/java/de/delia/starBot/database/CustomEntityManager.java`
- [Feature tables](https://github.com/deliasama/starbot/blob/master/src/main/java/de/delia/starBot/database/Table.java): `src/main/java/de/delia/starBot/database/Table.java`

### Other components

- **Discord member**
- **Discord API**

## Connections

- Discord member → Discord API: issues commands
- Discord API → Slash interaction listener: delivers interaction
- Slash interaction listener → Command dispatch: dispatches command
- Command dispatch → Daily rewards: invokes command
- Daily rewards → Star profiles: loads and updates
- Daily rewards → Member items: updates pickaxe
- Daily rewards → Town buildings: loads town hall
- Daily rewards → Discord API: replies with reward
- Application startup → Bot setup: creates bot
- Application startup → Bot setup: initializes tables
- Guild ready → Command dispatch: upserts commands
- Guild ready → Trading and stock: creates manager
- Star profiles → Feature tables: loads and updates
- Star profiles → Member items: loads member items
- Member items → Feature tables: reads and writes
- Trading and stock → Feature tables: reads and updates
- Trading and stock → Discord API: sends trade results
- Town interface → Town buildings: loads buildings
- Town interface → Discord API: renders menu
- Mining gameplay → Star profiles: loads profile
- Mining gameplay → Discord API: updates mine view
- Inventory command → Discord API: shows inventory
- Birthday scheduler → Feature tables: finds birthdays
- Birthday scheduler → Guild settings: reads channel setting
- Birthday scheduler → Discord API: announces birthday
- Birthday management → Feature tables: manages birthdays
- Guild settings → Feature tables: stores settings
- Entity manager → Feature tables: provides entity access
