Skip to content

Commit

Permalink
better error reporting
Browse files Browse the repository at this point in the history
  • Loading branch information
peterwilli committed Sep 13, 2022
1 parent a09831f commit c40b52e
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 46 deletions.
4 changes: 2 additions & 2 deletions src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ fun initCommands(jda: JDA) {
)
}
slash("img2img", "Make an existing image into your prompt!") {
option<String>("prompt", "Prompt to make i.e 'Monkey holding a beer'", required = true)
option<Attachment>("input_image", "Initial image", required = true)
option<String>("prompt", "Prompt to make i.e 'Monkey holding a beer'", required = true)
option<String>("ar", "aspect ratio (i.e 16:9)", required = false)
option<Int>(
"seed",
Expand All @@ -94,8 +94,8 @@ fun initCommands(jda: JDA) {
option<Int>("steps", "How much steps from the original image?", required = false)
}
slash("link2img", "Make an existing image into your prompt!") {
option<String>("prompt", "Prompt to make i.e 'Monkey holding a beer'", required = true)
option<String>("input_image_url", "Link to initial image", required = true)
option<String>("prompt", "Prompt to make i.e 'Monkey holding a beer'", required = true)
option<String>("ar", "aspect ratio (i.e 16:9)", required = false)
option<Int>(
"seed",
Expand Down
75 changes: 41 additions & 34 deletions src/main/kotlin/commands/img2img/Img2ImgCommand.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package commands.img2img

import commands.make.FairQueueEntry
import commands.make.FairQueueType
import commands.make.optionsToStableDiffusionParams
import commands.make.*
import config
import dev.minn.jda.ktx.events.onCommand
import dev.minn.jda.ktx.messages.reply_
Expand All @@ -14,43 +12,52 @@ import kotlin.math.min

fun img2imgCommand(jda: JDA) {
fun onCommand(event: GenericCommandInteractionEvent) {
val strength = if (event.getOption("strength") != null) {
event.getOption("strength")!!.asDouble
} else {
0.75
}
try {
if (!validatePermissions(event, standardPermissionList)) {
return
}

val guidanceScale = if (event.getOption("guidance_scale") != null) {
event.getOption("guidance_scale")!!.asDouble
} else {
7.5
}
val strength = if (event.getOption("strength") != null) {
event.getOption("strength")!!.asDouble
} else {
0.75
}

val steps = if (event.getOption("steps") != null) {
min(event.getOption("steps")!!.asInt, 50)
} else {
50
}
val guidanceScale = if (event.getOption("guidance_scale") != null) {
event.getOption("guidance_scale")!!.asDouble
} else {
7.5
}

val steps = if (event.getOption("steps") != null) {
min(event.getOption("steps")!!.asInt, 50)
} else {
50
}

var batch = (0 until config.hostConstraints.totalImagesInMakeCommand).map {
val initialParams = optionsToStableDiffusionParams(event, it)
initialParams.copy(
stableDiffusionParameters = initialParams.stableDiffusionParameters!!.copy(
steps = steps,
guidanceScale = guidanceScale,
strength = strength
var batch = (0 until config.hostConstraints.totalImagesInMakeCommand).map {
val initialParams = optionsToStableDiffusionParams(event, it)
initialParams.copy(
stableDiffusionParameters = initialParams.stableDiffusionParameters!!.copy(
steps = steps,
guidanceScale = guidanceScale,
strength = strength
)
)
}
val entry = FairQueueEntry(
"Image to ${English.plural("Image", batch.size)}",
FairQueueType.StableDiffusion,
event.member!!.id,
batch,
event.hook,
null
)
event.reply_(queueDispatcher.queue.addToQueue(entry)).queue()
} catch (e: Exception) {
e.printStackTrace()
event.reply_("Error! $e").setEphemeral(true).queue()
}
val entry = FairQueueEntry(
"Image to ${English.plural("Image", batch.size)}",
FairQueueType.StableDiffusion,
event.member!!.id,
batch,
event.hook,
null
)
event.reply_(queueDispatcher.queue.addToQueue(entry)).queue()
}

jda.onCommand("img2img") { event ->
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/commands/make/DiscoDiffusion.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import net.dv8tion.jda.api.interactions.components.buttons.ButtonStyle
fun discoDiffusionCommand(jda: JDA) {
jda.onCommand("disco_diffusion") { event ->
try {
if (!validatePermissions(event)) {
if (!validatePermissions(event, standardPermissionList)) {
return@onCommand
}
val prompts = event.getOption("prompts")!!.asString
Expand Down
7 changes: 2 additions & 5 deletions src/main/kotlin/commands/make/StableDiffusionCommand.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import commands.make.FairQueueEntry
import commands.make.FairQueueType
import commands.make.optionsToStableDiffusionParams
import commands.make.validatePermissions
import commands.make.*
import dev.minn.jda.ktx.events.onCommand
import dev.minn.jda.ktx.messages.reply_
import net.dv8tion.jda.api.JDA
Expand All @@ -10,7 +7,7 @@ import net.dv8tion.jda.api.interactions.InteractionHook
fun stableDiffusionCommand(jda: JDA) {
jda.onCommand("stable_diffusion") { event ->
try {
if (!validatePermissions(event)) {
if (!validatePermissions(event, standardPermissionList)) {
return@onCommand
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package commands.make
import dev.minn.jda.ktx.messages.reply_
import net.dv8tion.jda.api.Permission
import net.dv8tion.jda.api.events.interaction.command.GenericCommandInteractionEvent
import org.atteo.evo.inflector.English

fun validatePermissions(event: GenericCommandInteractionEvent): Boolean {
val permsToCheck = listOf(Permission.VIEW_CHANNEL, Permission.MESSAGE_SEND)
val standardPermissionList = listOf(Permission.VIEW_CHANNEL, Permission.MESSAGE_SEND)

fun validatePermissions(event: GenericCommandInteractionEvent, permsToCheck: List<Permission>): Boolean {
val permsMissing = mutableListOf<Permission>()
for (perm in permsToCheck) {
if (!event.guild!!.selfMember.hasPermission(event.guildChannel, perm)) {
Expand All @@ -14,11 +16,16 @@ fun validatePermissions(event: GenericCommandInteractionEvent): Boolean {
}
if (permsMissing.isNotEmpty()) {
event.reply_(
"Sorry, required permissions are missing for meto work in this channel! Permission missing: ${
"Sorry, required permissions are missing for me to work in this channel! ${
English.plural(
"Permission",
permsMissing.size
)
} missing: `${
permsMissing.joinToString(
", "
)
}"
}`"
).setEphemeral(true).queue()
return false
}
Expand Down

0 comments on commit c40b52e

Please sign in to comment.