Skip to content

Commit

Permalink
Allow message data
Browse files Browse the repository at this point in the history
  • Loading branch information
duncte123 committed Mar 9, 2024
1 parent d5a9902 commit 01b67dc
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 14 deletions.
44 changes: 38 additions & 6 deletions commands/ship.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,15 @@ input:

output: |-
import net.dv8tion.jda.api.EmbedBuilder
import net.dv8tion.jda.api.entities.Member
import net.dv8tion.jda.api.utils.FileUpload
import net.dv8tion.jda.api.utils.data.DataObject
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder
import kotlin.math.floor
import java.net.URI
import java.net.http.HttpClient
import java.net.http.HttpRequest
import java.net.http.HttpResponse.BodyHandlers
// Functions first
fun calculateScore(firstId: Long, secondId: Long): Int {
Expand All @@ -26,16 +34,40 @@ output: |-
return (floor((firstId + secondId) / 7.0) % 100).toInt()
}
fun getPfp(member: Member) = member.effectiveAvatarUrl.replace("gif", "png") + "?size=256"
val leftUser = event.getOption("user1")?.asMember!!
val rightUser = event.getOption("user2")?.asMember ?: event.member!!
val score = calculateScore(leftUser.idLong, rightUser.idLong)
// TODO: fetch the image
// Fun fact, you can return embeds as well
EmbedBuilder()
.setTitle("${leftUser.effectiveName} and ${rightUser.effectiveName}")
.addField("Your love score is $score%", "", false)
val request = HttpRequest.newBuilder()
.uri(URI.create("https://apis.duncte123.me/images/love"))
.POST(HttpRequest.BodyPublishers.ofString(
DataObject.empty()
.put("image1", getPfp(leftUser))
.put("image2", getPfp(rightUser))
.toString()
))
.header("User-Agent", "IO (https://github.com/dunste123/io)")
.build()
val response = HttpClient.newHttpClient()
.send(request, BodyHandlers.ofByteArray())
val image = response.body()
// Fun fact, you can return embeds and message data as well
MessageCreateBuilder()
.setEmbeds(
EmbedBuilder()
.setTitle("${leftUser.effectiveName} and ${rightUser.effectiveName}")
.addField("Your love score is $score%", "", false)
.setImage("attachment://result.png")
.build()
)
.addFiles(
FileUpload.fromData(image, "result.png")
)
.build()
14 changes: 13 additions & 1 deletion src/main/kotlin/me/duncte123/io/CommandManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,14 @@ import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEve
import net.dv8tion.jda.api.interactions.commands.build.OptionData
import org.slf4j.LoggerFactory
import java.io.File
import java.util.concurrent.Executors

class CommandManager {
private val commandPool = Executors.newThreadPerTaskExecutor {
Thread.ofVirtual()
.name("Command-Thread")
.start(it)
}
private val log = LoggerFactory.getLogger(CommandManager::class.java)
private val jackson = ObjectMapper(YAMLFactory())
.registerModule(
Expand Down Expand Up @@ -58,7 +64,13 @@ class CommandManager {
private fun getAllCommandData() = commands.values.map { it.toCommandData() }

fun handleCommand(event: SlashCommandInteractionEvent) {
commands[event.name]?.execute(event)
commandPool.submit {
try {
commands[event.name]?.execute(event)
} catch (e: Exception) {
event.hook.sendMessage("Something went wrong: $e").queue()
}
}
}

fun registerCommandsOnJda(jda: JDA) {
Expand Down
12 changes: 5 additions & 7 deletions src/main/kotlin/me/duncte123/io/commands/UserCommand.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ import net.dv8tion.jda.api.entities.MessageEmbed
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent
import net.dv8tion.jda.api.interactions.commands.build.OptionData
import net.dv8tion.jda.api.requests.RestAction
import net.dv8tion.jda.api.utils.messages.MessageCreateData
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
import javax.script.SimpleBindings
import kotlin.math.floor
import kotlin.math.min

private val kotlinEngine: ScriptEngine by lazy {
Expand Down Expand Up @@ -84,15 +84,13 @@ data class UserCommand @JsonCreator constructor (
}

is MessageEmbed -> {



val leftUser = event.getOption("user1")?.asMember!!
val rightUser = event.getOption("user2")?.asMember ?: event.member!!

event.hook.sendMessageEmbeds(out).queue()
}

is MessageCreateData -> {
event.hook.sendMessage(out).queue()
}

else -> {
val toString = out.toString()

Expand Down

0 comments on commit 01b67dc

Please sign in to comment.