|
@ -21,6 +21,7 @@ import net.dv8tion.jda.api.JDABuilder; |
|
|
import net.dv8tion.jda.api.OnlineStatus; |
|
|
import net.dv8tion.jda.api.OnlineStatus; |
|
|
import net.dv8tion.jda.api.entities.Activity; |
|
|
import net.dv8tion.jda.api.entities.Activity; |
|
|
import net.dv8tion.jda.api.entities.Guild; |
|
|
import net.dv8tion.jda.api.entities.Guild; |
|
|
|
|
|
import net.dv8tion.jda.api.entities.VoiceChannel; |
|
|
|
|
|
|
|
|
import javax.security.auth.login.LoginException; |
|
|
import javax.security.auth.login.LoginException; |
|
|
import java.io.File; |
|
|
import java.io.File; |
|
@ -62,11 +63,15 @@ public final class YoshiBot { |
|
|
|
|
|
|
|
|
@Getter |
|
|
@Getter |
|
|
private final Random random = new Random(); |
|
|
private final Random random = new Random(); |
|
|
|
|
|
|
|
|
|
|
|
@Getter |
|
|
|
|
|
private boolean active; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht den Bot selbst. |
|
|
* Initialisiert alle dynamisch hinzugefügten und statischen Ressourcen. Startet aber nicht den Bot selbst. |
|
|
*/ |
|
|
*/ |
|
|
public boolean init(String configPath) { |
|
|
public boolean init(String configPath) { |
|
|
|
|
|
active = false; |
|
|
return Resources.init(configPath); |
|
|
return Resources.init(configPath); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -113,6 +118,8 @@ public final class YoshiBot { |
|
|
new SauceProvider(300); |
|
|
new SauceProvider(300); |
|
|
|
|
|
|
|
|
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(YoshiBot::setRandomActivity, 0, 10, TimeUnit.HOURS); |
|
|
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(YoshiBot::setRandomActivity, 0, 10, TimeUnit.HOURS); |
|
|
|
|
|
|
|
|
|
|
|
if(active) autoConnectToChannel(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public synchronized void stop() { |
|
|
public synchronized void stop() { |
|
@ -148,5 +155,35 @@ public final class YoshiBot { |
|
|
yoshiBot.jda.getPresence().setActivity(Activity.playing(activity)); |
|
|
yoshiBot.jda.getPresence().setActivity(Activity.playing(activity)); |
|
|
Logger.logInfo("Setze Aktivität auf " + activity); |
|
|
Logger.logInfo("Setze Aktivität auf " + activity); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void joinVoiceChannel(VoiceChannel vc){ |
|
|
|
|
|
if(vc.equals(guild.getAudioManager().getConnectedChannel())) return; |
|
|
|
|
|
leaveAudioChannel(); |
|
|
|
|
|
guild.getAudioManager().openAudioConnection(vc); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void leaveAudioChannel(){ |
|
|
|
|
|
if(guild.getAudioManager().getConnectedChannel() == null) return; |
|
|
|
|
|
guild.getAudioManager().closeAudioConnection(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void autoConnectToChannel(){ |
|
|
|
|
|
VoiceChannel maxMembersVoiceChannel = null; |
|
|
|
|
|
int maxMembers = 0; |
|
|
|
|
|
for(VoiceChannel vc : guild.getVoiceChannels()){ |
|
|
|
|
|
if(vc.getMembers().size() > maxMembers){ |
|
|
|
|
|
maxMembersVoiceChannel = vc; |
|
|
|
|
|
maxMembers = vc.getMembers().size(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(maxMembers == 0) leaveAudioChannel(); |
|
|
|
|
|
else joinVoiceChannel(maxMembersVoiceChannel); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void setActive(boolean a){ |
|
|
|
|
|
active = a; |
|
|
|
|
|
if(active) autoConnectToChannel(); |
|
|
|
|
|
else leaveAudioChannel(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |