Dokąd podążasz, Discord?

Dokąd podążasz, Discord?

Popularny pośród graczy (i nie tylko) komunikator Discord kreuje się na "miejsce, które ułatwia codzienne rozmowy i częstsze spędzanie czasu razem". Rzeczywiście, typowy użytkownik nie ma na co narzekać - za darmo może tworzyć serwery rozmów, gdzie można pogadać także głosowo! Super, odpada korzystanie z przestarzałego TeamSpeaka - mógłby ktoś pomyśleć. Co innego jednak na temat tej platformy zdają się mieć ludzie, którzy tworzą zewnętrzne aplikacje i narzędzia wykorzystujące Discorda. Ale od początku.

Discord głuchy i ślepy

Okolice kwietnia i maja 2021 roku to był dosyć intensywny czas dla deweloperów Discorda. Do wersji testowych aplikacji zaczęły trafiać nowe grafiki i czcionki, a także prototypy nowych funkcji. Główne cztery "tory" rozwoju to:

  • rebranding (w zasadzie redesign)
  • kanały podium (jeden mówi, chętni podnoszą ręce)
  • komendy ukośnikowe
  • pierdoły typu przyciski

Rebranding

Wyjątkowo, bo hejtowany praktycznie przez wszystkich. Zaczęło się niewinnie.

Początkowo, w wersji Canary można było specjalnym sposobem włączyć na życzenie nowy wygląd.
Brak typowego fioletowego koloru.
Tło ekranu logowania. Platforma, która z wizerunku komunikatora dla graczy chce się przeistoczyć w komunikator dla każdego, jednocześnie dorzuca dziecinne grafiki. Brzmi sensownie.

Nie zabrakło też żebrania o wykupienie cudownego pakietu Nitro...

KUPUUUUUUUUUUUUUUUJ!!!

Skończyło się na zmianach, które odrzucały każdego. Dla starych użytkowników komunikatora było to... ciekawe przeżycie. Każdy tak czy siak musiał się dostosować do nieprzyjemnego koloru, nieczytelnej nowej czcionki i mniej przyjaznego loga. Zmniejszono znaczenie także ulubionej przez wielu maskotki Discorda - Wumpusa.

Nowe logo, nowa czcionka, nowy kolor.
Nikt na logo nie narzekał.
Bardziej wyrazisty kolor może przeszkadzać. Czcionka natomiast to jest jakaś porażka.

Nowe zmiany doczekały się wielu przeróbek, w tym tej poniższej - mojej ulubionej.

Komu przeszkadza nowy wygląd Discorda?

Większość użytkowników na Reddicie i innych portalach oceniło zmiany w wyglądzie na spory minus. W wielu innych artykułach także zwracano uwagę na dość przesadzone zmiany.

Discord to olał. Discord wprowadził wszystko jak leci i powiedział że jest OK. Discord jest ślepy i głuchy.

Kanały podium

Kanały podium to nic innego, jak klon Clubhouse - wybrańcy mogą sobie przemawiać, a w tym czasie inni mogą ich słuchać lub zgłaszać się przez podniesienie ręki. Ten "superficzer" można było zrobić sobie samemu (w dość prymitywny sposób, ale jednak) praktycznie od zawsze, odpowiednio wykorzystując role i ich uprawnienia. No ale zawsze trochę się kopiuje.

Zdjęcie ze wczesnej alfy - Rick Roll.
Dwa tygodnie później już można było wykrzesać więcej.

O kanałach podium słyszano od dłuższego czasu. Wprowadzenie jej natomiast trwało miesiącami. Dziwne, gdyż funkcja ta nie jest jakoś przełomowa, a na dodatek można było coś podobnego zrobić samemu, ale Discord musiał się pochwalić superastycznym hiperfajnym ficzerem. Oczekiwano wprowadzenia innych, ciekawszych dodatków, jak np. wspólne słuchanie muzyki na YouTubie albo wspólne granie w wybrane gry, ale takie zabawki są dostępne tylko dla serwerów, które region mają ustawiony na Amerykę Zachodnią.

Discord nie rozumie potrzeb swoich użytkowników.

Pierdoły typu przyciski

Akurat ciężko się do nich doczepić. Guziki i rozwijane listy pozwalają na zdecydowanie łatwiejszą interakcję z botami, np. przy przewijaniu kart pomocy albo wyborze piosenki.

Gorzej jest z tempem ogłaszania tych nowinek. Praktycznie o każdej fajnej funkcji deweloperzy dowiadują się z dnia na dzień poprzez serwery developerskie Discorda. A przecież nie każdy musi na takim serwerze być (bądź obserwować kanał ogłoszeniowy). Często jest więc tak, że deweloperzy o nowych rzeczach dowiadują się od starych wyjadaczy albo wcale. Najbardziej bawią nagłe zmiany dotyczące API, które ogłaszane są w momencie wprowadzania tych zmian lub po.

Komunikacja między Discordem a użytkownikami to jest dramat, do czego później wrócę.

Komendy ukośnikowe

Niewinnie przypomniane w blogowym poście okazały się najgorszym nowym elementem Discorda. Zacznijmy jednak od tego - czym te komendy są?

Tak się składa, że Telegram taką samą funkcję posiada od dawna i wygląda ona tak:

Lista komend po wpisaniu "/".

Po wpisaniu ukośnika, ukazuje nam się lista komend botów na danej grupie. Od razu wiadomo jaka komenda co robi. Proste? Pewnie, że tak.

Dlaczego więc klon "slash commands" przeszkadza praktycznie wszystkim na Discordzie? Powodów jest kilka:

  1. Inny styl używania komunikatorów. Na Telegramie zdają się dominować grupy bez botów albo z maksymalnie dwoma botami. Telegram po prostu nie jest na tyle rozbudowany, aby zachodziła potrzeba ich używania. Dlatego na serwerach Discord, gdzie znajduje się więcej botów, zaczyna się robić niezły bałagan. Wystarczy wpisać /help.
  2. Komendy ukośnikowe mają limity! Obecnie jest to 100 komend globalnych (na wszystkie serwery) oraz 100 komend na pojedynczy serwer. Jeżeli bot ma obecnie komend, załóżmy, 150 - musi je połączyć lub odsiać i zostawić tylko te najpopularniejsze. Teoretycznie można połączyć komendy serwerowe z globalnymi, ale implementowanie tego to dodatkowa praca, a samo rozwiązanie elastycznym nie jest. Może się zdarzyć, że serwer komendę zgubi. Developer musiałby brać takie banały pod uwagę. Jedynym więc stabilnym rozwiązaniem jest przycięcie oferowanych funkcji.
  3. Komendy ukośnikowe same w sobie są mało elastyczne. Oprócz wspomnianego limitu, jest jeszcze jedna ciekawa rzecz - modyfikacja, dodawanie lub usuwanie komend globalnych trwa do 1 godziny! Zakładając, że jesteś deweloperem próbującym na szybko poprawić opis komendy lub sposób jej użycia - powodzenia!
  4. Używanie tych komend jest mało wygodne - przynajmniej na komputerze, opcje należy wybierać klawiaturą bądź myszką oraz używać Tab. Nie można po prostu napisać, o nie!
  5. Nowy sposób korzystania z komend będzie WYMOGIEM dla zweryfikowanych botów od kwietnia 2022 roku. Powodem jest oczywiście bezpieczeństwo użytkowników. Dostęp do wiadomości przez boty będzie mocno ograniczony, gdyż developer będzie musiał w specjalnym formularzu wykazać, że jego bot potrzebuje wiadomości do życia. Jeżeli dostęp do wiadomości uzyska, to bardzo dobrze, ale nadal nie będzie mógł korzystać ze starego sposobu wydawania komend pod groźbą cofnięcia weryfikacji.
Samo wpisanie /help nie wystarczy - przez wspólny prefix należy się dodatkowo przeklikać do wybranego bota.
To ma być ta wygoda?

Discord nie ma pojęcia, jak wykorzystują go jego użytkownicy.

Autor discord.py robi ALT+F4

Danny (Rapptz) w sierpniu ogłosił, że biblioteka do botów discord.py przestaje być już wspierana i rozwijana. Autor dosyć mocno rozpisał się, jeżeli chodzi o historię API Discorda i jego rozwój, ale mnie osobiście przeraziła jedna rzecz - Discord tak samo jak olewa głosy developerów mniejszych botów, to tak samo ignoruje informacje zwrotne od developerów największych bibliotek.

Wielka weryfikacja

Początkowo, system weryfikacji botów nie miał być tak zaawansowany jak obecnie. Botom powyżej 100 serwerów miały być odcinane informacje o statusach ludzi. Wystarczyło jednak wypełnić prosty formularz, dołączyć ewentualnie filmik i odczekać na odpowiedź.

Obecnie, należy podać swój dowód osobisty oraz odpowiedzieć na szereg (około 10!) pytań, a następnie odczekać około miesiąca (zamiast obiecanych 5 dni) na częściową odmowę weryfikacji, tj. bot zweryfikowany, ale na przykład bez dostępu do statusów aktywności.

Należy też nadmienić, że w momencie zapowiedzenia oraz wprowadzenia takich ograniczeń, boty oraz biblioteki mocno bazowały na statusach użytkowników. Dlaczego? Gdy użytkownik aktualizuje swój status (albo po prostu Discorda zamyka lub otwiera), bot otrzymuje dosyć potężny zasób informacji o nim, który może przechowywać w pamięci podręcznej. Bot nie musi niczego żądać, po prostu jest karmiony takimi danymi.

W przypadku braku informacji o statusach, bot o każdego użytkownika musi "wołać" Discorda. W przypadku pojedynczych użytkowników - nie ma problemu, gorzej jednak, kiedy bot potrzebuje mieć absolutnie wszystkich, żeby utworzyć np. statystyki na kanałach głosowych.

W przypadku statystyk na kanałach głosowych - z dostępem do informacji o statusach użytkowników wygląda to tak:

  • Bot po uruchomieniu się dostaje pełno informacji o członkach serwera. Nie są to informacje o 100% członków, ale nadal jest to zdecydowana większość. Im większy serwer, tym większa szansa na brak kompletnych informacji. Nie są to jakoś liczby kosmiczne, różnica zazwyczaj jest niezauważalna.
  • Zakładając, że należy podliczać osobno użytkowników i osobno inne boty, bot sprawdza sobie w pamięci podręcznej wszystkich użytkowników, filtruje i zlicza. O nic Discorda prosić nie musi, bo wszystkie dane już Discord wysłał.
  • Bot po podliczeniu wszystkiego ustawia odpowiednie wartości w nazwach kanałów.

Bez statusów użytkowników sytuacja się diametralnie zmienia:

  • Bot po uruchomieniu się nie dostaje żadnych informacji. W tym momencie drogi się rozdzielają.
  • Opcja pierwsza: pobieranie wszystkich użytkowników naraz.
    - Bot żąda od Discorda, żeby odesłał mu informacje o wszystkich użytkownikach danego serwera.
    - Discord odpowiada, ale powoli i z limitami.
    - Jeżeli bot jest większy, to zaczyna zjadać zasoby serwera i staje się nieużywalny.
  • Opcja druga: nic.
    - Bot pobiera użytkowników pojedynczo albo wcale.
    - Filtruje to, co zachował w pamięci podręcznej i podstawia zmienne na kanałach.
    - Końcowy wynik to porażka, bo bot wie jedynie o garstce ludzi. Czasem może to być 1% członków serwera, czasem nawet 0%.

