package com.chameth.hexbot import com.dmdirc.ktirc.IrcClient import com.dmdirc.ktirc.events.IrcEvent import com.dmdirc.ktirc.events.MessageReceived import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @ExperimentalContracts fun IrcClient.isModuleCommand(ircEvent: IrcEvent, module: String): Boolean { contract { returns(true) implies (ircEvent is MessageReceived) } return isBotCommand(ircEvent) && with(ircEvent.message.split(' ')) { this.size > 1 && this[1].toLowerCase() == module.toLowerCase() } } @ExperimentalContracts fun IrcClient.isBotCommand(ircEvent: IrcEvent): Boolean { contract { returns(true) implies (ircEvent is MessageReceived) } return ircEvent is MessageReceived && ircEvent.message.isBotCommand(serverState.localNickname) } val MessageReceived.moduleCommandArgs get() = message.split(' ').drop(2) private fun String.isBotCommand(nickname: String) = startsWith("$nickname ", ignoreCase=true) || startsWith("$nickname: ", ignoreCase=true) || startsWith("$nickname, ", ignoreCase=true)