mirror of
https://github.com/the-programmers-hangout/swiftspiracy-bot.git
synced 2026-09-04 01:06:01 +02:00
80 lines
2.9 KiB
Markdown
80 lines
2.9 KiB
Markdown
# swiftspiracy
|
|
|
|
A playful Discord bot that sends random praises and (occasionally) a conspiracy theory — and cleans up after itself.
|
|
|
|
## Setup
|
|
|
|
### Create a Discord Bot
|
|
|
|
> [!WARNING]
|
|
> Discord updates frequently -- if any steps seem outdated, refer to the official docs:
|
|
> https://discord.com/developers/docs/intro
|
|
|
|
1. Log into Discord.
|
|
2. Go to [Discord Developer Portal](https://discord.com/developers/applications)
|
|
3. Click "New Application", give it a name, and create it.
|
|
4. In the sidebar, go to Bot, click "Add Bot".
|
|
5. Under OAuth2 > URL Generator:
|
|
1. Select "bot" scope.
|
|
2. Under Bot Permissions, check at least:
|
|
- Send Messages
|
|
6. Use the generated URL to invite the bot to your server.
|
|
7. In the Bot tab, click "Reset Token", copy the token and save it in your `.env` (view next step).
|
|
|
|
### Configuration
|
|
|
|
Create a `.env` file in the root of your project with the following keys:
|
|
|
|
- `DISCORD_BOT_TOKEN`: Your bot token from the Discord developer portal.
|
|
- `DISCORD_CHANNEL_ID`: The ID of the channel where the bot should send messages.
|
|
|
|
- `SEND_MESSAGE_INTERVAL_MIN`: Minimum interval between messages (as an integer).
|
|
- `SEND_MESSAGE_INTERVAL_MAX`: Maximum interval between messages (as an integer).
|
|
- `SEND_MESSAGE_UNIT`: Time unit for the interval. Acceptable values: "second", "seconds", "minute", "minutes",
|
|
"millisecond", "milliseconds".
|
|
|
|
- `DELETE_CONSPIRACY_DELAY`: Time to wait before deleting a conspiracy message. Use Go duration format (eg "3s",
|
|
"500ms", "1m").
|
|
- `CONSPIRACY_PROBABILITY`: Probability (from 0.0 to 1.0) that a conspiracy message is sent after a praise. Eg, 0.4 =
|
|
40% chance.
|
|
|
|
Optional:
|
|
- `PRAISE_INDEX`: Index of the [praises.json](./cmd/bot/praises.json) to start from, useful when resuming bot.
|
|
- `CONSPIRACY_INDEX`: Index of the [conspiracies.json](./cmd/bot/conspiracies.json) to start from, useful when resuming
|
|
bot.
|
|
|
|
You can view the [.env.sample](./.env.sample) as an example completed template.
|
|
|
|
### Install + Run
|
|
|
|
#### Vanilla (Local Dev)
|
|
|
|
1. Install Go via https://go.dev/doc/install
|
|
2. Install Make if you don't have it via https://www.gnu.org/software/make/
|
|
3. Run:
|
|
```bash
|
|
make # builds the bot
|
|
./bin/bot # starts the bot
|
|
```
|
|
|
|
#### Docker
|
|
|
|
> We maintain a ghcr image at ghcr.io/the-programmers-hangout/swiftspiracy-bot:latest
|
|
|
|
1. Pull the image:
|
|
```bash
|
|
docker pull ghcr.io/the-programmers-hangout/swiftspiracy-bot:latest
|
|
```
|
|
2. Run it with your `.env` file:
|
|
```bash
|
|
docker run --env-file ./.env ghcr.io/the-programmers-hangout/swiftspiracy-bot:latest
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The bot gracefully shuts down on CTRL+C.
|
|
- Conspiracy messages are deleted after a short delay to keep the mystery alive, you should configure it to be low.
|
|
- Messages are sourced from [praises.json](./cmd/bot/praises.json) and
|
|
[conspiracies.json](./cmd/bot/conspiracies.json). If your timings for message are too short for the duration the bot
|
|
runs, the messages will repeat.
|