Wstęp
Cześć! Pewnie część z was od wielu miesięcy wie, że tworzę bota na mój koci discrod i też ta sama część wie, jak prezentuje się wersja testowa.
Do utworzenia bota wykorzystałem bibliotekę discord.js wraz z frameworkiem nest.js (z mojej strony to bardzo dzikie połączenie, ale to o tym później), a powstałe rezultaty są nawet obiecujące.
Powód powstania bota
Od wielu wielu lat chciałem mieć własnego bota, jako takie swoiste narzędzie całkowicie spersonalizowane pod potrzeby serwera. Drugim powodem i w moim odczuciu dużo mocniejszym to to, że mogę i chcę – ot taki kaprys 😅
Później czyli sierpień/wrzesień 2022 roku (nie tak dawno) zacząłem poszukiwania bota do zliczania XP. Myślałem nad Mee6, ale ten zaczął chcieć za to many many. Ok, nie mam nic przeciwko temu, ale że jestem zwolennikiem niewydawania bez potrzeby to znalazłem innego bota, ale tak na serio to żaden inny mi nie odpowiadał. Zatem – jakiegoś znalazłem i wrzuciłem na serwer, ale z tyłu głowy miałem to, że to nie jest do końca to. Z reszta większość fajnych opcji jest zablokowana i to był ten moment kiedy moja zachcianka zaczęła mieć rację bytu 💪
Poznanie się z discord.js
Początki były.. niecodzienne. Miałem duży problem z tym, aby w ogóle zacząć. To też z powodu tego, że u mnie ostatnio czasem krucho, ale też chodzi o to, że robiłem niby wszystko zgodnie z dokumentacją, ale bot po prostu nie chciał się odpalić. Mój skopiowany kod nie działał.
Straciłem kilka dni rozkmin na to jak prawidłowo skonfigurować bota i kolejne na utworzeniu komend zaczynających się od ukośnika. W końcu mnie olśniło! Skoro podaję jakiś token przez liba to może niepotrzebnie coś jest dopisane? Koniec końców wyszło na to, że za bardzo sobie pomieszałem to co było opisane na slackoverflow i tym co na github oraz tym co na dokumentacji. Usunąłem z tokenu to co sam dopisałem do niego i myk – lek na wszystko! To był jeden z tych dni kiedy sam siebie uznałem za debila.. Cóż.. każdemu mogło się zdarzyć 🙃
Po udanej naprawie postanowiłem pobawić się z tworzeniem komend i już było z górki. Jakieś tam parametry ustawiałem itd. – generalnie zabawa kodem. Potem uznałem, że wszystko spoko, ale pasuje to jakoś standaryzować i uznałem, że skoro to tylko lib to mogę go upakować w jakimś frameworku jako jakiś osobny moduł czy inny twór.
Większy poziom abstrakcji
Wziąłem się za nest.js. Nie był to strzał w kolano, ale żeby zrozumieć ten lekki absurd, w który sam się wpakowałem to miejcie na uwadze 3 następujące rzeczy:
- pisanie w nest.js wiąże się z używaniem języka TypeScript, którego po prostu nie znam tak dobrze jak np. Dart czy PHP
- nie znam nest.js.. to że potrafię w nim utworzyć DTO i kontrolery o niczym nie świadczy, to po prostu jest w dokumentacji podane na tacy 😅
- dopiero poznaję discord.js, co oznacza, że mam sporo do nauki
Z samym frameworkiem nie miałem problemów. Grzecznie utworzyłem moduł i piszę w nim jakbym tworzył całkowicie samodzielną aplikację. Nie wiem jak na długo zachowam taką hermetyczność, ale powiem, że jestem i tak z tego dumny.
Dalsze plany na bota
Mam wypisaną całą listę zadań do wykonania, aby tego bota zrobić. Nie będę tutaj jej przytaczać, ale chcę zrobić system liczenia XP, a wraz tym tablicę wyników. Dodać komendę do wylosowania zdjęcia losowego pieska (bo na kotki jest już). A co potem? Potem się pomyśli. Jestem też otwarty na sugestie 😄
Szczególne podziękowania
Dori zwany kiedyś Dorion300, bardzo usprawniłeś flow dotyczące bota. W ten projekt też wszedłeś bez większego zastanowienia i zaangażowałeś się tak jakby to był też Twój bot. Dzięki wielkie, z to że tak bardzo mi pomagasz i śmiało mogę oznajmić, że tak: to jest nasz wspólny bot 🫂 🥇
Luki_86 dzięki Tobie bot miauczy i czasami tym za bardzo spami. Podesłałeś też drugi fajny pomysł, który z pewnością wezmę pod uwagę 😁
Podsumowanie
Jak to bywa początki bywają trudne, ale też nie taki diabeł straszny jak go malują i tym optymistycznym akcentem zobaczymy się w kolejnym wpisie albo na kocim discordzie. Mrau 🐱