# grejlovescode/grej-discord-server-cloner architecture

> Architecture diagram of the GitHub repository grejlovescode/grej-discord-server-cloner, 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/grejlovescode/grej-discord-server-cloner
- Repository: https://github.com/grejlovescode/grej-discord-server-cloner

## Overview

GREJ Server Cloner is an interactive Python selfbot for copying selected Discord server structure and content into a server the user controls. The principal workflow is: configure authentication and source/target IDs in the terminal UI, choose clone and cleanup options, then run the cloner to fetch source data, optionally clear the target, and recreate selected resources. Distinct stages include server settings, roles, channel hierarchy and permissions, emojis, stickers, and optional webhook-based message copying. The shared API wrapper handles Discord REST calls, rate-limit retries, and CDN downloads. README features are included where implementation excerpts are incomplete.

Main entry points: [`api.py`](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/api.py) (Discord API Client), [`cloner.py`](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py) (Clone Runner), [`main.py`](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/main.py) (Interactive TUI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Setup and Interface"]
  node_tui["Interactive TUI<br/>[main.py]"]
  node_config["Saved Config<br/>[main.py]"]
end

subgraph group_orchestration["Clone Orchestration"]
  node_clone_run["Clone Runner<br/>[cloner.py]"]
  node_cleanup["Target Cleanup<br/>[cloner.py]"]
end

subgraph group_resources["Clone Resources"]
  node_server_settings["Server Settings<br/>[cloner.py]"]
  node_roles["Roles<br/>[cloner.py]"]
  node_channels["Categories and Channels<br/>[cloner.py]"]
  node_permissions["Permission Overwrites<br/>[cloner.py]"]
  node_emojis["Emojis<br/>[cloner.py]"]
  node_stickers["Stickers<br/>[cloner.py]"]
  node_messages["Message Copying<br/>[cloner.py]"]
end

subgraph group_connectors["External Access"]
  node_api["Discord API Client<br/>[api.py]"]
  node_discord["Discord"]
  node_cdn["Discord CDN"]
end

node_operator(("Operator"))

node_operator -->|"provides choices"| node_tui
node_tui -->|"loads and saves"| node_config
node_tui -->|"validates token"| node_api
node_tui -->|"starts run"| node_clone_run
node_clone_run -->|"optionally clears"| node_cleanup
node_clone_run -->|"dispatches"| node_server_settings
node_clone_run -->|"dispatches"| node_roles
node_clone_run -->|"dispatches"| node_channels
node_clone_run -->|"dispatches"| node_emojis
node_clone_run -->|"dispatches"| node_stickers
node_clone_run -->|"optionally dispatches"| node_messages
node_channels -->|"maps overwrites"| node_permissions
node_cleanup -->|"deletes resources"| node_api
node_server_settings -->|"reads and updates"| node_api
node_roles -->|"reads and creates"| node_api
node_channels -->|"reads and creates"| node_api
node_emojis -->|"reads and creates"| node_api
node_stickers -->|"reads and uploads"| node_api
node_messages -->|"reads and reposts"| node_api
node_api -->|"sends REST requests"| node_discord
node_api -->|"downloads assets"| node_cdn

click node_tui "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/main.py"
click node_config "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/main.py"
click node_clone_run "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_cleanup "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_server_settings "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_roles "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_channels "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_permissions "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_emojis "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_stickers "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_messages "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py"
click node_api "https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/api.py"

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_tui,node_config toneBlue
class node_clone_run,node_cleanup toneAmber
class node_server_settings,node_roles,node_channels,node_permissions,node_emojis,node_stickers,node_messages toneMint
class node_api,node_discord,node_cdn toneRose
class node_operator toneIndigo
```

## Components

### Setup and Interface

- [Interactive TUI](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/main.py): `main.py`
- [Saved Config](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/main.py): `main.py`

### Clone Orchestration

- [Clone Runner](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Target Cleanup](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`

### Clone Resources

- [Server Settings](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Roles](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Categories and Channels](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Permission Overwrites](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Emojis](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Stickers](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`
- [Message Copying](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/cloner.py): `cloner.py`

### External Access

- [Discord API Client](https://github.com/grejlovescode/grej-discord-server-cloner/blob/main/api.py): `api.py`
- **Discord**
- **Discord CDN**

### Other components

- **Operator**

## Connections

- Operator → Interactive TUI: provides choices
- Interactive TUI → Saved Config: loads and saves
- Interactive TUI → Discord API Client: validates token
- Interactive TUI → Clone Runner: starts run
- Clone Runner → Target Cleanup: optionally clears
- Clone Runner → Server Settings: dispatches
- Clone Runner → Roles: dispatches
- Clone Runner → Categories and Channels: dispatches
- Clone Runner → Emojis: dispatches
- Clone Runner → Stickers: dispatches
- Clone Runner → Message Copying: optionally dispatches
- Categories and Channels → Permission Overwrites: maps overwrites
- Target Cleanup → Discord API Client: deletes resources
- Server Settings → Discord API Client: reads and updates
- Roles → Discord API Client: reads and creates
- Categories and Channels → Discord API Client: reads and creates
- Emojis → Discord API Client: reads and creates
- Stickers → Discord API Client: reads and uploads
- Message Copying → Discord API Client: reads and reposts
- Discord API Client → Discord: sends REST requests
- Discord API Client → Discord CDN: downloads assets
