How liebenholz/ohaasa-daily-discord works
Ohaasa is a Korean-language Discord horoscope bot. Its daily workflow collects and parses the Japanese ranking, translates and stores horoscope data, then sends ranked embeds to configured server channels. Discord slash-command requests return sign-specific details, while separate commands manage notification channels. The product also provides scheduled source-health checks and monthly/annual ranking reports. The graph follows README-described flows and sampled imports/calls; some feature details are documented but their implementation was not sampled.
Main entry points: notifier.py Bot Notifier · main.py Collect and Parse · index.py Interaction Handler · data Horoscope Files
Components 19
Daily Horoscope
- Collect and Parse
main.py - Translate Content
main.py
Discord Interactions
- Bot Notifier
notifier.py - Interaction Handler
api/index.py
Health Monitoring
- Health Request
health_entry.py - QStash Verifier
qstash_verify.py - Source Health Check
source_health.py - Weekend Relay
source_relay.py
Ranking Reports
- Ranking Aggregates
ranking_stats.py - Monthly Report
monthly_stats.py - Annual Report
annual_stats.py
Shared State
- Horoscope Files
data - Channel Registry
channels.py
Other components
- Daily Scheduler
- Discord App
- Discord User
- QStash Scheduler
- Horoscope Sites
- DeepL API
Connections 31
- Daily Scheduler → Collect and Parse: starts crawl
README.md - Collect and Parse → Horoscope Sites: fetches pages
README.md - Collect and Parse → Weekend Relay: requests weekend HTML
README.md - Collect and Parse → Translate Content: passes parsed text
README.md - Translate Content → DeepL API: batch translates
README.md - Translate Content → Horoscope Files: writes JSON
README.md - Collect and Parse → Horoscope Files: stores rankings
README.md - Collect and Parse → Bot Notifier: requests delivery
main.py - Bot Notifier → Channel Registry: reads channels
notifier.py - Bot Notifier → Discord App: sends embeds
README.md - Discord User → Discord App: submits command
README.md - Discord App → Interaction Handler: posts interaction
README.md - Interaction Handler → Horoscope Files: fetches latest
README.md - Interaction Handler → Channel Registry: manages channels
api/index.py - Interaction Handler → Bot Notifier: sends test message
api/index.py - Interaction Handler → Discord App: returns embed
README.md - QStash Scheduler → Health Request: calls health endpoint
README.md - Health Request → QStash Verifier: verifies request
health_entry.py - Health Request → Source Health Check: runs check
health_entry.py - Source Health Check → Horoscope Sites: checks availability
source_health.py - Source Health Check → Channel Registry: reads health state
source_health.py - Source Health Check → Bot Notifier: sends alerts
source_health.py - Weekend Relay → Horoscope Sites: fetches weekend page
source_relay.py - Monthly Report → Horoscope Files: loads date files
README.md - Annual Report → Horoscope Files: loads date files
README.md - Monthly Report → Ranking Aggregates: uses aggregates
monthly_stats.py - Annual Report → Ranking Aggregates: uses aggregates
annual_stats.py - Monthly Report → Channel Registry: lists destinations
monthly_stats.py - Annual Report → Channel Registry: lists destinations
annual_stats.py - Monthly Report → Bot Notifier: sends report
monthly_stats.py - Annual Report → Bot Notifier: sends report
annual_stats.py