Skip to content

aelithron/novabot-slack

Repository files navigation

NovaBot - Slack IMG

Nova's personal bot for Slack!
This project was made for Hack Club Flavortown!
Developed by a human, not by AI!

Features

Daily Recaps

The bot automatically posts a public message for me to talk about how my day went. It also automatically shows my status from Universal Status, a previous project of mine.
Once I respond to the public recap and mark it as done, it automatically posts a message in my private channel for me to give a more detailed recap.
The bot also reminds me 10 minutes before a recap, so I can prepare and send it on time.

Channel Requests

A command (by default /spacetime) lets users request to join my private channel. This was inspired by join workflows in the Hack Club Slack, but mine has the ability to deny channel invites as well. It also doesn't allow users already in the channel to request to join it (which just produces unnecessary messages).

Ping Reminders

People use user groups a lot in Slack personal channels. However, if people reply to a user group ping, it pings everyone again. This can quickly get annoying, so the bot will tell people to not thread on user group mentions through an ephemeral ("only visible to you") message.

Automatic Threadable Messages

Somewhat in the same vein, if anyone in a channel with the bot pings a user group and includes the thread (🧵) emoji, the bot will send a message below that can be safely threaded on. This helps make threading easier, and makes it harder for people to forget and ping the entire user group again.

Usage

Right now, you can use the bot in #novabot-playground if you are in the Hack Club Slack.

Self-Hosting

Some steps on how to self host the bot!

  1. Set up an app on Slack's API portal. You can use the manifest in slack-manifest.json, feel free to change it as you wish.
  2. Decide if you want to use Socket Mode. It means you don't need to open a port, but it's slower and generally not recommended for production. The manifest currently has it enabled by default, though.
  3. Deploy the app, following the instructions below for your platform choice. Then, skip down to step 4. Make sure you replace the placeholders with the appropriate values from the Slack API portal.

With Docker Compose

Save the following Compose file as compose.yml (making sure to fill in the placeholders):

services:
  novabot-slack:
    image: ghcr.io/aelithron/novabot-slack:latest
    container_name: novabot-slack
    restart: unless-stopped
    environment:
      SLACK_BOT_TOKEN: (insert bot token here)
      # if not using Socket Mode (default):
      SOCKET_MODE: false
      SLACK_SIGNING_SECRET: (insert signing secret here)

      # if using Socket Mode:
      # SOCKET_MODE: true
      # SLACK_APP_TOKEN: (insert app token here)
    ports:
      - 3000:3000 # you can remove this if using Socket Mode
    volumes:
      - ./config:/config

With docker run

Run this command in your terminal if you are using Socket Mode (filling in the empty spaces):

docker run -d \
  --name novabot-slack \
  -e SLACK_BOT_TOKEN="" \
  -e SLACK_APP_TOKEN="" \
  -e SOCKET_MODE=true \
  -v "$(pwd)/config:/config" \
  --restart unless-stopped \
  ghcr.io/aelithron/novabot-slack:latest

Alternatively, run this command if you are not using Socket Mode (once again, filling in the empty spaces):

docker run -d \
  --name novabot-slack \
  -e SLACK_BOT_TOKEN="" \
  -e SLACK_SIGNING_SECRET="" \
  -e SOCKET_MODE=false \
  -p 3000:3000 \
  -v "$(pwd)/config:/config" \
  --restart unless-stopped \
  ghcr.io/aelithron/novabot-slack:latest
  1. Edit the config file to match your details. This should automatically generate when you start the bot for the first time.

Showcase

IMG IMG

Want to check out the Discord version? NovaBot Discord

About

Nova's personal Slack bot!

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors