ServerBot User Manual v1.11.0
ServerBot - Bot Discordowy rozwijany przez
Kamile320 posiadający funkcje jak:
- Administracja Serwera
- Odtwarzanie muzyki z plików hosta i linków YouTube'a
- Zarządzanie Komputerem Hosta
- Wykonywanie skryptów bash
- Logowanie wiadomości
- Tworzenie wątków
- Zarządzanie Plikami i Katalogami
- Obsługa bazy danych (SQLite3)
- Rozmowa ze Sztuczną Inteligencją (Google Gemini)
- Łączenie kanałów między serwerami
- I więcej
Spis Treści
- Struktura Katalogowa
- Uruchomienie
- Uruchamianie Automatyczne
- Tokeny
- UserID i Administratorzy bota
- Windows - instalacja FFmpeg
- Moduły/Rozszerzenia Bota
- Komenda .ai
- Komendy muzyczne
- 'Portal' (łączenie kanałów)
- Baza Danych (SQLite3)
- Komendy
Struktura Katalogowa:
- ServerBot.py - Główny plik skryptu
- setup.bat - Plik instalujący wymagane biblioteki pythona (Windows)
- setup.sh - Menu operacyjne: uruchamianie bota, instalowanie wymaganych biblioteki itp. (wymaga zainstalowania komendy "dialog")
- Logs.txt - Plik z Dziennikiem zdarzeń bota na serwerze
- manualPL.html - Manual Bota [PL]
- manualEN.html - Manual Bota [EN]
- Media - Domyślny katalog/biblioteka plików muzycznych
- ACL - Dziennik wiadomości użytkowników (po włączeniu ACL)
- .env - Specjalny plik do przechowywania Tokenów Bota
- .venv - Wirtualne Środowisko Pythona (Po użyciu setup.sh - opcja 4)
- tempDB.txt - Plik z zawartością bazy danych (po użyciu .showdb)
-
modules - Katalog z modułami Bota
- custom - Katalog przeznaczony na niestandardowe moduły dla porządku; opcjonalny
- ACL.py - Moduł AdvancedChannelListener
-
Files - Katalog z resztą plików Bota
- favicon.ico - Ikona Manuala
- updates.txt - Plik z listą ostatnich aktualizacji
- Logs.txt - Kopia Logów Bota
- autorun.sh - Po użyciu .mkservice
- serverbot.db - Baza danych SQLite3
- systemd_add.py - Skrypt do dodawania bota do startu wraz z systemem poprzez systemd
- Inne Pliki (zdjęcia, nagrania, itp.)
- setup - Pliki konfiguracyjne
- setuplib.sh - Instalacja Bibliotek
- mkvenv.sh - Utworzenie venv
- requirement.txt - Plik z listą bibliotek pythonado instalacji
Zdj. 1 - uruchomienie skryptu
Pierwsze uruchomienie:
Bot do uruchomienia wymaga:
- Python 3.9 lub nowszy
- Discord.py 2.6.4 lub nowszy
- Połączenie z internetem
- Zainstalowane wymagane biblioteki pythona (patrz - zawartość setup.sh/setuplib.sh/requirements.txt)
- Dodanie do środowiska PATH plików FFmpeg - Tylko Windows (zobacz YT, setup.bat i instalację FFmpeg)
- System Operacyjny Linux (rekomendowany) / Windows / MacOS - najlepiej 64bit (testowane na x86_64 i ARMv7l)
- setup.sh - wymaga komendy "dialog"
Należy poprzez IDE, terminal albo inny program uruchomić skrypt - python3 lub setup.sh.
Jeżeli coś pójdzie nie tak, Bot powinien dać znać w czym problem
i poprosić o zatwierdzenie wykonania korekty albo porzuci uruchomienie/instalację.
Po uruchomieniu skryptu, Bot powinien się połączyć z Discordem i być gotowy do pracy.
[!] Jest możliwość zainstalowania bota poprzez plik .deb - należy pamiętać że bot zainstaluje się w /usr/share/serverbot.
Używaj komendy serverbot z sudo, jeśli chcesz skonfigurować
autostart.
Aktualne Komendy Bota można zobaczyć używając komendy .help
Uruchamianie Automatyczne:
Korzystając z Bota może zechcesz aby automatycznie uruchamiał się wraz z systemem operacyjnym (Linux).
Aby to łatwo umożliwić istnieje komenda .mkservice
Po wpisaniu komendy trzeba podać dodatkową wartość:
def - tworzy domyślny plik autorun.sh w katalogu
Files. Działa głównie na systemach opartych na Ubuntu
22.04 (Nie korzysta z utworzonego venv)
venv - czasem przy instalacji modułów za pomocą pip3 może wyskoczyć błąd
externally managed pip.
W tym przypadku należy utworzyć Wirtualne Środowisko Pythona (Virtual Environment/Venv)
Jeśli jeszcze go nie utworzyłeś - rekomendowane jest utworzenie go w głównym katalogu Bota (ServerBot).
Przykład: .mkservice venv - wykonujesz tę komendę na Discordzie gdy skrypt działa w głównym katalogu Bota.
UWAGA! Bot (a raczej setup.sh) jest przystosowany do nazwy katalogu z wirtualnym środowiskiem o nazwie ".venv".
Jeśli utworzyłeś ręcznie venv z inną nazwą katalogu, bot może się nie uruchomić!
Zalecane jest używanie odpowiednich opcji z setup.sh - Bez problemu wszystko się zainstaluje i skonfiguruje jak trzeba.
Aby autostart zadziałał, należy ustawić pliki bota z uprawnieniami odczytu/zapisu/wykonania na 775 (r-x dla wszystkich, rwx dla właściciela i grupy) jeśli nie posiadają takich uprawnień.
Rekomenduję przenieść pliki Bota do katalogu /ServerBot (żeby nie był w innych katalogach). Nie instaluj bota w katalogu domowym jeśli chcesz uruchamiać go wraz z systemem.
Jak utworzyć venv:
- znajdując się w głównym katalogu bota wpisz: python3 -m venv .venv
- aby aktywować venv: source .venv/bin/activate (jako root)
- sprawdź wersję i lokalizację: which python
- gdy już jesteś w venv, uruchom setup.sh
- aby wyjść z venv wpisz w termianalu: deactivate
- albo prościej - użyj opcji 4 w setup.sh
Pełna dokuntacja venv tutaj.
Zdj. 2 - opcje setup.sh
Tokeny
Bot korzysta z tokenów: API Discorda, Gemini oraz z ID użytkowników.
Aby bot się uruchomił należy wypełnić odpowiednimi danymi plik
.env
Schemat:
#ServerBot
TOKEN='discord bot token'
admin_usr = ['twoje ID']
custom_prefix='wybrany prefix bota' (domyślnie '.')
addBot = 'invite link of Discord Bot'
#AI
AI_token = 'gemini token (do komendy .ai)'
AI_model = 'gemini-2.5-flash' - wybrany model językowy gemini
instructions = ['Instrukcje dla modelu językowego']
#Music
JoinLeaveSounds = True/False - Odtwarzanie dźwięku przy dołączaniu/wychodzeniu z kanału głosowego
ForceMediaDir = False - Blokuje użytkowników do korzystania z plików muzycznych JEDYNIE z biblioteki muzycznej (domyślnie katalog 'Media')
#Command_dscserv
dscserv_link = 'Link do serwera Discord'
#Service_list
service_monitor = True/False - włącza komendę .service
service_list = 'Lista usług systemd do monitorowania poprzez discorda'
#Modules
LoadAllModules = True/False - ładuje wszystkie moduły z katalogu 'modules'
#ExtendedErrorMessages
extendedErrMess = True/False - włącza/wyłącza rozszerzone komunikaty błędów
ID użytkownika i Administratorzy bota
Niektóre komendy korzystają z funkcji i danych związanych z twoim systemem operacyjnym,
więc wymagają uprawnień administratora do uruchomienia - chyba nie chcesz żeby ktoś ci usunął system!
Aby te komendy wykonać, należy podać w
admin_usr ID uprawnionych użytkowników do wykonywania tych komend - to muszą być zaufane osoby, a najlepiej tylko ty!
Niektóre komendy pozwalają na ingerowanie w serwer itp. - takie komendy są przeznaczone dla moderatorów bota; można ich dodać poprzez nadanie im uprawnień moderatora w bazie danych.
Należy użyć komendy
.db op {userID} - nada status moderatora bota danemu użytkownikowi. Analogicznie odbieranie uprawnień to
.db deop {userID}
To mogą być zaufani moderatorzy Serwera. Jeśli nikt nie jest dodany jako moderator, tylko użytkownicy z
admin_usr będą mogli korzystać z komend moderatora.
Windows - instalacja FFmpeg
FFmpeg odpowiada za odtwarzanie muzyki na Kanałach Głosowych. Na Windowsie instalacja FFmpeg wygląda inaczej niż na Linuksie.
Należy ręcznie pobrać pliki FFmpeg i dodać je do zmiennej środowiskowej PATH według poniższych kroków:
- Pobierz plik .zip programu FFmpeg z oficjalnej strony GitHub, najlepiej z podanego w skrypcie linku.
- Wypakuj pliki tak, aby pliki .exe znajdowały się w lokalizacji C:\ffmpeg\bin
- Otwórz Menu Start i wyszukaj 'Zmienne środowiskowe' - wybierz 'Edytuj zmienne środowiskowe systemu'
- Wybierz zmienną 'Path' w 'Zmiennych Użytkownika/Systemu' i kliknij 'Edytuj'
- Kliknij 'Nowy' i dodaj 'C:\ffmpeg\bin' (bez cudzysłowów)
- Kliknij OK aby zamknąć wszystkie okna
- Uruchom ponownie komputer aby zastosować zmiany
Po wykonaniu tych kroków, FFmpeg powinien być poprawnie zainstalowany i gotowy do użycia przez Bota.
Moduły/Rozszerzenia Bota
Bot posiada moduły/rozszerzenia rozszerzające funkcje, które można włączyć lub wyłączyć w pliku .env
Niektóre moduły są także dostępne jako osobne repozytoria na GitHubie.
-
AdvancedChannelListener - rejestruje wiadomości użytkowników na serwerze i zapisuje je w lokalizacji 'ACL/[DiscordUserID]/[DiscordUserID].txt' oraz wszystkie wiadomości w 'ACL/default/message.txt'
Przydatny do monitorowania użytkowników na serwerze i weryfikowania kto jest kim. Może łamać prywatność użytkowników, więc używaj z rozwagą i na własną odpowiedzialność.
ACL jest dodany w formie modułu (cog) oddzielonego od głównego kodu - znajduje się w katalogu 'modules/ACL.py'
Jeśli nie zamierzasz używać tego modułu - wyłącz go z uruchamiania przy starcie (nieuwzględniony domyślnie).
-
.service - komenda pozwalająca na podgląd statusu usług systemctl na serwerze hostującym bota. Włącz ją w pliku .env ustawiając service_monitor = True oraz wpisując listę usług do service_list.
Komenda .ai
Komenda .ai pozwala na rozmowę ze sztuczną inteligencją. Wykorzystuje API Gemini firmy Google.
Wystarczy zdobyć token Gemini (na stronie
Google AI Studio) i wpisać go do pliku .env w polu 'AI_token'.
W pliku .env możesz ustawić model językowy (domyślnie gemini-2.5-flash) w polu 'AI_model', oraz instrukcje dla modelu w polu 'instructions'.
Jeśli AI wygeneruje odpowiedź dłuższą niż dozwolona długość wiadomości na Discordzie, bot zapisze odpowiedź do pliku i wyśle ją jako plik.
Komendy muzyczne
Bot posiada możliwość odtwarzania muzyki na kanałach głosowych na dwa sposoby:
-
Odtwarzanie lokalnych plików muzycznych - możesz poprzez komendę .play odtwarzać pliki muzyczne z komputera na którym bot jest hostowany.
Oczywiście bot musi mieć dostep do katalogu i plików które podajesz. Pamiętaj, jeśli plik nie jest w tym samym katalogu w którym aktualnie się znajduje bot, musisz podać pełną ścieżkę do pliku.
Możesz "zamknąć" bota do pojedynczego katalogu z którego będzie mógł wykorzystywać pliki muzyczne - ustaw ForceMediaDir na True w pliku .env
W ServerBot.py możesz zmienić domyślny katalog biblioteki muzycznej (zmienna medialib). Gdy ForceMediaDir jest włączony, jest dostępna komenda .library wyświetlająca dostępne pliki z biblioteki muzycznej.
ForceMediaDir nie wpływa na ogólną możliwość poruszania się bota po katalogach.
-
Odtwarzanie muzyki z YouTube - możesz odtwarzać muzykę poprzez .ytplay, podając link do filmu z YouTube'a (.ytplay url {youtube_url}), albo wyszukując muzykę po tytule (.ytplay search {tytuł filmu/muzyki}).
Możesz także użyć komendy .ytsearch {tytuł} żeby wyszukać film/muzykę na YT i otrzymać pierwszy znaleziony wynik.
Muzykę odtwarzaną na kanale głosowym możesz wstrzymać (.pause), wznowić (.resume) albo całkowicie zatrzymać (.stop).
'Portal' - łączenie kanałów między serwerami Discord
Portal (nazwa może ulec zmianie) tworzy połączenie między dwoma kanałami, pozwalając na komunikację między nimi niezależnie czy kanały są na dwóch różnych serwerach, czy nie.
Bot wyśle wiadomość do drugiego kanału po użyciu komendy '.psend [treść wiadomości]' na połączonym kanale w parę. Komenda wykorzystuje bazę danych SQLite3.
Można łączyć kanały i nimi zarządzać za pomocą poniższych komend:
- .portal create {id1} {id2} - tworzy połączenie (bot musi mieć dostęp do obu kanałów)
- .portal remove {id} - usuwa połączenie zawierające ID podanego kanału
- .portal search {id} - szuka w bazie danych połączenia zawierającego podane ID kanału
- .portal show - zapisuje zawartość bazy danych (wszystkie połączenia) do pliku tempDB.txt i wysyła jako odpowiedź
Baza Danych (SQLite3)
Bot korzysta z bazy danych SQLite3 do przechowywania informacji o użytkownikach takich jak:
- ID użytkownika
- Status użytkownika (Moderator itp.)
- Inne dane związane z użytkownikami (w przyszłości)
Baza danych znajduje się w '
Files/serverbot.db'. Bot automatycznie tworzy bazę danych i zbiera dane przy każdej wysłanej wiadomości na serwerze.
Jest to wymagane do poprawnego działania funkcji wykorzystujących bazę danych, takie jak: komendy moderatora.
W przyszłości planowane jest dodanie więcej funkcji wykorzystujących bazę danych, niekoniecznie wykorzystujących ID użytkowników.
Poniższe komendy pozwalają zarzadzać bazą danych z poziomu Discorda:
- .db register {userID} {username} - ręcznie rejestruje użytkownika w bazie danych
- .db remove {userID} - usuwa użytkownika z bazy danych
- .db op {userID} - nadaje status moderatora bota danemu użytkownikowi
- .db deop {userID} - odbiera status moderatora bota danemu użytkownikowi
- .db select {userID} - wyświetla dane użytkownika o podanym ID
- .db setnickname {nickname} {userID} - ustawia nick użytkownika w bazie danych; jeśli nie podano ID, ustawia nick dla użytkownika wywołującego komendę
- .showdb - zapisuje zawartość bazy danych do pliku tempDB.txt i wysyła jako odpowiedź
Podstawowe Komendy:
======Chat======
hello
bye
hi
hello_there
psend
|
=========Converter=========
binary {dec. number}
hexa {dec. number}
convert {type} {number}
|
========Fun========
random
banner
botbanner
blankthing
apple
ai
badge
|
======Admin======
ShutDown
copylog
bash
rebuild
mkshortcut
mkservice {mode}
service
pingip
module
db
showdb
portal
|
=====BotInfo=====
manual {web/local}
credits
time
ping
release
next_update
|
========FileManager========
cd {directory}
dir {mode}
file {mode} {filename}
touch {file} {content}
|
====VoiceChannel====
join
leave
play {file dir}
ytplay {type} {link}
ytsearch
stop
pause
resume
waiting
|
=====ModOnly=====
testbot
testos
disks
delete
cleaner
webreq
kick
ban
unban
invitegen
echo
|