Skip to content

Commit

Permalink
FInally solved bot not leaving voice channel
Browse files Browse the repository at this point in the history
  • Loading branch information
BlitzOffline committed Mar 3, 2022
1 parent 102b7e8 commit 966a8a6
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class AudioHandler(private val bot: AlphaMusic, private val player: AudioPlayer,
if (player.startTrack(queue.poll(), false)) {
return bot.taskManager.removeLeaveTask(guildId)
}
bot.taskManager.addLeaveTask(bot.jda.guilds.first { it.id == guildId })
bot.taskManager.addLeaveTask(bot.jda, guildId)
}

/**
Expand Down Expand Up @@ -190,7 +190,7 @@ class AudioHandler(private val bot: AlphaMusic, private val player: AudioPlayer,
}

override fun onPlayerPause(player: AudioPlayer?) {
bot.taskManager.addLeaveTask(bot.jda.guilds.first { it.id == guildId })
bot.taskManager.addLeaveTask(bot.jda, guildId)
}

override fun onPlayerResume(player: AudioPlayer?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class StopCommand(private val bot: AlphaMusic) : BaseCommand() {
voteManager?.votes?.clear()
musicManager.audioHandler.clear()
musicManager.player.stopTrack()
bot.taskManager.addLeaveTask(guild)
bot.taskManager.addLeaveTask(bot.jda, guild.id)
return event.terminate("Stopped the audio!")
}

Expand All @@ -46,7 +46,7 @@ class StopCommand(private val bot: AlphaMusic) : BaseCommand() {
voteManager?.votes?.clear()
musicManager.audioHandler.clear()
musicManager.player.stopTrack()
bot.taskManager.addLeaveTask(guild)
bot.taskManager.addLeaveTask(bot.jda, guild.id)
return event.terminate("Stopped the audio!")
}

Expand All @@ -64,7 +64,7 @@ class StopCommand(private val bot: AlphaMusic) : BaseCommand() {
voteManager.votes.clear()
musicManager.audioHandler.clear()
musicManager.player.stopTrack()
bot.taskManager.addLeaveTask(guild)
bot.taskManager.addLeaveTask(bot.jda, guild.id)
return event.terminate("Stopped the audio!")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class VoiceChannelListener(private val bot: AlphaMusic) : ListenerAdapter() {
val musicManager = bot.getMusicManager(guild)

musicManager.player.isPaused = true
return bot.taskManager.addLeaveTask(guild)
return bot.taskManager.addLeaveTask(bot.jda, guild.id)
}

private fun onBotUnsuppressOrUnmute(guild: Guild, voiceState: GuildVoiceState) {
Expand Down Expand Up @@ -75,22 +75,22 @@ class VoiceChannelListener(private val bot: AlphaMusic) : ListenerAdapter() {
if (channelLeft.members.size >= 2) return
if (channelLeft.members[0] != guild.selfMember) return

bot.taskManager.addLeaveTask(guild)
bot.taskManager.addLeaveTask(bot.jda, guild.id)
}
}

private fun onGuildVoiceJoin(guild: Guild, member: Member, channelJoined: AudioChannel) {
if (member.id == guild.selfMember.id) {
val afk = guild.afkChannel
if (afk != null && channelJoined.id == afk.id) {
return bot.taskManager.addLeaveTask(guild)
return bot.taskManager.addLeaveTask(bot.jda, guild.id)
}

val musicManager = bot.getMusicManager(guild)
musicManager.player.isPaused = false

if (musicManager.player.playingTrack == null) {
bot.taskManager.addLeaveTask(guild)
bot.taskManager.addLeaveTask(bot.jda, guild.id)
}
bot.taskManager.removeClearTask(guild.id)
} else {
Expand Down
11 changes: 6 additions & 5 deletions src/main/kotlin/com/blitzoffline/alphamusic/tasks/TaskManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import com.blitzoffline.alphamusic.audio.GuildMusicManager
import java.util.Timer
import java.util.TimerTask
import kotlin.concurrent.schedule
import net.dv8tion.jda.api.entities.Guild
import net.dv8tion.jda.api.JDA

class TaskManager {
private val clearTasks = hashMapOf<String, TimerTask>()
Expand All @@ -14,14 +14,15 @@ class TaskManager {
return leaveTasks
}

@Synchronized fun addLeaveTask(guild: Guild, delay: Long = 300000) {
if (leaveTasks[guild.id] != null) {
@Synchronized fun addLeaveTask(jda: JDA, guildId: String, delay: Long = 300000) {
if (leaveTasks[guildId] != null) {
return
}

leaveTasks[guild.id] = Timer().schedule(delay) {
leaveTasks[guildId] = Timer().schedule(delay) {
val guild = jda.guildCache.firstOrNull { it.id == guildId } ?: return@schedule
guild.audioManager.closeAudioConnection()
removeLeaveTask(guild.id)
removeLeaveTask(guildId)
}
}

Expand Down

0 comments on commit 966a8a6

Please sign in to comment.