Compare commits
No commits in common. "master" and "6.5.2" have entirely different histories.
38 changed files with 99 additions and 136 deletions
|
@ -26,7 +26,6 @@ A Discord music bot, written in Kotlin using the kord library.
|
||||||
- skip -- Skip to the next song
|
- skip -- Skip to the next song
|
||||||
- queue -- Show what songs are next up
|
- queue -- Show what songs are next up
|
||||||
- nowplaying -- Show what is currently playing
|
- nowplaying -- Show what is currently playing
|
||||||
- seek -- Seek to a specific time in the song
|
|
||||||
- Features
|
- Features
|
||||||
- Button Controller -- You can control the currently playing music using buttons.
|
- Button Controller -- You can control the currently playing music using buttons.
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.jetbrains.gradle.ext.ProjectSettings
|
import org.jetbrains.gradle.ext.ProjectSettings
|
||||||
|
@ -32,7 +33,7 @@ val ownerID = 372703841151614976L
|
||||||
group = "net.moonleay.botendo"
|
group = "net.moonleay.botendo"
|
||||||
version = System.getenv("CI_COMMIT_TAG")?.let { "$it-${System.getenv("CI_COMMIT_SHORT_SHA")}-prod" }
|
version = System.getenv("CI_COMMIT_TAG")?.let { "$it-${System.getenv("CI_COMMIT_SHORT_SHA")}-prod" }
|
||||||
?: System.getenv("CI_COMMIT_SHORT_SHA")?.let { "$it-dev" }
|
?: System.getenv("CI_COMMIT_SHORT_SHA")?.let { "$it-dev" }
|
||||||
?: "6.5.5"
|
?: "6.5.2"
|
||||||
|
|
||||||
val kordext_ver = "1.7.1-SNAPSHOT"
|
val kordext_ver = "1.7.1-SNAPSHOT"
|
||||||
val lavakord_ver = "6.0.0"
|
val lavakord_ver = "6.0.0"
|
||||||
|
|
|
@ -15,4 +15,5 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
6
gradle/wrapper/gradle-wrapper.properties
vendored
6
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -15,11 +15,9 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||||
networkTimeout=10000
|
|
||||||
validateDistributionUrl=true
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
42
gradlew
vendored
42
gradlew
vendored
|
@ -17,6 +17,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
|
@ -57,7 +58,7 @@
|
||||||
# Darwin, MinGW, and NonStop.
|
# Darwin, MinGW, and NonStop.
|
||||||
#
|
#
|
||||||
# (3) This script is generated from the Groovy template
|
# (3) This script is generated from the Groovy template
|
||||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
# within the Gradle project.
|
# within the Gradle project.
|
||||||
#
|
#
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
@ -82,11 +83,13 @@ do
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# This is normally unused
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
# shellcheck disable=SC2034
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
|
@ -133,29 +136,22 @@ location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD=java
|
JAVACMD=java
|
||||||
if ! command -v java >/dev/null 2>&1
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
then
|
|
||||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
case $MAX_FD in #(
|
case $MAX_FD in #(
|
||||||
max*)
|
max*)
|
||||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
|
||||||
# shellcheck disable=SC2039,SC3045
|
|
||||||
MAX_FD=$( ulimit -H -n ) ||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
warn "Could not query maximum file descriptor limit"
|
warn "Could not query maximum file descriptor limit"
|
||||||
esac
|
esac
|
||||||
case $MAX_FD in #(
|
case $MAX_FD in #(
|
||||||
'' | soft) :;; #(
|
'' | soft) :;; #(
|
||||||
*)
|
*)
|
||||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
|
||||||
# shellcheck disable=SC2039,SC3045
|
|
||||||
ulimit -n "$MAX_FD" ||
|
ulimit -n "$MAX_FD" ||
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
esac
|
esac
|
||||||
|
@ -200,15 +196,11 @@ if "$cygwin" || "$msys" ; then
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
# Collect all arguments for the java command:
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
|
||||||
# and any embedded shellness will be escaped.
|
|
||||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
|
||||||
# treated as '${Hostname}' itself on the command line.
|
|
||||||
|
|
||||||
set -- \
|
set -- \
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
@ -216,12 +208,6 @@ set -- \
|
||||||
org.gradle.wrapper.GradleWrapperMain \
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
"$@"
|
"$@"
|
||||||
|
|
||||||
# Stop when "xargs" is not available.
|
|
||||||
if ! command -v xargs >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
die "xargs is not available"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Use "xargs" to parse quoted args.
|
# Use "xargs" to parse quoted args.
|
||||||
#
|
#
|
||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
|
15
gradlew.bat
vendored
15
gradlew.bat
vendored
|
@ -14,7 +14,7 @@
|
||||||
@rem limitations under the License.
|
@rem limitations under the License.
|
||||||
@rem
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%"=="" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@rem Gradle startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
|
@ -25,8 +25,7 @@
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%"=="" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
@rem This is normally unused
|
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@ -41,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if %ERRORLEVEL% equ 0 goto execute
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
@ -76,15 +75,13 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||||
|
|
||||||
:fail
|
:fail
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
rem the _cmd.exe /c_ return code!
|
rem the _cmd.exe /c_ return code!
|
||||||
set EXIT_CODE=%ERRORLEVEL%
|
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
exit /b 1
|
||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
|
||||||
exit /b %EXIT_CODE%
|
|
||||||
|
|
||||||
:mainEnd
|
:mainEnd
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
/*
|
/*
|
||||||
* Botendo
|
* Botendo
|
||||||
* Copyright (C) 2023 moonleay
|
* Copyright (C) 2023 limited_dev
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rootProject.name = "Botendo"
|
rootProject.name = "Botendo"
|
||||||
|
|
|
@ -14,31 +14,25 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo
|
package net.moonleay.botendo
|
||||||
|
|
||||||
import com.kotlindiscord.kord.extensions.ExtensibleBot
|
import com.kotlindiscord.kord.extensions.ExtensibleBot
|
||||||
import dev.kord.common.Color
|
import dev.kord.common.Color
|
||||||
import dev.kord.common.entity.Snowflake
|
|
||||||
import dev.kord.core.behavior.getChannelOf
|
|
||||||
import dev.kord.core.behavior.interaction.response.respond
|
import dev.kord.core.behavior.interaction.response.respond
|
||||||
import dev.kord.core.entity.channel.VoiceChannel
|
|
||||||
import dev.kord.core.event.interaction.ButtonInteractionCreateEvent
|
import dev.kord.core.event.interaction.ButtonInteractionCreateEvent
|
||||||
import dev.kord.core.event.user.VoiceStateUpdateEvent
|
|
||||||
import dev.kord.core.on
|
import dev.kord.core.on
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.LavaKord
|
import dev.schlaubi.lavakord.LavaKord
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
|
||||||
import dev.schlaubi.lavakord.kord.getLink
|
|
||||||
import dev.schlaubi.lavakord.kord.lavakord
|
import dev.schlaubi.lavakord.kord.lavakord
|
||||||
import kotlinx.coroutines.flow.count
|
|
||||||
import net.moonleay.botendo.data.CredentialManager
|
import net.moonleay.botendo.data.CredentialManager
|
||||||
import net.moonleay.botendo.extensions.music.*
|
import net.moonleay.botendo.extensions.music.*
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
|
||||||
import net.moonleay.botendo.extensions.util.InfoExtension
|
import net.moonleay.botendo.extensions.util.InfoExtension
|
||||||
import net.moonleay.botendo.util.Logger
|
import net.moonleay.botendo.util.Logger
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
object Bot {
|
object Bot {
|
||||||
//The kord object gets set at app launch
|
//The kord object gets set at app launch
|
||||||
|
@ -75,7 +69,7 @@ object Bot {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.presence {
|
this.presence {
|
||||||
this.streaming("music", "https://twitch.tv/moonleaytv")
|
this.streaming("music", "https://twitch.tv/limited_dev")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +91,6 @@ object Bot {
|
||||||
b.onInteraction(response, g, u)
|
b.onInteraction(response, g, u)
|
||||||
return@on
|
return@on
|
||||||
}
|
}
|
||||||
// Button not found
|
|
||||||
response.respond {
|
response.respond {
|
||||||
this.embed {
|
this.embed {
|
||||||
this.color = Color(0xE0311A)
|
this.color = Color(0xE0311A)
|
||||||
|
@ -110,34 +103,6 @@ object Bot {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow the bot to leave the VC if there are no users in the VC
|
|
||||||
bot.kordRef.on<VoiceStateUpdateEvent> {
|
|
||||||
if (this.state.userId == bot.kordRef.selfId) {
|
|
||||||
// Ignore self
|
|
||||||
return@on
|
|
||||||
}
|
|
||||||
val g = this.state.getGuild().asGuild()
|
|
||||||
val link = lava.getLink(g.id)
|
|
||||||
if (link.state != Link.State.CONNECTED) {
|
|
||||||
// Ignore if not connected
|
|
||||||
return@on
|
|
||||||
}
|
|
||||||
val myChannel = link.lastChannelId!!
|
|
||||||
if (g.getChannelOrNull(Snowflake(myChannel)) == null) {
|
|
||||||
// Ignore if channel cannot be found
|
|
||||||
return@on
|
|
||||||
}
|
|
||||||
val ch = g.getChannelOf<VoiceChannel>(Snowflake(myChannel))
|
|
||||||
if (ch.voiceStates.count() > 1) {
|
|
||||||
// Ignore if there are other users in the channel
|
|
||||||
return@on
|
|
||||||
}
|
|
||||||
// Stop playing if there are no users in the channel
|
|
||||||
val pl = MusicManager.getMusicManager(g)!!.pl
|
|
||||||
pl.stopTrack()
|
|
||||||
link.destroy()
|
|
||||||
}
|
|
||||||
|
|
||||||
//Start the bot
|
//Start the bot
|
||||||
bot.start()
|
bot.start()
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,15 +14,14 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo
|
package net.moonleay.botendo
|
||||||
|
|
||||||
import net.moonleay.botendo.util.Logger
|
|
||||||
|
|
||||||
|
|
||||||
///Show the splash and launch the Bot
|
///Show the splash and launch the Bot
|
||||||
suspend fun main(args: Array<String>) {
|
suspend fun main() {
|
||||||
println(
|
println(
|
||||||
"M#\"\"\"\"\"\"\"'M dP dP \n" +
|
"M#\"\"\"\"\"\"\"'M dP dP \n" +
|
||||||
"## mmmm. `M 88 88 \n" +
|
"## mmmm. `M 88 88 \n" +
|
||||||
|
@ -34,9 +33,5 @@ suspend fun main(args: Array<String>) {
|
||||||
" "
|
" "
|
||||||
)
|
)
|
||||||
println("Bot v.${net.moonleay.botendo.build.BuildConstants.version}, Kord Extensions v.${net.moonleay.botendo.build.BuildConstants.kordVersion}, LavaKord v.${net.moonleay.botendo.build.BuildConstants.lavaVersion}, Coroutines v.${net.moonleay.botendo.build.BuildConstants.coroutinesVersion}")
|
println("Bot v.${net.moonleay.botendo.build.BuildConstants.version}, Kord Extensions v.${net.moonleay.botendo.build.BuildConstants.kordVersion}, LavaKord v.${net.moonleay.botendo.build.BuildConstants.lavaVersion}, Coroutines v.${net.moonleay.botendo.build.BuildConstants.coroutinesVersion}")
|
||||||
if(args.isEmpty() || args[0] != "--debug") {
|
|
||||||
Logger.out("Waiting 10 seconds for Lavalink to start...")
|
|
||||||
Thread.sleep(10000)
|
|
||||||
}
|
|
||||||
Bot.start()
|
Bot.start()
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons
|
package net.moonleay.botendo.buttons
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons
|
package net.moonleay.botendo.buttons
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons.music
|
package net.moonleay.botendo.buttons.music
|
||||||
|
@ -26,10 +27,12 @@ import dev.kord.core.entity.User
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
|
import dev.kord.rest.builder.message.modify.actionRow
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.ButtonUtil
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class PauseButton : net.moonleay.botendo.buttons.Button("btn.music.pause") {
|
class PauseButton : net.moonleay.botendo.buttons.Button("btn.music.pause") {
|
||||||
override suspend fun onInteraction(
|
override suspend fun onInteraction(
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons.music
|
package net.moonleay.botendo.buttons.music
|
||||||
|
@ -26,11 +27,13 @@ import dev.kord.core.entity.User
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
|
import dev.kord.rest.builder.message.modify.actionRow
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.ButtonUtil
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
import net.moonleay.botendo.util.TimeUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class QueueButton : net.moonleay.botendo.buttons.Button("btn.music.queue") {
|
class QueueButton : net.moonleay.botendo.buttons.Button("btn.music.queue") {
|
||||||
override suspend fun onInteraction(
|
override suspend fun onInteraction(
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons.music
|
package net.moonleay.botendo.buttons.music
|
||||||
|
@ -26,10 +27,12 @@ import dev.kord.core.entity.User
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
|
import dev.kord.rest.builder.message.modify.actionRow
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.ButtonUtil
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class RepeatButton : net.moonleay.botendo.buttons.Button("btn.music.repeat") {
|
class RepeatButton : net.moonleay.botendo.buttons.Button("btn.music.repeat") {
|
||||||
override suspend fun onInteraction(
|
override suspend fun onInteraction(
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons.music
|
package net.moonleay.botendo.buttons.music
|
||||||
|
@ -27,12 +28,10 @@ import dev.kord.core.entity.User
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
|
import dev.kord.rest.builder.message.modify.actionRow
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.*
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
|
||||||
import net.moonleay.botendo.util.UrlUtil
|
|
||||||
|
|
||||||
class SkipButton : net.moonleay.botendo.buttons.Button("btn.music.skip") {
|
class SkipButton : net.moonleay.botendo.buttons.Button("btn.music.skip") {
|
||||||
override suspend fun onInteraction(
|
override suspend fun onInteraction(
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.buttons.music
|
package net.moonleay.botendo.buttons.music
|
||||||
|
@ -27,6 +28,7 @@ import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class StopButton : net.moonleay.botendo.buttons.Button("btn.music.stop") {
|
class StopButton : net.moonleay.botendo.buttons.Button("btn.music.stop") {
|
||||||
override suspend fun onInteraction(
|
override suspend fun onInteraction(
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.data
|
package net.moonleay.botendo.data
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -23,14 +24,12 @@ import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
||||||
import dev.kord.common.Color
|
import dev.kord.common.Color
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
|
import dev.kord.rest.builder.message.create.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import dev.schlaubi.lavakord.kord.getLink
|
import dev.schlaubi.lavakord.kord.getLink
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.*
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
|
||||||
import net.moonleay.botendo.util.UrlUtil
|
|
||||||
|
|
||||||
class NowPlayingExtension : Extension() {
|
class NowPlayingExtension : Extension() {
|
||||||
override val name = "nowplaying"
|
override val name = "nowplaying"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -24,7 +25,6 @@ import dev.kord.common.Color
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import dev.schlaubi.lavakord.kord.getLink
|
import dev.schlaubi.lavakord.kord.getLink
|
||||||
import net.moonleay.botendo.Bot
|
|
||||||
import net.moonleay.botendo.extensions.music.components.LinkArguments
|
import net.moonleay.botendo.extensions.music.components.LinkArguments
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
@ -41,7 +41,7 @@ class PlayExtension : Extension() {
|
||||||
description = "Play music"
|
description = "Play music"
|
||||||
this.action {
|
this.action {
|
||||||
val guildId = this.guild!!.id
|
val guildId = this.guild!!.id
|
||||||
val link = Bot.lava.getLink(guildId)
|
val link = net.moonleay.botendo.Bot.lava.getLink(guildId)
|
||||||
val u = this.user
|
val u = this.user
|
||||||
val vcsUser = u.asMember(guildId).getVoiceStateOrNull()
|
val vcsUser = u.asMember(guildId).getVoiceStateOrNull()
|
||||||
if (vcsUser == null) {
|
if (vcsUser == null) {
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -22,13 +23,16 @@ import com.kotlindiscord.kord.extensions.extensions.Extension
|
||||||
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
||||||
import dev.kord.common.Color
|
import dev.kord.common.Color
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
|
import dev.kord.rest.builder.message.EmbedBuilder.Limits.title
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
|
import dev.kord.rest.builder.message.create.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.ButtonUtil
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
import net.moonleay.botendo.util.TimeUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class QueueExtension : Extension() {
|
class QueueExtension : Extension() {
|
||||||
override val name = "queue"
|
override val name = "queue"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -27,10 +28,7 @@ import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.extensions.music.components.SeekArguments
|
import net.moonleay.botendo.extensions.music.components.SeekArguments
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.*
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
|
||||||
import net.moonleay.botendo.util.UrlUtil
|
|
||||||
|
|
||||||
class SeekExtension : Extension() {
|
class SeekExtension : Extension() {
|
||||||
override val name = "seek"
|
override val name = "seek"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -23,13 +24,11 @@ import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
|
||||||
import dev.kord.common.Color
|
import dev.kord.common.Color
|
||||||
import dev.kord.rest.builder.component.ActionRowBuilder
|
import dev.kord.rest.builder.component.ActionRowBuilder
|
||||||
import dev.kord.rest.builder.message.actionRow
|
import dev.kord.rest.builder.message.actionRow
|
||||||
|
import dev.kord.rest.builder.message.create.actionRow
|
||||||
import dev.kord.rest.builder.message.embed
|
import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.*
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
|
||||||
import net.moonleay.botendo.util.UrlUtil
|
|
||||||
|
|
||||||
class SkipExtension : Extension() {
|
class SkipExtension : Extension() {
|
||||||
override val name = "skip"
|
override val name = "skip"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -26,6 +27,7 @@ import dev.schlaubi.lavakord.audio.Link
|
||||||
import dev.schlaubi.lavakord.kord.getLink
|
import dev.schlaubi.lavakord.kord.getLink
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
class StopExtension : Extension() {
|
class StopExtension : Extension() {
|
||||||
override val name = "stop"
|
override val name = "stop"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music
|
package net.moonleay.botendo.extensions.music
|
||||||
|
@ -27,6 +28,7 @@ import dev.schlaubi.lavakord.kord.getLink
|
||||||
import net.moonleay.botendo.extensions.music.components.LinkArguments
|
import net.moonleay.botendo.extensions.music.components.LinkArguments
|
||||||
import net.moonleay.botendo.extensions.music.components.MusicManager
|
import net.moonleay.botendo.extensions.music.components.MusicManager
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
import net.moonleay.botendo.util.MessageUtil
|
||||||
|
import net.moonleay.botendo.util.UserUtil
|
||||||
|
|
||||||
|
|
||||||
class UpsertExtension : Extension() {
|
class UpsertExtension : Extension() {
|
||||||
|
|
|
@ -14,14 +14,15 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music.components
|
package net.moonleay.botendo.extensions.music.components
|
||||||
|
|
||||||
|
import dev.arbjerg.lavalink.protocol.v4.LoadResult
|
||||||
import dev.arbjerg.lavalink.protocol.v4.Track
|
import dev.arbjerg.lavalink.protocol.v4.Track
|
||||||
import dev.schlaubi.lavakord.audio.*
|
import dev.schlaubi.lavakord.audio.*
|
||||||
import dev.schlaubi.lavakord.audio.player.Player
|
import dev.schlaubi.lavakord.audio.player.Player
|
||||||
import net.moonleay.botendo.Bot
|
|
||||||
import net.moonleay.botendo.util.Logger
|
import net.moonleay.botendo.util.Logger
|
||||||
import java.util.concurrent.BlockingQueue
|
import java.util.concurrent.BlockingQueue
|
||||||
import java.util.concurrent.LinkedBlockingQueue
|
import java.util.concurrent.LinkedBlockingQueue
|
||||||
|
@ -96,7 +97,7 @@ class GuildTrackScheduler(val pl: Player) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Logger.out("Track has ended; Playing next...")
|
Logger.out("Track has ended; Playing next...")
|
||||||
playNext(Bot.lava.getLink(e.guildId))
|
playNext(net.moonleay.botendo.Bot.lava.getLink(e.guildId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music.components
|
package net.moonleay.botendo.extensions.music.components
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music.components
|
package net.moonleay.botendo.extensions.music.components
|
||||||
|
@ -30,18 +31,11 @@ import dev.kord.rest.builder.message.embed
|
||||||
import dev.schlaubi.lavakord.audio.Link
|
import dev.schlaubi.lavakord.audio.Link
|
||||||
import dev.schlaubi.lavakord.audio.player.Player
|
import dev.schlaubi.lavakord.audio.player.Player
|
||||||
import dev.schlaubi.lavakord.rest.loadItem
|
import dev.schlaubi.lavakord.rest.loadItem
|
||||||
import net.moonleay.botendo.util.ButtonUtil
|
import net.moonleay.botendo.util.*
|
||||||
import net.moonleay.botendo.util.MessageUtil
|
|
||||||
import net.moonleay.botendo.util.TimeUtil
|
|
||||||
import net.moonleay.botendo.util.UrlUtil
|
|
||||||
|
|
||||||
object MusicManager {
|
object MusicManager {
|
||||||
private var musicManagerMap: MutableMap<Snowflake, GuildTrackScheduler> = mutableMapOf()
|
private var musicManagerMap: MutableMap<Snowflake, GuildTrackScheduler> = mutableMapOf()
|
||||||
|
|
||||||
fun getMusicManager(guild: Guild): GuildTrackScheduler? {
|
|
||||||
return musicManagerMap[guild.id]
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getGuildTrackScheduler(guild: Guild, player: Player): GuildTrackScheduler {
|
fun getGuildTrackScheduler(guild: Guild, player: Player): GuildTrackScheduler {
|
||||||
return musicManagerMap.computeIfAbsent(guild.id) {
|
return musicManagerMap.computeIfAbsent(guild.id) {
|
||||||
GuildTrackScheduler(player)
|
GuildTrackScheduler(player)
|
||||||
|
@ -187,10 +181,6 @@ object MusicManager {
|
||||||
|
|
||||||
}
|
}
|
||||||
is LoadResult.NoMatches -> {
|
is LoadResult.NoMatches -> {
|
||||||
if (gts.isEmpty() && player.playingTrack == null) {
|
|
||||||
player.stopTrack()
|
|
||||||
link.destroy()
|
|
||||||
}
|
|
||||||
if (!silent)
|
if (!silent)
|
||||||
ctx.respond {
|
ctx.respond {
|
||||||
this.embed {
|
this.embed {
|
||||||
|
@ -204,10 +194,6 @@ object MusicManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
is LoadResult.LoadFailed -> {
|
is LoadResult.LoadFailed -> {
|
||||||
if (gts.isEmpty() && player.playingTrack == null) {
|
|
||||||
player.stopTrack()
|
|
||||||
link.destroy()
|
|
||||||
}
|
|
||||||
if (!silent)
|
if (!silent)
|
||||||
ctx.respond {
|
ctx.respond {
|
||||||
this.embed {
|
this.embed {
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.music.components
|
package net.moonleay.botendo.extensions.music.components
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.extensions.util
|
package net.moonleay.botendo.extensions.util
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -14,11 +14,17 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
||||||
|
import com.kotlindiscord.kord.extensions.commands.Arguments
|
||||||
|
import com.kotlindiscord.kord.extensions.commands.application.slash.PublicSlashCommandContext
|
||||||
|
import com.kotlindiscord.kord.extensions.components.forms.ModalForm
|
||||||
|
import dev.kord.common.Color
|
||||||
import dev.kord.core.behavior.UserBehavior
|
import dev.kord.core.behavior.UserBehavior
|
||||||
|
import dev.kord.rest.builder.message.EmbedBuilder
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package net.moonleay.botendo.util
|
package net.moonleay.botendo.util
|
||||||
|
|
|
@ -15,3 +15,4 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
|
Loading…
Reference in a new issue