This repository has no description
README.md

devICT bot #

Our humble slack bot, with whatever functionality (useful or not) we decide to throw in here.

Set up as a simple slack app webhook receiver.

Tech Stack #

  • TypeScript and Node with native TypeScript support
  • Fastify and JSON schemas for request validation
  • Official Slack Web API client

Observability #

Traces are exported via OTLP when OTEL_EXPORTER_OTLP_ENDPOINT is set; OTEL_SERVICE_NAME sets the service name. Unset endpoint disables instrumentation (local dev). Traces only — logs are collected from the docker process by alloy.

Testing #

Test at the request level, mocking / intercepting HTTP requests made.

Slack invite approval flow #

The Google Form invite request posts to POST /invites/slack/request:

Authorization: Bearer $SLACK_INVITE_WEBHOOK_TOKEN
{ "name": "Jane Doe", "email": "jane@example.com", "reason": "community" }

The bot posts the request to the private $SLACK_INVITE_CHANNEL (members of which are the only people allowed to invite). Approve by replying @bot !invite in the request's thread — the bot looks up the email from the parent message and sends the Slack invite, then replies in-thread with the result.

!invite only works in the invite channel and must be in a thread.