mirror of
https://github.com/dalbodeule/chibot-chzzk-bot.git
synced 2025-06-08 23:08:20 +00:00
add AddCommand.kt
This commit is contained in:
parent
4b7fe25b21
commit
e1b7b37c85
5
.idea/misc.xml
generated
5
.idea/misc.xml
generated
@ -1,5 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="EntryPointsManager">
|
||||
<list size="1">
|
||||
<item index="0" class="java.lang.String" itemvalue="space.mori.chzzk_bot.discord.Command" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="FrameworkDetectionExcludesConfiguration">
|
||||
<file type="web" url="file://$PROJECT_DIR$" />
|
||||
|
@ -29,9 +29,17 @@ object ChzzkHandler {
|
||||
handler.disable()
|
||||
}
|
||||
}
|
||||
|
||||
internal fun reloadCommand(chzzkChannel: ChzzkChannel) {
|
||||
val handler = handlers.firstOrNull { it.channel == chzzkChannel }
|
||||
if (handler != null)
|
||||
handler.reloadCommand()
|
||||
else
|
||||
throw RuntimeException("${chzzkChannel.channelName} doesn't have handler")
|
||||
}
|
||||
}
|
||||
|
||||
class UserHandler(private val channel: ChzzkChannel, private val logger: Logger) {
|
||||
class UserHandler(val channel: ChzzkChannel, private val logger: Logger) {
|
||||
private lateinit var messageHandler: MessageHandler
|
||||
|
||||
private var listener: ChzzkChat = chzzk.chat(channel.channelId)
|
||||
@ -66,4 +74,8 @@ class UserHandler(private val channel: ChzzkChannel, private val logger: Logger)
|
||||
internal fun disable() {
|
||||
listener.closeBlocking()
|
||||
}
|
||||
|
||||
internal fun reloadCommand() {
|
||||
messageHandler.reloadCommand()
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import space.mori.chzzk_bot.services.UserService
|
||||
import xyz.r2turntrue.chzzk4j.chat.ChatMessage
|
||||
import xyz.r2turntrue.chzzk4j.chat.ChzzkChat
|
||||
import xyz.r2turntrue.chzzk4j.types.channel.ChzzkChannel
|
||||
|
||||
class MessageHandler(
|
||||
private val channel: ChzzkChannel,
|
||||
private val logger: Logger,
|
||||
@ -14,6 +15,10 @@ class MessageHandler(
|
||||
private val commands = mutableMapOf<String, () -> Unit>()
|
||||
|
||||
init {
|
||||
reloadCommand()
|
||||
}
|
||||
|
||||
internal fun reloadCommand() {
|
||||
val user = UserService.getUser(channel.channelId)
|
||||
?: throw RuntimeException("User not found. it's bug? ${channel.channelName} - ${channel.channelId}")
|
||||
val commands = CommandService.getCommands(user)
|
||||
|
@ -0,0 +1,45 @@
|
||||
package space.mori.chzzk_bot.discord.commands
|
||||
|
||||
import net.dv8tion.jda.api.JDA
|
||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent
|
||||
import net.dv8tion.jda.api.interactions.commands.OptionType
|
||||
import net.dv8tion.jda.api.interactions.commands.build.Commands
|
||||
import net.dv8tion.jda.api.interactions.commands.build.OptionData
|
||||
import org.slf4j.LoggerFactory
|
||||
import space.mori.chzzk_bot.discord.Command
|
||||
import space.mori.chzzk_bot.discord.CommandInterface
|
||||
import space.mori.chzzk_bot.services.CommandService
|
||||
import space.mori.chzzk_bot.services.UserService
|
||||
|
||||
@Command
|
||||
object AddCommand : CommandInterface {
|
||||
private val logger = LoggerFactory.getLogger(this::class.java)
|
||||
override val name: String = "add"
|
||||
override val command = Commands.slash(name, "명령어를 추가합니다.")
|
||||
.addOptions(OptionData(OptionType.STRING, "label", "작동할 명령어를 입력하세요.", true))
|
||||
.addOptions(OptionData(OptionType.STRING, "content", "표시될 텍스트를 입력하세요.", true))
|
||||
|
||||
override fun run(event: SlashCommandInteractionEvent, bot: JDA) {
|
||||
val label = event.getOption("label")?.asString
|
||||
val content = event.getOption("content")?.asString
|
||||
|
||||
if(label == null || content == null) {
|
||||
event.hook.sendMessage("명령어와 텍스트는 필수 입력입니다.").queue()
|
||||
return
|
||||
}
|
||||
|
||||
val user = UserService.getUser(event.user.idLong)
|
||||
if(user == null) {
|
||||
event.hook.sendMessage("치지직 계정을 찾을 수 없습니다.").queue()
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
CommandService.saveCommand(user, label, content)
|
||||
event.hook.sendMessage("등록이 완료되었습니다. $label = $content").queue()
|
||||
} catch (e: Exception) {
|
||||
event.hook.sendMessage("에러가 발생했습니다.").queue()
|
||||
logger.debug(e.stackTraceToString())
|
||||
}
|
||||
}
|
||||
}
|
@ -42,7 +42,7 @@ object Register: CommandInterface {
|
||||
try {
|
||||
UserService.saveUser(chzzkChannel.channelName, chzzkChannel.channelId, event.user.idLong)
|
||||
ChzzkHandler.addUser(chzzkChannel)
|
||||
event.hook.sendMessage("등록이 완료되었습니다. ${chzzkChannel.channelId} - ${chzzkChannel.channelName}")
|
||||
event.hook.sendMessage("등록이 완료되었습니다. `${chzzkChannel.channelId}` - `${chzzkChannel.channelName}`")
|
||||
} catch(e: Exception) {
|
||||
event.hook.sendMessage("에러가 발생했습니다.").queue()
|
||||
logger.debug(e.stackTraceToString())
|
||||
|
Loading…
x
Reference in New Issue
Block a user