How faruuza/bot works
This is a Discord hackathon management bot. Participants open a registration ticket, submit team details through interactive Discord controls, and the bot creates team records and provisions private team channels and roles; invitations and recruitment manage later membership changes. Separate branches cover reconnect role restoration, support tickets, staff dashboards and controls, FAQ editing, challenge synchronization, and auditing. The README documents these capabilities; sampled source confirms selected service and routing relationships, so unsampled wiring is not expanded.
Main entry points: index.js Bot client · ticketService.js Ticket provisioning · interactionCreate.js Interaction router · teamService.js Team lifecycle
Components 27
Discord runtime
- Bot client
src/index.js - Interaction router
src/events/interactionCreate.js - Join restoration
src/events/guildMemberAdd.js
Team lifecycle
- Registration command
src/commands/registration/register.js - Team commands
src/commands/team/team.js - Team lifecycle
src/services/teamService.js - Discord provisioning
src/services/discordService.js - Invitations
src/services/invitationService.js - Recruitment and challenges
src/services/nasaValidationService.js
Staff and support
- Ticket provisioning
src/services/ticketService.js - Guild configuration
src/services/guildConfigService.js - Admin dashboard
src/services/dashboardService.js - FAQ management
src/services/faqService.js - Admin commands
src/commands/admin/setup.js - FAQ command
src/commands/admin/faq.js - Ticket close
src/commands/ticket/close.js
Data and audit
- Audit dispatcher
src/services/auditService.js - PostgreSQL pool
src/database/pool.js - Team and member records
src/database/queries/teamQueries.js - Ticket records
src/database/queries/ticketQueries.js - Recruitment records
src/database/queries/recruitmentQueries.js - FAQ records
src/database/queries/faqQueries.js - Audit records
src/database/queries/auditQueries.js
Other components
- Discord users
- Discord platform
- PostgreSQL
- NASA challenge site
Connections 36
- Discord users → Bot client: sends interactions
- Bot client → Interaction router: dispatches events
- Bot client → Join restoration: dispatches joins
- Bot client → Registration command: registers command
- Bot client → Team commands: registers command
- Interaction router → Ticket provisioning: opens tickets
- Interaction router → Team lifecycle: handles team actions
- Interaction router → Recruitment and challenges: handles recruitment
- Registration command → Ticket provisioning: provisions ticket
- Team commands → Team lifecycle: manages teams
- Team lifecycle → Team and member records: reads and writes
- Team lifecycle → Discord provisioning: provisions roles
- Team lifecycle → Invitations: manages invitations
- Discord provisioning → Discord platform: creates resources
- Invitations → Team and member records: updates membership
- Recruitment and challenges → Team and member records: reads teams
- Recruitment and challenges → Recruitment records: updates vacancies
- Recruitment and challenges → NASA challenge site: syncs challenge data
- Join restoration → Team and member records: restores membership
- Join restoration → Discord provisioning: restores roles
- Ticket provisioning → Ticket records: reads and writes
- Ticket provisioning → Discord platform: creates channels
- Ticket provisioning → Audit dispatcher: logs closure
- Bot client → Admin commands: registers command
- Admin commands → Admin dashboard: sets up dashboard
- Admin dashboard → Guild configuration: reads settings
- Admin dashboard → Discord platform: fetches guild state
- Interaction router → Guild configuration: reads settings
- Bot client → FAQ command: registers command
- FAQ command → FAQ management: edits FAQ
- FAQ management → FAQ records: reads and writes
- Bot client → Ticket close: registers command
- Ticket close → Ticket provisioning: closes ticket
- Audit dispatcher → Audit records: persists events
- Audit dispatcher → Discord platform: dispatches log embeds
- PostgreSQL pool → PostgreSQL: connects