Teoretycznie wystarczyłoby wysłać odpowiednie zgłoszenie, aby dostęp do statusów ludzi otrzymać. W praktyce mało kto dostęp taki otrzymuje, nawet jeżeli argumenty są sensowne i solidne. A kto rozmawiał z supportem Discorda, ten w cyrku się nie śmieje. Odpowiedzi po miesiącach oczekiwania nie powinny nikogo dziwić, a o gotowych regułkach nawet nie wspomnę. Ale zastępowanie wsparcia technicznego botami to jest szczyt wszystkiego.

Zgłoszenie denerwującego użytkownika, odpowiedział mi bot gotowcem.
Podanie o odblokowanie dostępu do statusów. Tym razem dostałem się do polskiego supportu, który po polsku jednak dogadać się ze mną nie potrafił.
Inny wątek - pytanie o przyczyny ograniczania działania (cooldownu) moich botów. Okazało się, że muszę napisać z adresu e-mail bota.

Witajcie, nie obchodzi nas wasze zdanie!

W czerwcu 2021 Discord zorganizował spotkanie z ośmioma developerami najpopularniejszych bibliotek botów. Wszyscy programiści byli zgodni - należy bronić dostępu do wiadomości dla wszystkich botów. Nikt nie potrzebuje dodatkowej biurokracji, a dodatkowe restrykcje spowodowałyby jeszcze gorsze konsekwencje.

Zabranie botom dostępu do wiadomości nie ma na celu ochrony prywatności, oszczędności zasobów sprzętowych deweloperów (bo przetworzenie każdej wiadomości przez boty swoje robi) - zamiast tego ma zmusić ludzi do przepisania swoich aplikacji na komendy ukośnikowe. Przed deweloperami czeka więc sporo pracy, gdyż inaczej ich boty staną się bezużyteczne. A przecież nie wszystkie biblioteki nowy system wspierają!

A czas umyka, tik... tak...

Spokojnie, nawet jeżeli jakimś cudem bot otrzyma dostęp do wiadomości, to i tak nie będzie mógł go używać, bo byłoby to sprzeczne z intencją Discorda.

Obsługa komend nie może być powodem to przyznania dostępu, ale jestem przekonany, że nawet jeżeli obsługa ta byłaby "przy okazji", to radykalna administracja Discorda zabrałaby weryfikację bota bez mrugnięcia okiem.

Z powodu zerowego kontaktu z Discordem, zmianami wprowadzanymi wbrew wszystkim i kolejnymi ograniczeniami - Danny porzuca swoją bibliotekę discord.py.

My involvement in discord.py and the API was always fuelled by passion and hope. These recent changes have drained me completely of both of those things.

Dokąd w końcu podąża Discord?

Już nie.

Deweloperzy powoli zdają się mieć dosyć nowości w Discordzie. Większość developerów o zmianach dowiaduje się w momencie ich wprowadzenia lub ze zbyt małym wyprzedzeniem, aby się dostosować. Reszta programistów i hobbystów o nowinkach dowiaduje się wcześniej z przecieków bądź nawet bezpośrednio, ale nikt nie słucha i nie zamierza słuchać ich opinii.

Zespół Discorda jest wybitnie głuchy na jakąkolwiek opinię. Nawet jeżeli wszyscy są zgodni - "nowa rzecz X jest zła" - oni i tak robią swoje.

Jeżeli zbyt natarczywie będziesz zgłaszał się do Wsparcia Discord - bądź pewny, że przestaną ci odpowiadać.

Mało kto zdaje się to dostrzegać, ale zarząd coraz bardziej odrywa się od rzeczywistości. Z jednej strony - brak kontaktu z developerami i użytkownikami, a z drugiej - pakowanie większej ilości dodatków za Nitro (i to tym droższym, za $10 miesięcznie!). Taki jednostronny układ się po prostu nie uda. Ludzie chcą i muszą być słuchani. W przeciwnym wypadku przejdą do konkurencji, która już powolutku zaczyna zalety Discorda kopiować...