Utility IRC bot
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

12345678910111213141516171819202122232425262728293031
  1. package com.chameth.hexbot
  2. import com.dmdirc.ktirc.IrcClient
  3. import com.dmdirc.ktirc.events.IrcEvent
  4. import com.dmdirc.ktirc.events.MessageReceived
  5. import kotlin.contracts.ExperimentalContracts
  6. import kotlin.contracts.contract
  7. @ExperimentalContracts
  8. fun IrcClient.isModuleCommand(ircEvent: IrcEvent, module: String): Boolean {
  9. contract {
  10. returns(true) implies (ircEvent is MessageReceived)
  11. }
  12. return isBotCommand(ircEvent) && with(ircEvent.message.split(' ')) { this.size > 1 && this[1].toLowerCase() == module.toLowerCase() }
  13. }
  14. @ExperimentalContracts
  15. fun IrcClient.isBotCommand(ircEvent: IrcEvent): Boolean {
  16. contract {
  17. returns(true) implies (ircEvent is MessageReceived)
  18. }
  19. return ircEvent is MessageReceived && ircEvent.message.isBotCommand(serverState.localNickname)
  20. }
  21. val MessageReceived.moduleCommandArgs
  22. get() = message.split(' ').drop(2)
  23. private fun String.isBotCommand(nickname: String) =
  24. startsWith("$nickname ", ignoreCase=true) ||
  25. startsWith("$nickname: ", ignoreCase=true) ||
  26. startsWith("$nickname, ", ignoreCase=true)