# djkieranl29/ben-cogs architecture

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

- Interactive diagram: https://gitdiagram.com/djkieranl29/ben-cogs
- Repository: https://github.com/djkieranl29/ben-cogs

## Overview

BenCos17’s cogs are a collection of independent Red-DiscordBot extensions, not one end-to-end application. Users invoke features through Discord; notable domains include aircraft tracking, support tickets, games, weather and telemetry, and utility or media commands. SkySearch is the largest subsystem: its cog coordinates commands, dashboard integration, API support, and utilities. The graph preserves documented-by-tree product branches, but most cogs were not sampled, so their internal relationships are omitted rather than inferred.

Main entry points: [`skysearch/skysearch.py`](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/skysearch.py) (SkySearch Cog), [`skysearch/commands/aircraft.py`](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/aircraft.py) (Aircraft Commands), [`skysearch/commands/airport.py`](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/airport.py) (Airport Commands), [`skysearch/utils/helpers.py`](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/helpers.py) (Aircraft Helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_aircraft["Aircraft Tracking"]
  node_skysearch["SkySearch Cog<br/>[skysearch.py]"]
  node_aircraft_commands["Aircraft Commands<br/>[aircraft.py]"]
  node_airport_commands["Airport Commands<br/>[airport.py]"]
  node_admin_commands["Admin Commands<br/>[admin.py]"]
  node_aircraft_api["Aircraft API<br/>[api.py]"]
  node_aircraft_helpers["Aircraft Helpers<br/>[helpers.py]"]
  node_aircraft_export["Data Export<br/>[export.py]"]
  node_aircraft_stats["Usage Statistics<br/>[stats.py]"]
  node_watchlist_view["Watchlist View"]
  node_xml_parser["XML Parser<br/>[xml_parser.py]"]
  node_squawk_api["Squawk API Hooks<br/>[squawk_api.py]"]
  node_command_api["Command Hooks<br/>[command_api.py]"]
  node_skysearch_dashboard["Aircraft Dashboard"]
  node_airframes["Airframes<br/>[airframes.py]"]
end

subgraph group_community["Community Features"]
  node_contact["Support Tickets<br/>[contact.py]"]
  node_contact_dashboard["Ticket Dashboard<br/>[dashboard.py]"]
end

subgraph group_environment["Weather and Telemetry"]
  node_lightning["Lightning Cog<br/>[lightning.py]"]
  node_map_parser["Map Link Parser<br/>[map_parser.py]"]
  node_radiosonde["Radiosonde Tracking<br/>[radiosonde.py]"]
  node_radiosonde_dashboard["Sonde Dashboard<br/>[dashboard.py]"]
  node_iss["ISS Information<br/>[iss.py]"]
end

subgraph group_games["Games and Content"]
  node_blood_clocktower["Blood on the Clocktower"]
  node_bible["Bible<br/>[bible.py]"]
  node_image_manipulation["Image Manipulation"]
  node_xkcd["xkcd<br/>[xkcd.py]"]
end

subgraph group_utilities["Server Utilities"]
  node_counter["Counter<br/>[counter.py]"]
  node_servertools["Server Tools<br/>[servertools.py]"]
  node_spamatron["Spam Control<br/>[spamatron.py]"]
  node_talknotifier["Talk Notifier<br/>[talknotifier.py]"]
end

node_discord_users(("Discord Users"))

node_skysearch -->|"registers commands"| node_aircraft_commands
node_skysearch -->|"registers commands"| node_airport_commands
node_skysearch -->|"registers commands"| node_admin_commands
node_skysearch -->|"uses API"| node_aircraft_api
node_skysearch -->|"uses helpers"| node_aircraft_helpers
node_skysearch -->|"uses export"| node_aircraft_export
node_skysearch -->|"uses statistics"| node_aircraft_stats
node_skysearch -->|"integrates dashboard"| node_skysearch_dashboard
node_skysearch -->|"uses hooks"| node_squawk_api
node_skysearch -->|"uses hooks"| node_command_api
node_aircraft_commands -->|"requests aircraft data"| node_aircraft_api
node_aircraft_commands -->|"uses helpers"| node_aircraft_helpers
node_aircraft_commands -->|"uses export"| node_aircraft_export
node_admin_commands -->|"reads statistics"| node_aircraft_stats
node_airport_commands -->|"requests data"| node_aircraft_api
node_airport_commands -->|"uses helpers"| node_aircraft_helpers
node_airport_commands -->|"parses XML"| node_xml_parser
node_aircraft_helpers -->|"uses view"| node_watchlist_view
node_lightning -->|"parses map links"| node_map_parser
node_radiosonde -->|"integrates dashboard"| node_radiosonde_dashboard
node_discord_users -.->|"use commands"| node_skysearch
node_discord_users -.->|"use commands"| node_contact

click node_skysearch "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/skysearch.py"
click node_aircraft_commands "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/aircraft.py"
click node_airport_commands "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/airport.py"
click node_admin_commands "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/admin.py"
click node_aircraft_api "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/api.py"
click node_aircraft_helpers "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/helpers.py"
click node_aircraft_export "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/export.py"
click node_aircraft_stats "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/stats.py"
click node_watchlist_view "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/add_to_watchlist_view.py"
click node_xml_parser "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/xml_parser.py"
click node_squawk_api "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/api/squawk_api.py"
click node_command_api "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/api/command_api.py"
click node_skysearch_dashboard "https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/dashboard/dashboard_integration.py"
click node_contact "https://github.com/djkieranl29/ben-cogs/blob/main/contact/contact.py"
click node_contact_dashboard "https://github.com/djkieranl29/ben-cogs/blob/main/contact/dashboard.py"
click node_blood_clocktower "https://github.com/djkieranl29/ben-cogs/blob/main/bloodontheclocktower/bloodontheclocktower.py"
click node_lightning "https://github.com/djkieranl29/ben-cogs/blob/main/lightning/lightning.py"
click node_map_parser "https://github.com/djkieranl29/ben-cogs/blob/main/lightning/services/map_parser.py"
click node_radiosonde "https://github.com/djkieranl29/ben-cogs/blob/main/radiosonde/radiosonde.py"
click node_radiosonde_dashboard "https://github.com/djkieranl29/ben-cogs/blob/main/radiosonde/dashboard.py"
click node_iss "https://github.com/djkieranl29/ben-cogs/blob/main/iss/iss.py"
click node_airframes "https://github.com/djkieranl29/ben-cogs/blob/main/airframes/airframes.py"
click node_bible "https://github.com/djkieranl29/ben-cogs/blob/main/bible/bible.py"
click node_counter "https://github.com/djkieranl29/ben-cogs/blob/main/counter/counter.py"
click node_servertools "https://github.com/djkieranl29/ben-cogs/blob/main/servertools/servertools.py"
click node_image_manipulation "https://github.com/djkieranl29/ben-cogs/blob/main/imagemanipulation/imagemanipulation.py"
click node_xkcd "https://github.com/djkieranl29/ben-cogs/blob/main/xkcd/xkcd.py"
click node_spamatron "https://github.com/djkieranl29/ben-cogs/blob/main/spamatron/spamatron.py"
click node_talknotifier "https://github.com/djkieranl29/ben-cogs/blob/main/talknotifier/talknotifier.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_skysearch,node_aircraft_commands,node_airport_commands,node_admin_commands,node_aircraft_api,node_aircraft_helpers,node_aircraft_export,node_aircraft_stats,node_watchlist_view,node_xml_parser,node_squawk_api,node_command_api,node_skysearch_dashboard,node_airframes,node_discord_users toneBlue
class node_contact,node_contact_dashboard toneAmber
class node_lightning,node_map_parser,node_radiosonde,node_radiosonde_dashboard,node_iss toneMint
class node_blood_clocktower,node_bible,node_image_manipulation,node_xkcd toneRose
class node_counter,node_servertools,node_spamatron,node_talknotifier toneIndigo
```

## Components

### Aircraft Tracking

- [SkySearch Cog](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/skysearch.py): `skysearch/skysearch.py`
- [Aircraft Commands](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/aircraft.py): `skysearch/commands/aircraft.py`
- [Airport Commands](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/airport.py): `skysearch/commands/airport.py`
- [Admin Commands](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/commands/admin.py): `skysearch/commands/admin.py`
- [Aircraft API](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/api.py): `skysearch/utils/api.py`
- [Aircraft Helpers](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/helpers.py): `skysearch/utils/helpers.py`
- [Data Export](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/export.py): `skysearch/utils/export.py`
- [Usage Statistics](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/stats.py): `skysearch/utils/stats.py`
- [Watchlist View](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/add_to_watchlist_view.py): `skysearch/utils/add_to_watchlist_view.py`
- [XML Parser](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/utils/xml_parser.py): `skysearch/utils/xml_parser.py`
- [Squawk API Hooks](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/api/squawk_api.py): `skysearch/api/squawk_api.py`
- [Command Hooks](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/api/command_api.py): `skysearch/api/command_api.py`
- [Aircraft Dashboard](https://github.com/djkieranl29/ben-cogs/blob/main/skysearch/dashboard/dashboard_integration.py): `skysearch/dashboard/dashboard_integration.py`
- [Airframes](https://github.com/djkieranl29/ben-cogs/blob/main/airframes/airframes.py): `airframes/airframes.py`

### Community Features

- [Support Tickets](https://github.com/djkieranl29/ben-cogs/blob/main/contact/contact.py): `contact/contact.py`
- [Ticket Dashboard](https://github.com/djkieranl29/ben-cogs/blob/main/contact/dashboard.py): `contact/dashboard.py`

### Weather and Telemetry

- [Lightning Cog](https://github.com/djkieranl29/ben-cogs/blob/main/lightning/lightning.py): `lightning/lightning.py`
- [Map Link Parser](https://github.com/djkieranl29/ben-cogs/blob/main/lightning/services/map_parser.py): `lightning/services/map_parser.py`
- [Radiosonde Tracking](https://github.com/djkieranl29/ben-cogs/blob/main/radiosonde/radiosonde.py): `radiosonde/radiosonde.py`
- [Sonde Dashboard](https://github.com/djkieranl29/ben-cogs/blob/main/radiosonde/dashboard.py): `radiosonde/dashboard.py`
- [ISS Information](https://github.com/djkieranl29/ben-cogs/blob/main/iss/iss.py): `iss/iss.py`

### Games and Content

- [Blood on the Clocktower](https://github.com/djkieranl29/ben-cogs/blob/main/bloodontheclocktower/bloodontheclocktower.py): `bloodontheclocktower/bloodontheclocktower.py`
- [Bible](https://github.com/djkieranl29/ben-cogs/blob/main/bible/bible.py): `bible/bible.py`
- [Image Manipulation](https://github.com/djkieranl29/ben-cogs/blob/main/imagemanipulation/imagemanipulation.py): `imagemanipulation/imagemanipulation.py`
- [xkcd](https://github.com/djkieranl29/ben-cogs/blob/main/xkcd/xkcd.py): `xkcd/xkcd.py`

### Server Utilities

- [Counter](https://github.com/djkieranl29/ben-cogs/blob/main/counter/counter.py): `counter/counter.py`
- [Server Tools](https://github.com/djkieranl29/ben-cogs/blob/main/servertools/servertools.py): `servertools/servertools.py`
- [Spam Control](https://github.com/djkieranl29/ben-cogs/blob/main/spamatron/spamatron.py): `spamatron/spamatron.py`
- [Talk Notifier](https://github.com/djkieranl29/ben-cogs/blob/main/talknotifier/talknotifier.py): `talknotifier/talknotifier.py`

### Other components

- **Discord Users**

## Connections

- SkySearch Cog → Aircraft Commands: registers commands (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Airport Commands: registers commands (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Admin Commands: registers commands (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Aircraft API: uses API (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Aircraft Helpers: uses helpers (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Data Export: uses export (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Usage Statistics: uses statistics (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Aircraft Dashboard: integrates dashboard (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Squawk API Hooks: uses hooks (evidence: `skysearch/skysearch.py`)
- SkySearch Cog → Command Hooks: uses hooks (evidence: `skysearch/skysearch.py`)
- Aircraft Commands → Aircraft API: requests aircraft data (evidence: `skysearch/commands/aircraft.py`)
- Aircraft Commands → Aircraft Helpers: uses helpers (evidence: `skysearch/commands/aircraft.py`)
- Aircraft Commands → Data Export: uses export (evidence: `skysearch/commands/aircraft.py`)
- Admin Commands → Usage Statistics: reads statistics (evidence: `skysearch/commands/admin.py`)
- Airport Commands → Aircraft API: requests data (evidence: `skysearch/commands/airport.py`)
- Airport Commands → Aircraft Helpers: uses helpers (evidence: `skysearch/commands/airport.py`)
- Airport Commands → XML Parser: parses XML (evidence: `skysearch/commands/airport.py`)
- Aircraft Helpers → Watchlist View: uses view (evidence: `skysearch/utils/helpers.py`)
- Lightning Cog → Map Link Parser: parses map links (evidence: `lightning/lightning.py`)
- Radiosonde Tracking → Sonde Dashboard: integrates dashboard (evidence: `radiosonde/radiosonde.py`)
- Discord Users → SkySearch Cog: use commands (evidence: `README.md`)
- Discord Users → Support Tickets: use commands (evidence: `README.md`)
