How shikihtm/momoi-bot works
Momoi-Bot is a Discord bot for Blue Archive, backed by the torikushiii API. Users request current/upcoming banners or raids through slash commands; the interaction dispatcher invokes the command, which fetches data, formats an embed and replies. Separately, scheduled checks crawl banner listings and poll the raid API, persist newly seen state, and announce changes to a configured channel. The tree and excerpts also establish a ping command and command/event loading. Other runtime assets and helpers are shown where supported; unsampled branches are linked only when the README or excerpts establish the relationship.
Main entry points: BannerCrawler.js Banner crawler · banners.js Banner command · index.js Bot client · interactionCreate.js Interaction dispatch
Components 22
Discord runtime
- Bot client
src/index.js - Interaction dispatch
events/interactionCreate.js
User requests
- Banner command
cmds/Banner/banners.js - Raid command
cmds/Raid/boss.js - Latency command
cmds/server/ping.js - Banner API
cmds/Banner/banners.js - Raid API
cmds/Raid/boss.js
Change monitoring
- Banner crawler
Database/BannerCrawler.js - Banner state
config/Game_Init_Config/BannerConfig/bannerLink.json - Crawl limits
config/DatabaseConfig/limits.json - Raid monitor
Database/Raid.js - Upcoming raid state
config/DatabaseConfig/Upcoming.raid.json - Banner alerts
modules/PingWhen.Banner.js - Raid alerts
modules/PingWhen.Boss.js
Game data
- Banner assets
config/Game_Init_Config/BannerConfig - Raid assets
config/Game_Init_Config/RaidConfig - Student metadata
Utils/Students - Asset access
modules/Database.access.js
Other components
- Discord user
- Blue Archive API
- Banner-list wiki
- Configured Discord channel
Connections 33
- Discord user → Bot client: uses bot
README.md - Bot client → Interaction dispatch: registers events
src/index.js - Interaction dispatch → Banner command: dispatches
events/interactionCreate.js - Interaction dispatch → Raid command: dispatches
events/interactionCreate.js - Interaction dispatch → Latency command: dispatches
events/interactionCreate.js - Banner command → Banner API: fetches
cmds/Banner/banners.js - Banner API → Blue Archive API: requests banners
cmds/Banner/banners.js - Banner command → Banner assets: reads
cmds/Banner/banners.js - Banner command → Student metadata: reads
cmds/Banner/banners.js - Banner command → Discord user: replies embeds
cmds/Banner/banners.js - Raid command → Raid API: fetches
cmds/Raid/boss.js - Raid API → Blue Archive API: requests raids
cmds/Raid/boss.js - Raid command → Raid assets: reads
cmds/Raid/boss.js - Raid command → Discord user: replies embed
cmds/Raid/boss.js - Latency command → Discord user: replies latency
cmds/server/ping.js - Bot client → Banner crawler: starts checks
src/index.js - Bot client → Raid monitor: starts checks
src/index.js - Banner crawler → Banner-list wiki: scrapes listing
Database/BannerCrawler.js - Banner crawler → Blue Archive API: looks up students
Database/BannerCrawler.js - Banner crawler → Banner state: updates links
Database/BannerCrawler.js - Banner crawler → Crawl limits: updates limits
Database/BannerCrawler.js - Banner crawler → Banner alerts: announces changes
Database/BannerCrawler.js - Banner alerts → Banner assets: reads assets
modules/PingWhen.Banner.js - Banner alerts → Student metadata: reads school data
modules/PingWhen.Banner.js - Banner alerts → Configured Discord channel: sends embed
modules/PingWhen.Banner.js - Raid monitor → Blue Archive API: polls raids
Database/Raid.js - Raid monitor → Upcoming raid state: stores upcoming
Database/Raid.js - Raid monitor → Raid alerts: announces changes
Database/Raid.js - Raid alerts → Raid assets: reads assets
modules/PingWhen.Boss.js - Raid alerts → Configured Discord channel: sends embed
modules/PingWhen.Boss.js - Asset access → Banner assets: loads assets
modules/Database.access.js - Asset access → Raid assets: loads assets
modules/Database.access.js - Asset access → Student metadata: loads metadata
modules/Database.access.js