mirror of
https://github.com/BluemediaGER/discord-cleanup-bot.git
synced 2024-11-22 16:05:28 +01:00
Compare commits
4 commits
a76ac78426
...
b93befd90e
Author | SHA1 | Date | |
---|---|---|---|
Oliver Traber | b93befd90e | ||
Oliver Traber | c418132a95 | ||
Oliver Traber | 075b7b3333 | ||
Oliver Traber | 812808a3bf |
30
README.md
30
README.md
|
@ -1,2 +1,30 @@
|
||||||
# discord-cleanup-bot
|
# 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
5
bot.py
|
@ -7,9 +7,10 @@ from sqlalchemy.orm import Session
|
||||||
from models import Guild, Channel, Base
|
from models import Guild, Channel, Base
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from discord import app_commands, Game
|
from discord import app_commands, Game, Permissions
|
||||||
from discord.app_commands import Choice
|
from discord.app_commands import Choice
|
||||||
from discord.ext import tasks
|
from discord.ext import tasks
|
||||||
|
from discord.utils import oauth_url
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.INFO)
|
||||||
|
@ -45,6 +46,8 @@ class BotClient(discord.Client):
|
||||||
async def setup_hook(self):
|
async def setup_hook(self):
|
||||||
await self.tree.sync()
|
await self.tree.sync()
|
||||||
self.background_task.start()
|
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)
|
@tasks.loop(minutes=15)
|
||||||
async def background_task(self):
|
async def background_task(self):
|
||||||
|
|
13
docker-compose.yaml
Normal file
13
docker-compose.yaml
Normal 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:
|
Loading…
Reference in a new issue