Ten projekt dostarcza uproszczonego, solidnego bota Discord, możliwego do wdrożenia za pomocą Dockera. Bot koncentruje się na podstawowych funkcjach, takich jak śledzenie aktywności użytkowników i prosty system ekonomii, przebudowany od podstaw w celu zapewnienia stabilności i łatwości użytkowania.
- Zunifikowany system punktów: Śledzi dwa rodzaje punktów:
- Punkty Aktywności (AP): Zdobywane za wysyłanie wiadomości i aktywność głosową. Używane do tworzenia rankingu aktywności.
- Punkty Hazardu (GP): Używane jako waluta do obstawiania i kupowania ról w sklepie.
- Prosta ekonomia: Obstawiaj swoje Punkty Hazardu lub wydawaj je w sklepie z rolami na serwerze.
- Skonteneryzowany: Uruchamia bota w kontenerze, co ułatwia wdrożenie.
- Trwałość danych: Baza danych jest zapisywana w dedykowanym folderze, co ułatwia backupy i zapobiega utracie danych przy restarcie kontenera.
- Na twoim systemie musi być zainstalowany Docker.
- Przejdź do Portalu deweloperów Discorda.
- Kliknij "New Application", nadaj jej nazwę i kliknij "Create".
- Przejdź do zakładki "Bot".
- W sekcji "Privileged Gateway Intents" włącz:
- SERVER MEMBERS INTENT
- MESSAGE CONTENT INTENT
- Kliknij "Save Changes".
- W zakładce "Bot" kliknij "Reset Token", aby uzyskać token bota. Traktuj go jak hasło i trzymaj w tajemnicy.
- Przejdź do zakładki "OAuth2", a następnie "URL Generator".
- W "SCOPES" zaznacz pole
botiapplications.commands. - W "BOT PERMISSIONS" zaznacz następujące uprawnienia:
Send MessagesRead Message HistoryEmbed LinksConnectSpeakManage Roles(dla sklepu z rolami)
- Skopiuj wygenerowany adres URL i wklej go w przeglądarce, aby zaprosić bota na swój serwer.
- Sklonuj repozytorium:
git clone <adres-repozytorium> cd <katalog-repozytorium>
- Utwórz i skonfiguruj plik
bot.env: Utwórz plik o nazwiebot.envw głównym katalogu projektu z następującą zawartością:Zastąp# Sekretny token twojego bota z Portalu deweloperów Discorda DISCORD_TOKEN=TWÓJ_TOKEN_BOTA_DISCORDTWÓJ_TOKEN_BOTA_DISCORDswoim rzeczywistym tokenem.
Aby dane (baza danych) nie znikały po restarcie kontenera, musimy zamontować wolumen (folder na twoim serwerze), który będzie połączony z folderem /app/data wewnątrz kontenera.
- Upewnij się, że jesteś w głównym katalogu projektu.
- Zbuduj i uruchom kontener:
System Linux/Mac:
docker build -t discord-bot . && \
docker run --env-file bot.env -d \
-v $(pwd)/data:/app/data \
--name my-discord-bot discord-botSystem Windows (PowerShell):
docker build -t discord-bot .
docker run --env-file bot.env -d -v ${PWD}/data:/app/data --name my-discord-bot discord-botDzięki fladze -v $(pwd)/data:/app/data, plik bazy danych bot_stats.db będzie zapisywany w folderze data w katalogu, w którym uruchomiłeś komendę. Nawet jeśli usuniesz kontener, plik bazy danych pozostanie bezpieczny.
Wszystkie komendy są komendami slash (/). Jeśli komenda nie działa, bot wyśle powiadomienie (np. o braku uprawnień).
/top [period]: Pokazuje ranking najbardziej aktywnych użytkowników (Punkty Aktywności). Użyjmonthly, aby zobaczyć ranking z tego miesiąca./wallet: Pokazuje ranking najbogatszych użytkowników (Punkty Hazardu)./balance [member]: Sprawdza twoje lub innego użytkownika saldo Punktów Hazardu./bet <amount>: Obstawia określoną ilość twoich Punktów Hazardu./shop: Wyświetla role dostępne do zakupu za Punkty Hazardu./buy <item_id>: Kupuje rolę ze sklepu.
/givepoints <member> <amount>: Daje użytkownikowi określoną ilość Punktów Hazardu./takepoints <member> <amount>: Zabiera użytkownikowi określoną ilość Punktów Hazardu./shopadmin add <role> <price>: Dodaje rolę do sklepu./shopadmin remove <item_id>: Usuwa rolę ze sklepu na podstawie jej ID.
- "Nie masz uprawnień do użycia tej komendy": Sprawdź, czy masz uprawnienia administratora na serwerze lub czy rola, którą posiadasz, pozwala na używanie komend.
- Komendy nie pojawiają się po wpisaniu
/: Może minąć do godziny, zanim Discord zsynchronizuje komendy globalne. Spróbuj wyrzucić bota i dodać go ponownie, co wymusi szybszą synchronizację na danym serwerze.
Aby zatrzymać i usunąć kontener, uruchom:
docker stop my-discord-bot && docker rm my-discord-bot