What NestBot does
NestBot gives OWASP community members a conversational interface directly inside Slack. Members can search projects, find nearby chapters, explore Google Summer of Code opportunities, look up leaders, get contribution ideas, and ask AI-powered questions — all without leaving their Slack workspace.Slash commands
Twenty slash commands covering projects, chapters, GSoC, jobs, events, and more.
Event handlers
Responds to workspace events such as new members joining, app mentions, and messages.
AI assistant
Answers OWASP-related questions in channels where the assistant is enabled.
Home tab
A personalised app home rendered with Slack Block Kit when a user opens the bot.
Adding NestBot to your workspace
For OWASP community members, NestBot is already available in the OWASP Slack workspace. Open any channel and type/projects or any other slash command to start using it.
To install NestBot in your own workspace for development purposes, follow the NestBot development setup instructions.
Architecture
NestBot is a Django app located atbackend/apps/slack/. It is registered in INSTALLED_APPS alongside every other Nest Django app. At startup, Django initialises SlackConfig, which creates the Slack Bolt App instance and registers all command and event handlers.
Requests from Slack arrive at two endpoints served by Django:
| Endpoint | Purpose |
|---|---|
/integrations/slack/commands/ | Slash command payloads |
/integrations/slack/events/ | Event subscription payloads |
/integrations/slack/interactivity/ | Interactive component payloads (button clicks, modals) |
slack_sdk.WebClient.
Directory structure
CommandBase or EventBase. These base classes handle template loading, block rendering, error logging, and Slack API calls, so individual handlers only need to override get_context() or render_blocks() when they require custom logic.
Tech stack
| Component | Technology |
|---|---|
| Bot framework | Slack Bolt for Python |
| Slack API client | slack_sdk |
| Web framework | Django |
| Template engine | Jinja2 |
| Message format | Slack Block Kit JSON |
| Async jobs | Django RQ (Redis Queue) |
