12345678910111213141516171819202122232425262728293031 |
- 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)
|