# leftydrummer/dinkybot architecture

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

- Interactive diagram: https://gitdiagram.com/leftydrummer/dinkybot
- Repository: https://github.com/leftydrummer/dinkybot

## Overview

DinkyBot is a Discord community bot. Members invoke commands or interact with Discord events; the bot routes those requests to features such as GIF posting, podcast lookup, and video-link processing, then responds in Discord. It also performs community setup and onboarding. The excerpts show several utility implementations, but not the full bot or all runtime wiring, so unsampled behavior is represented only where documented or indexed.

Main entry points: [`dinkybot.py`](https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py) (Bot Events And Commands), [`utils.py`](https://github.com/leftydrummer/dinkybot/blob/main/utils.py) (Video Link Modal), [`constants.py`](https://github.com/leftydrummer/dinkybot/blob/main/constants.py) (Bot Constants), [`onboarding.py`](https://github.com/leftydrummer/dinkybot/blob/main/onboarding.py) (Regional Role Selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Bot Runtime"]
  node_bot["Bot Events And Commands<br/>[dinkybot.py]"]
  node_settings["Bot Constants<br/>[constants.py]"]
end

subgraph group_community["Community Onboarding"]
  node_server_setup["Server Setup<br/>[dinkybot.py]"]
  node_onboarding_dispatch["Onboarding Dispatch<br/>[utils.py]"]
  node_role_view["Regional Role Selection<br/>[onboarding.py]"]
end

subgraph group_podcast["Podcast Features"]
  node_podcast_monitor["Episode Monitoring<br/>[dinkybot.py]"]
  node_episode_search["Episode Search<br/>[utils.py]"]
  node_episode_embed["Episode Embeds<br/>[utils.py]"]
  node_episode_alert["Episode Alerts<br/>[utils.py]"]
end

subgraph group_media["Media Utilities"]
  node_asset_posting["GIF And Asset Posting<br/>[utils.py]"]
  node_video_modal["Video Link Modal<br/>[utils.py]"]
  node_video_check["Video Support Check<br/>[utils.py]"]
  node_video_download["Video Download<br/>[utils.py]"]
  node_video_compress["Video Compression<br/>[utils.py]"]
end

node_members(("Discord Members"))
node_discord["Discord Platform"]

node_members -->|"use bot"| node_discord
node_discord -->|"delivers events"| node_bot
node_bot -->|"reads settings"| node_settings
node_bot -->|"runs setup"| node_server_setup
node_bot -->|"sends onboarding"| node_onboarding_dispatch
node_onboarding_dispatch -.->|"uses role view"| node_role_view
node_bot -->|"checks episodes"| node_podcast_monitor
node_bot -->|"searches episodes"| node_episode_search
node_bot -->|"builds embeds"| node_episode_embed
node_bot -->|"posts alerts"| node_episode_alert
node_bot -->|"posts assets"| node_asset_posting
node_bot -->|"opens modal"| node_video_modal
node_video_modal -->|"checks link"| node_video_check
node_video_modal -->|"downloads video"| node_video_download
node_video_modal -->|"compresses upload"| node_video_compress
node_bot -->|"sends responses"| node_discord

click node_bot "https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py"
click node_settings "https://github.com/leftydrummer/dinkybot/blob/main/constants.py"
click node_server_setup "https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py"
click node_onboarding_dispatch "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_role_view "https://github.com/leftydrummer/dinkybot/blob/main/onboarding.py"
click node_podcast_monitor "https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py"
click node_episode_search "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_episode_embed "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_episode_alert "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_asset_posting "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_video_modal "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_video_check "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_video_download "https://github.com/leftydrummer/dinkybot/blob/main/utils.py"
click node_video_compress "https://github.com/leftydrummer/dinkybot/blob/main/utils.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_bot,node_settings toneBlue
class node_server_setup,node_onboarding_dispatch,node_role_view toneAmber
class node_podcast_monitor,node_episode_search,node_episode_embed,node_episode_alert toneMint
class node_asset_posting,node_video_modal,node_video_check,node_video_download,node_video_compress toneRose
class node_members,node_discord toneIndigo
```

## Components

### Bot Runtime

- [Bot Events And Commands](https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py): `dinkybot.py`
- [Bot Constants](https://github.com/leftydrummer/dinkybot/blob/main/constants.py): `constants.py`

### Community Onboarding

- [Server Setup](https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py): `dinkybot.py`
- [Onboarding Dispatch](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Regional Role Selection](https://github.com/leftydrummer/dinkybot/blob/main/onboarding.py): `onboarding.py`

### Podcast Features

- [Episode Monitoring](https://github.com/leftydrummer/dinkybot/blob/main/dinkybot.py): `dinkybot.py`
- [Episode Search](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Episode Embeds](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Episode Alerts](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`

### Media Utilities

- [GIF And Asset Posting](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Video Link Modal](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Video Support Check](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Video Download](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`
- [Video Compression](https://github.com/leftydrummer/dinkybot/blob/main/utils.py): `utils.py`

### Other components

- **Discord Members**
- **Discord Platform**

## Connections

- Discord Members → Discord Platform: use bot (evidence: `README.md`)
- Discord Platform → Bot Events And Commands: delivers events (evidence: `dinkybot.py`)
- Bot Events And Commands → Bot Constants: reads settings (evidence: `dinkybot.py`)
- Bot Events And Commands → Server Setup: runs setup (evidence: `dinkybot.py`)
- Bot Events And Commands → Onboarding Dispatch: sends onboarding (evidence: `dinkybot.py`)
- Onboarding Dispatch → Regional Role Selection: uses role view (evidence: `utils.py`)
- Bot Events And Commands → Episode Monitoring: checks episodes (evidence: `dinkybot.py`)
- Bot Events And Commands → Episode Search: searches episodes (evidence: `dinkybot.py`)
- Bot Events And Commands → Episode Embeds: builds embeds (evidence: `dinkybot.py`)
- Bot Events And Commands → Episode Alerts: posts alerts (evidence: `dinkybot.py`)
- Bot Events And Commands → GIF And Asset Posting: posts assets (evidence: `dinkybot.py`)
- Bot Events And Commands → Video Link Modal: opens modal (evidence: `dinkybot.py`)
- Video Link Modal → Video Support Check: checks link (evidence: `utils.py`)
- Video Link Modal → Video Download: downloads video (evidence: `utils.py`)
- Video Link Modal → Video Compression: compresses upload (evidence: `utils.py`)
- Bot Events And Commands → Discord Platform: sends responses (evidence: `dinkybot.py`)
