Skip to content

Commit

Permalink
[#66] Add emoji util functions for SelectOptionBuilder
Browse files Browse the repository at this point in the history
  • Loading branch information
gdude2002 committed Aug 5, 2021
1 parent 9633113 commit bed1fb6
Showing 1 changed file with 43 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
package com.kotlindiscord.kord.extensions.utils

import dev.kord.common.annotation.KordPreview
import dev.kord.common.entity.DiscordPartialEmoji
import dev.kord.common.entity.optional.optional
import dev.kord.core.behavior.interaction.ComponentInteractionBehavior
import dev.kord.core.behavior.interaction.EphemeralInteractionResponseBehavior
import dev.kord.core.behavior.interaction.PublicInteractionResponseBehavior
import dev.kord.core.entity.GuildEmoji
import dev.kord.core.entity.ReactionEmoji
import dev.kord.rest.builder.component.SelectOptionBuilder

/** Convenience wrapper for sending an ephemeral ack, optionally deferred, with less characters. **/
public suspend fun ComponentInteractionBehavior.ackEphemeral(
Expand All @@ -24,3 +29,41 @@ public suspend fun ComponentInteractionBehavior.ackPublic(
} else {
acknowledgePublic()
}

/** Convenience function for setting [this.emoji] based on a given Unicode emoji. **/
public fun SelectOptionBuilder.emoji(unicodeEmoji: String) {
this.emoji = DiscordPartialEmoji(
name = unicodeEmoji
)
}

/** Convenience function for setting [this.emoji] based on a given guild custom emoji. **/
public fun SelectOptionBuilder.emoji(guildEmoji: GuildEmoji) {
this.emoji = DiscordPartialEmoji(
id = guildEmoji.id,
name = guildEmoji.name,
animated = guildEmoji.isAnimated.optional()
)
}

/** Convenience function for setting [this.emoji] based on a given reaction emoji. **/
public fun SelectOptionBuilder.emoji(unicodeEmoji: ReactionEmoji.Unicode) {
this.emoji = DiscordPartialEmoji(
name = unicodeEmoji.name
)
}

/** Convenience function for setting [this.emoji] based on a given reaction emoji. **/
public fun SelectOptionBuilder.emoji(guildEmoji: ReactionEmoji.Custom) {
this.emoji = DiscordPartialEmoji(
id = guildEmoji.id,
name = guildEmoji.name,
animated = guildEmoji.isAnimated.optional()
)
}

/** Convenience function for setting [this.emoji] based on a given reaction emoji. **/
public fun SelectOptionBuilder.emoji(emoji: ReactionEmoji): Unit = when (emoji) {
is ReactionEmoji.Unicode -> emoji(emoji)
is ReactionEmoji.Custom -> emoji(emoji)
}

0 comments on commit bed1fb6

Please sign in to comment.