patryk96 14 Opublikowano 27 czerwca 2020 Udostępnij Opublikowano 27 czerwca 2020 (edytowane) Witam, wszystkich w tym poradniku dowiesz się jak stworzyć plugin, który będzie wyświetlał ilość graczy z naszego serwera na kanale Discord. Zaczynajmy! Krok 1. Stworzenie serwera discord. Klikamy plusik na pasku serwerów po lewej stronie naszego discorda następnie klikamy "Stwórz serwer" wpisujemy nazwe serwer i klikamy przycisk Stwórz. Krok 2. Stworzenie kanału głosowego. Kanał głosowy tworzymy dlatego, iż w kanałach tekstowych nie możemy używać spacji, a wygląd kanału "online-0" jest niezbyt profesjonalny. Kanał możemy już nazwać nazwą "Online: 0". Krok 3. Stworzenie aplikacji Discord oraz bota. Przejdź na stronę https://discord.com/developers/applications zaloguj się następnie przejdź do zakładki Applications i w prawym górnym rogu kliknij przycisk New Application wpisz nazwę aplikacji np.: minecraft i klikamy przycisk Create. Teraz przejdź do zakładki Bot i klikamy przycisk Add bot po prawo. Bot został stworzony. Krok 4. Zaproszenie bota na nasz serwer discord. Przechodzimy do zakładki OAuth2 w SCOPES zaznaczamy bot, w BOT_PERMISSIONS Admininistrator kopiujemy link i wklejamy go w nową kartę w przeglądarce wybieramy serwer i dołączamy do niego. Szczegółowo jest to opisane tutaj: https://discordpy.readthedocs.io/en/latest/discord.html#inviting-your-bot. Bot jest już na naszym serwerze teraz przejdźmy do pisania wtyczki pod serwer. Do stworzenia wtyczki będziemy potrzebowali api discorda my użyjemy JDA (Java Discord API). Aktualizować nazwę kanału możemy 2 razy na 10 minut, więc aktualizowanie nazwy kanału zrobimy w tasku co 6 minut. Repozytoria maven: Spigot: https://www.spigotmc.org/wiki/spigot-maven/. JDA (Java Discord API) https://github.com/DV8FromTheWorld/JDA. Teraz zaczniemy tworzyć wtyczkę. 1. Stwórz klasę główną z jej statyczną instancją. import org.bukkit.plugin.java.JavaPlugin; public class DiscordPlugin extends JavaPlugin { private static DiscordPlugin discordPlugin; @Override public void onEnable(){ discordPlugin = new DiscordPlugin(); } public static DiscordPlugin getDiscordPlugin() { return discordPlugin; } } 2. Stwórz klasę Bot w której uruchomimy bota. import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import javax.security.auth.login.LoginException; public class Bot { private JDA jda; //Tworzymy voida z zmienną String która będzie przechowywała token. public Bot(String token){ try { jda = new JDABuilder(token).build(); } catch (LoginException e) { e.printStackTrace(); } } public JDA getJda() { return jda; } } 3. Tworzymy zmienną long o nazwie channelOnlineID, do której przypisujemy ID kanału, w którym chcemy zmienić nazwę. Aby otrzymać ID kanału kliknij PPM na kanał i z samego dołu wybierz: Kopiuj ID. import org.bukkit.plugin.java.JavaPlugin; public class DiscordPlugin extends JavaPlugin { private static DiscordPlugin discordPlugin; private long channelOnlineID; private Bot bot; @Override public void onEnable(){ discordPlugin = new DiscordPlugin(); //Token który odbierasz na stronie discord developer w zakładce bot this.bot = new Bot("NzI1MDkzNDc5MjIyMzQ1ODUy.XvdcVw.3NxaTmfIKYr6fsPnxOuaW2ZwFBg"); //ID kanału na którym nazwa ma być odświeżana this.channelOnlineID = 724920522042900533l; } public static DiscordPlugin getDiscordPlugin() { return discordPlugin; } public Bot getBot() { return bot; } public long getChannelOnlineID() { return channelOnlineID; } } 4. Tworzenie taska. import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitRunnable; public class Task extends BukkitRunnable { @Override public void run() { DiscordPlugin .getDiscordPlugin() .getBot() .getJda() .getVoiceChannelById(DiscordPlugin.getDiscordPlugin().getChannelOnlineID()) .getManager() .setName("Online: "+ Bukkit.getOnlinePlayers().size()) .queue(); } } 5. Rejestracja taska. Ja taska zarejestrowałem co 6 min, bo wiadomo na styk nie wszystko jest dobre. @Override public void onEnable(){ discordPlugin = new DiscordPlugin(); this.bot = new Bot("NzI1MDkzNDc5MjIyMzQ1ODUy.XvdcVw.3NfaTmBIKYr6fsPnxOuaW2ZwFBg"); this.channelOnlineID = 724920522042900533l; //Rejestracja taska new Task().runTaskTimerAsynchronously(this, ((60*20L)*6), ((60*20L)*6)); } Stwórz plugin.yml, a następnie zbuduj plugin i wgraj go na serwer. Dziękuję za obejrzenie całego poradnika. W razie problemów proszę pisać tutaj chętnie pomogę. Czekam na jakieś propozycje do innych poradników. Edytowane 27 czerwca 2020 przez Wojciu Poprawiam formatowanie. Notatka dodana przez Wojciu Osnixeroo, paweU, dngs i 1 inny 2 2 Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/ Udostępnij na innych stronach Więcej opcji udostępniania...
steel_golem 0 Opublikowano 9 maja 2021 Udostępnij Opublikowano 9 maja 2021 Dziękuje za pomoc Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-303119 Udostępnij na innych stronach Więcej opcji udostępniania...
paweU 64 Opublikowano 11 maja 2021 Udostępnij Opublikowano 11 maja 2021 Fajny poradnik Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-303199 Udostępnij na innych stronach Więcej opcji udostępniania...
mikolajplsz 0 Opublikowano 29 maja 2021 Udostępnij Opublikowano 29 maja 2021 Od 4 punktu nie rozumiem nic. Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-304687 Udostępnij na innych stronach Więcej opcji udostępniania...
Zwiadowca001 1 Opublikowano 24 września 2023 Udostępnij Opublikowano 24 września 2023 Jak mam "stworzyć wtyczkę"? I ogólnie, jakbyś to wytłumaczył dla kogos, kto nie umie wgl pisać pluginów ITP? @patryk96 opkarol 1 Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-337660 Udostępnij na innych stronach Więcej opcji udostępniania...
kerpson 551 Opublikowano 25 września 2023 Udostępnij Opublikowano 25 września 2023 W dniu 24.09.2023 o 15:50, Zwiadowca001 napisał: I ogólnie, jakbyś to wytłumaczył dla kogos, kto nie umie wgl pisać pluginów ITP? @patryk96 jak ktoś wgl nie umie pisać pluginów to niech nauczy się podstaw bo i tak czy siak nic nie zrozumie:> Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-337688 Udostępnij na innych stronach Więcej opcji udostępniania...
devyy 17 Opublikowano 29 września 2023 Udostępnij Opublikowano 29 września 2023 (edytowane) Proponuje kilka poprawek: 1. W klasie głównej DiscordPlugin, metoda onEnable() tworzy nową instancję DiscordPlugin, co jest niepoprawne. Zamiast tego powinieneś przypisać this do discordPlugin, chyba że źle zrozumiałem i onEnable jest w osobnej klasie. @Override public void onEnable(){ discordPlugin = this; // reszta kodu } 2. W klasie Bot, zamiast obsługiwać wyjątek LoginException w konstruktorze, lepiej byłoby go przekazać do metody wywołującej, aby mogła go odpowiednio obsłużyć. Możesz to zrobić, deklarując, że Twój konstruktor rzuca LoginException: public Bot(String token) throws LoginException { jda = new JDABuilder(token).build(); } 3. W klasie DiscordPlugin, token bota i ID kanału są twarde. Zamiast tego powinieneś przechowywać te wartości w pliku konfiguracyjnym i wczytywać je stamtąd. 4. W klasie Task, używasz statycznej metody getDiscordPlugin(), aby uzyskać dostęp do instancji bota i ID kanału. Zamiast tego powinieneś przekazać te wartości jako argumenty do konstruktora Task. 5. Rejestracja zadania powinna być wykonana po utworzeniu bota i ustawieniu ID kanału, aby upewnić się, że te wartości są dostępne, gdy zadanie jest uruchamiane. Oprócz tego wszystko wygląda git. Edytowane 29 września 2023 przez devyy Cytuj Odnośnik do komentarza https://skript.pl/temat/40144-bot-wy%C5%9Bwietlaj%C4%85cy-ilo%C5%9B%C4%87-graczy-na-kanale-discord/#findComment-337781 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.