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.