Compare commits

...

4 commits

Author SHA1 Message Date
Oliver Traber b93befd90e
Fix typo
All checks were successful
ci/woodpecker/push/docker Pipeline was successful
ci/woodpecker/manual/docker Pipeline was successful
ci/woodpecker/cron/docker Pipeline was successful
2023-10-28 02:04:55 +02:00
Oliver Traber c418132a95
Add documentation for DB_PATH variable 2023-10-28 01:50:36 +02:00
Oliver Traber 075b7b3333
Add Docker compose file and documentation 2023-10-28 01:45:04 +02:00
Oliver Traber 812808a3bf
Auto generate invite url 2023-10-28 01:44:20 +02:00
3 changed files with 46 additions and 2 deletions

View file

@ -1,2 +1,30 @@
# discord-cleanup-bot
A simple discord bot to clean up messages in a channel after a configured ammount of time.
A simple discord bot to clean up messages in a channel after a configured amount of time.
## Limitations / special features
- Only messages not older than 14 days can be deleted
- Threads are not processed by the bot
- Pinned messages are excluded from deletion
## Setup using Docker
Using Docker is the easiest way to use this bot:
1. Copy the `docker-compose.yaml` to your server
2. Create a bot account [using this guide](https://discordpy.readthedocs.io/en/stable/discord.html#creating-a-bot-account) (ignore the "Inviting Your Bot" section - the bot will show you the correct invite link later)
3. Paste your bot token behind `BOT_TOKEN=` in the `docker-compose.yaml`
4. Start the container using `docker compose up -d`
5. Run `docker compose logs` and copy the invite link to your browser
## Manual setup
If you don't want to use Docker, you can set up the bot manually:
1. Clone the Git repo
2. Create and activate a new venv
3. Install the requirements using `requirements.txt`
4. Create a bot account [using this guide](https://discordpy.readthedocs.io/en/stable/discord.html#creating-a-bot-account) (ignore the "Inviting Your Bot" section - the bot will show you the correct invite link later)
5. Set your bot token in the environment variable `BOT_TOKEN` and specify a file path for the SQLite database using `DB_PATH`
6. Start the `bot.py` script
7. Copy the invite link to your browser
## Commands
All commands provide help messages and support auto-completion.
- `/purge (days)` Delete all messages of the last x days now an only once.
- `/retention [get|set|disable] (retention_period)` Manage continous cleanup. The background job runs every 15 minutes.

5
bot.py
View file

@ -7,9 +7,10 @@ from sqlalchemy.orm import Session
from models import Guild, Channel, Base
import discord
from discord import app_commands, Game
from discord import app_commands, Game, Permissions
from discord.app_commands import Choice
from discord.ext import tasks
from discord.utils import oauth_url
logger = logging.getLogger()
logger.setLevel(logging.INFO)
@ -45,6 +46,8 @@ class BotClient(discord.Client):
async def setup_hook(self):
await self.tree.sync()
self.background_task.start()
invite_url = oauth_url(client_id=self.application_id, permissions=Permissions(permissions=76800))
logger.info(f"Bot started. Invite it using the following link: {invite_url}")
@tasks.loop(minutes=15)
async def background_task(self):

13
docker-compose.yaml Normal file
View file

@ -0,0 +1,13 @@
version: '3.4'
services:
discord-cleanup-bot:
image: git.bluemedia.dev/bluemedia/discord-cleanup-bot
volumes:
- bot-data:/data
environment:
- BOT_TOKEN=
restart: unless-stopped
volumes:
bot-data: