Added a simple cooldown system that shouldn't work but does work
idk tbh
This commit is contained in:
parent
c3f183f43c
commit
e1a9341b2e
|
@ -22,7 +22,8 @@ val helloCommand = UnityCommand("hello", "Say hello to Andy!", aliases = *arrayO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val pingCommand = UnityCommand("ping", help = "Check the bot's ping", aliases = *arrayOf("pong")) { event ->
|
val pingCommand =
|
||||||
|
UnityCommand("ping", help = "Check the bot's ping", aliases = *arrayOf("pong"), cooldown = 10) { event ->
|
||||||
event.reply("Ping: ...") { m ->
|
event.reply("Ping: ...") { m ->
|
||||||
val ping = event.message.creationTime.until(m.creationTime, ChronoUnit.MILLIS)
|
val ping = event.message.creationTime.until(m.creationTime, ChronoUnit.MILLIS)
|
||||||
m.editMessage("Ping: " + ping + "ms | Websocket: " + event.jda.ping + "ms").queue()
|
m.editMessage("Ping: " + ping + "ms | Websocket: " + event.jda.ping + "ms").queue()
|
||||||
|
|
|
@ -30,21 +30,16 @@ open class UnityCommand(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*//cooldown check
|
//cooldown check
|
||||||
if (cooldown > 0) {
|
if (cooldown > 0) {
|
||||||
val key = getCooldownKey(event)
|
|
||||||
val remaining = event.client.getRemainingCooldown(key)
|
if (event.client.isOnCooldown(name)) {
|
||||||
if (remaining > 0) {
|
event.reply("Sorry, this command is on cooldown for `${event.client.getRemainingCooldown(name)}` seconds!")
|
||||||
val error = getCooldownError(event, remaining)
|
return
|
||||||
if (error != null) {
|
} else {
|
||||||
*//*
|
event.client.applyCooldown(name, cooldown)
|
||||||
event.reply("There still is a cooldown (`$error`) on this command!")
|
}
|
||||||
*//*
|
}
|
||||||
return
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
event.client.applyCooldown(key, cooldown)
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// run
|
// run
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -19,6 +19,7 @@ import java.time.LocalDateTime
|
||||||
import java.time.OffsetDateTime
|
import java.time.OffsetDateTime
|
||||||
import java.util.concurrent.ScheduledExecutorService
|
import java.util.concurrent.ScheduledExecutorService
|
||||||
import java.util.concurrent.ScheduledThreadPoolExecutor
|
import java.util.concurrent.ScheduledThreadPoolExecutor
|
||||||
|
import kotlin.math.absoluteValue
|
||||||
|
|
||||||
|
|
||||||
val gmap = mutableMapOf<Long, GuildSettings>()
|
val gmap = mutableMapOf<Long, GuildSettings>()
|
||||||
|
@ -57,9 +58,35 @@ data class UnityCommandClient(
|
||||||
private val prefix: String,
|
private val prefix: String,
|
||||||
private val commands: MutableList<UnityCommand> = mutableListOf()
|
private val commands: MutableList<UnityCommand> = mutableListOf()
|
||||||
) : ListenerAdapter() {
|
) : ListenerAdapter() {
|
||||||
private val cooldownMap = mutableMapOf<String, OffsetDateTime>()
|
|
||||||
|
private val cooldownMap = mutableMapOf<String, LocalDateTime>()
|
||||||
|
|
||||||
fun applyCooldown(name: String, seconds: Int) {
|
fun applyCooldown(name: String, seconds: Int) {
|
||||||
cooldownMap[name] = OffsetDateTime.now().plusSeconds(seconds.toLong())
|
cooldownMap[name] = LocalDateTime.now().plusSeconds(seconds.toLong())
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getRemainingCooldown(name: String): Int {
|
||||||
|
val cd = cooldownMap[name]
|
||||||
|
return if (cd == null) {
|
||||||
|
0
|
||||||
|
} else {
|
||||||
|
(LocalDateTime.now().second - cd.second).absoluteValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isOnCooldown(name: String): Boolean {
|
||||||
|
val cooldown: Boolean? = LocalDateTime.now().isBefore(cooldownMap[name] ?: LocalDateTime.MIN)
|
||||||
|
|
||||||
|
return cooldown ?: false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun cleanCooldowns() {
|
||||||
|
for ((k, v) in cooldownMap) {
|
||||||
|
if (v.isBefore(LocalDateTime.now())) {
|
||||||
|
cooldownMap.remove(k)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getError(): String = "❌"
|
fun getError(): String = "❌"
|
||||||
|
@ -73,13 +100,6 @@ data class UnityCommandClient(
|
||||||
|
|
||||||
fun getScheduleExecutor(): ScheduledExecutorService = ses
|
fun getScheduleExecutor(): ScheduledExecutorService = ses
|
||||||
|
|
||||||
fun cleanCooldowns() {
|
|
||||||
for ((k, v) in cooldownMap) {
|
|
||||||
if (v.isBefore(OffsetDateTime.now())) {
|
|
||||||
cooldownMap.remove(k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getWarning(): String = "⚠️"
|
fun getWarning(): String = "⚠️"
|
||||||
|
|
||||||
|
@ -101,7 +121,6 @@ data class UnityCommandClient(
|
||||||
private fun getSettings(guild: Guild): GuildSettings = GSM.getSettings(guild)
|
private fun getSettings(guild: Guild): GuildSettings = GSM.getSettings(guild)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private val start = OffsetDateTime.now()
|
private val start = OffsetDateTime.now()
|
||||||
fun getStartTime(): OffsetDateTime = start
|
fun getStartTime(): OffsetDateTime = start
|
||||||
|
|
||||||
|
@ -123,9 +142,6 @@ data class UnityCommandClient(
|
||||||
fun getCommandUses(name: String): Int = usageMap[name] ?: 0
|
fun getCommandUses(name: String): Int = usageMap[name] ?: 0
|
||||||
|
|
||||||
|
|
||||||
fun getCooldown(name: String): OffsetDateTime? = cooldownMap[name]
|
|
||||||
|
|
||||||
|
|
||||||
fun shutdown() {
|
fun shutdown() {
|
||||||
ses.shutdown()
|
ses.shutdown()
|
||||||
GSM.shutdown()
|
GSM.shutdown()
|
||||||
|
@ -138,16 +154,6 @@ data class UnityCommandClient(
|
||||||
|
|
||||||
fun getTotalGuilds(): Int = bot.guilds.size
|
fun getTotalGuilds(): Int = bot.guilds.size
|
||||||
|
|
||||||
fun getRemainingCooldown(name: String): Int {
|
|
||||||
val cd = cooldownMap[name]
|
|
||||||
return if (cd == null) {
|
|
||||||
0
|
|
||||||
} else {
|
|
||||||
(OffsetDateTime.now().toEpochSecond() - cd.toEpochSecond()).toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
val ownerId = "168743656738521088"
|
val ownerId = "168743656738521088"
|
||||||
fun getOwnerIdLong(): Long = ownerId.toLong()
|
fun getOwnerIdLong(): Long = ownerId.toLong()
|
||||||
|
|
Loading…
Reference in a new issue