Repository navigation
Releases: CosmicCubicle/PariahBot
Release list
PariahBot 2.0.0
PariahBot 2.0 adds a server log: what happens in your server, posted to channels you choose. It ships as a container image for amd64 and arm64, as well as the systemd install.
📖 Documentation: setup, configuration, per-server walkthroughs and troubleshooting.
⚠️ Before you update: switch on Server Members Intent
The bot now always asks Discord for the privileged Server Members intent, which the server log's joins and leaves need. Until you switch it on, Discord refuses the bot's login.
- Open the Discord Developer Portal → your application → Bot.
- Under Privileged Gateway Intents, switch on Server Members Intent.
- Save Changes, then update.
Do this first if your install updates itself: the systemd sync job or the container update job. If you forget, the bot prints which switch to turn on and exits, rather than sitting offline. Discord reviews this intent only for bots in 100 or more servers.
Container image
ghcr.io/cosmiccubicle/pariahbot:2.0.0
| Tag | Follows |
|---|---|
2.0.0 |
This release. Never changes |
2.0 |
The newest 2.0.x release |
latest |
Every change merged to main |
sha-<commit> |
One specific build |
Both amd64 and arm64 (Raspberry Pi with a 64-bit OS, AWS Graviton) are in each tag.
Install on any Linux host with Docker. On Ubuntu, the script can install Docker for you:
git clone --branch v2.0.0 https://github.com/CosmicCubicle/PariahBot.git
cd PariahBot
sudo ./deploy/container-setup.shThe script asks for your token, IDs, dashboard settings, and whether the server log shows message text. It then pulls the image, starts it with Docker Compose and registers the commands, and offers an update job. It follows latest. To move only on releases, put this in /opt/pariahbot-container/.env:
PARIAHBOT_IMAGE=ghcr.io/cosmiccubicle/pariahbot:2.0What's new
Server log (/logging, and a Logging tab on the dashboard)
- Four sections, each with its own channel and on/off switch:
- Kicks and bans: by anyone. Ones the bot carried out name their case, e.g. #12, through the bot by @moderator.
- Joins and leaves: with account age, and the roles a leaver had.
- Messages: edits and deletes, with a link. Bot messages and auto-delete channels are left out.
- Server changes: roles and channels created, edited or deleted, permission changes, and members gaining or losing roles, with who did it. The bot's own changes, such as temporary voice channels and role menus, are left out.
- Problems are explained.
/logging statusand each dashboard card say what's stopping a section, worded as the fix. - Message text is an opt-in for the bot's host. Say yes in a setup script, or set
SERVER_LOG_MESSAGE_CONTENT=true, after switching on Message Content Intent. Edits then show Before and After, and deletions show the Text. Recent messages are kept in memory for up to a day, only for servers logging messages. - New permission: View Audit Log. Kicks and bans, and server changes, need it. The standard invite has always included it.
- It can be switched off per server like any other feature:
/setup feature disable feature:logging.
Setup and hosting
- Both setup scripts ask whether the server log shows message text, and remind you about Server Members Intent at the end of every run.
- The owner's Status page on the dashboard shows whether message text is on.
- Faster, more reliable arm64 builds: the image's dependencies install without emulation.
Upgrading from 1.x
- Switch on Server Members Intent (above).
- Check View Audit Log. If you invited the bot with the Required-only link, add View Audit Log to its PariahBot role in Server Settings → Roles. The Recommended invite already has it.
- Update:
- Container:
cd /opt/pariahbot-container && sudo docker compose pull && sudo docker compose up -d, or let the update job do it. systemd: in your clone,git pull, thensudo ./deploy/setup.sh, pressing Enter to keep each setting. The sync job picks it up by itself.
- Container:
- Set up the log in each server:
/logging set section:… channel:#…. Every section starts off.
The database upgrades itself on startup; a new table holds the log settings.
Install without containers
Under systemd, on Debian or Ubuntu, with Node.js 24+ installed by the script:
git clone --branch v2.0.0 https://github.com/CosmicCubicle/PariahBot.git
cd PariahBot
sudo ./deploy/setup.shSee Host Installation. On AWS or Azure, start with AWS Hosting or Azure Hosting: either install runs on a small Ubuntu VM.
Full guide to the new feature: Server Log
Full changes: v1.1.0...v2.0.0
PariahBot 1.1.0
PariahBot now ships as a container image for amd64 and arm64, with a guided setup script. This release also adds per-server feature switches and hosting guides for AWS and Azure.
📖 Documentation: setup, configuration, per-server walkthroughs and troubleshooting.
Container image
ghcr.io/cosmiccubicle/pariahbot:1.1.0
| Tag | Follows |
|---|---|
1.1.0 |
This release, and never changes |
1.1 |
The newest 1.1.x release |
latest |
Every change merged to main |
sha-<commit> |
One specific build |
What's new
Run it in a container
deploy/container-setup.shinstalls Docker if it's missing, asks for your token, IDs and dashboard settings, and starts the bot with Docker Compose.- An optional job updates the container when a newer image appears.
- The dashboard works exactly as before: on the host's own address, through an SSH or Cloudflare Tunnel.
- Already running the bot under
systemdon the same machine? The script offers to retire that install and bring its database into the container.
Hosting on AWS and Azure
- Step-by-step guides for setting up a small Ubuntu VM on EC2 or Azure, for either install method.
- They explain why a VM rather than Fargate or Container Apps: the bot's SQLite database needs a local disk, and exactly one copy may run.
Per-server feature switches
- Admins can switch any feature set off for their server, and back on, with
/setup featureor from the dashboard. - Settings are kept, and anything already running finishes.
/helpmarks what's off and how to turn it back on.
Fixes
sudo ./deploy/setup.shworks on a fresh clone. The script wasn't marked executable in the repository, so 1.0.0's install instructions failed with "command not found".- Rerunning
setup.shno longer stops partway when its git sync job is the only cron job. - Turning the sync job off now removes its cron entry too.
setup.shstops with a clear message on hosts withoutapt-get, rather than failing partway.- Auto-delete no longer logs a deprecation warning on every startup.
Install
In a container, on any Linux host with Docker (or Ubuntu, where the script can install Docker):
git clone --branch v1.1.0 https://github.com/CosmicCubicle/PariahBot.git
cd PariahBot
sudo ./deploy/container-setup.shSee Container Installation. The setup follows latest. To stay on this release series instead, put PARIAHBOT_IMAGE=ghcr.io/cosmiccubicle/pariahbot:1.1 in /opt/pariahbot-container/.env.
Under systemd, on Debian or Ubuntu, with Node.js 24+ installed by the script:
git clone --branch v1.1.0 https://github.com/CosmicCubicle/PariahBot.git
cd PariahBot
sudo ./deploy/setup.shSee Host Installation.
On AWS or Azure, start with AWS Hosting or Azure Hosting.
Upgrading from 1.0.0
- The database upgrades itself on startup.
banned_words_enabledmoves into the new feature-switch table; nothing else is needed. - Every feature stays on, except banned words, which keeps its current setting.
systemdinstalls: in your clone, rungit pull, then rerunsudo ./deploy/setup.sh. Press Enter to keep each setting. If the auto-update job is on, it picks up this release by itself.
Full changes: v1.0.0...v1.1.0
PariahBot 1.0.0
The first tagged release of PariahBot: a self-hosted Discord bot that replaces several single-purpose bots with one, keeping each server's settings in a local SQLite database.
📖 Documentation: setup, configuration, per-server walkthroughs and troubleshooting.
What's in it
Community
- Temporary voice channels: join-to-create hubs, owner controls (
/vc), automatic cleanup, and recovery for deleted hubs. - Self-service role menus: members pick their own roles from a dropdown.
- Giveaways: timed, button entry, winners drawn automatically.
- Activity levels: XP from messages,
/level rankand a leaderboard.
Safety and moderation
- Verification: a captcha that grants the member role, and can optionally gate the rest of the server.
- Honeypot: a trap channel that removes bots and spammers who post in it.
- Moderation (
/mod): warn, kick, ban (including temporary), softban and timeout, also from a right-click menu. Includes per-member history, automatic timeouts after repeated warnings, and an appeal note in ban DMs. - Banned words: ready-made lists plus your own words, enforced by Discord AutoMod.
- Message auto-deletion per channel, by age or count. Pinned messages are kept.
Alerts
- Twitch and YouTube: live and new-video alerts.
- Instagram: new posts and reels from public Business or Creator accounts.
- RSS and Atom feeds.
- Each alert type can ping a role and use a custom message.
- Admin alerts go to a channel and/or DMs, and there's a command audit log.
Staff levels
- Admin: Discord's Administrator permission or an admin role. Server setup, security, policy settings and the dashboard.
- Mod: a mod role. Day-to-day moderation and every other staff command.
- User: everyone else.
The bot never acts against admins or mods.
Admin dashboard (optional)
- A web page where server admins sign in with Discord and manage their own servers. The bot's owner sees every server, plus the bot's status.
- Reach it locally, through an SSH tunnel, or publicly through a Cloudflare Tunnel, with nothing opened on your network.
Install
Needs Node.js 24+ and a Discord application. On a Debian or Ubuntu host:
git clone --branch v1.0.0 https://github.com/CosmicCubicle/PariahBot.git
cd PariahBot
sudo ./deploy/setup.shThe script installs Node, creates a service, asks for your token and IDs, and can set up the dashboard. See Host Installation. To run it by hand instead, see the README's Quick start.
After inviting the bot, in each server run:
/setup admin-role add/setup mod-role add/setup member-role
Several features depend on these roles.