KtIrc is a Kotlin JVM library for connecting to and interacting with IRC servers. It is still in an early stage of development.
KtIrc is published to JCenter, so adding it to a gradle build is as simple as:
repositories {
jcenter()
}
dependencies {
implementation("com.dmdirc:ktirc:<VERSION>")
}
The main interface for interacting with KtIrc is the IrcClientImpl
class. A
simple bot might look like:
with(IrcClientImpl(Server("my.server.com", 6667), Profile("nick", "realName", "userName"))) {
onEvent { event ->
when (event) {
is ServerWelcome -> sendJoin("#ktirc")
is MessageReceived ->
if (event.message == "!test")
reply(event, "Test successful!")
}
}
connect()
}
java.lang.IllegalStateException: Check failed
when connecting to some serversThis happens when the IRC server requests an optional client certificate (for use in SASL auth, usually). At present there is no support for client certificates in the networking library used by KtIrc. This is tracked upstream in ktor#641. There is no workaround other than using an insecure connection.
This is an issue with the Java standard library. You can change its behaviour by
defining the system property java.net.preferIPv6Addresses
to true
, e.g. by
running Java with -Djava.net.preferIPv6Addresses=true
or calling
System.setProperty("java.net.preferIPv6Addresses","true");
in code.
Contributing is welcomed and encouraged! Please try to add unit tests for new features, and maintain a code style consistent with the existing code.
The code in this repository is released under the MIT licence. See the LICENCE file for more info.