You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Chris Smith 16b6496566 Extract server names nicely 5 yıl önce
gradle/wrapper Upgrade to Gradle 5.1.1, fix new deprecations 5 yıl önce
src Extract server names nicely 5 yıl önce
.gitignore Make gradlew executable 5 yıl önce
.travis.yml Deploy to bintray on tags 5 yıl önce
CHANGELOG Extract server names nicely 5 yıl önce
LICENCE Licence 5 yıl önce
README.md More debugging, add weird networking info to README 5 yıl önce
build.gradle.kts Fix concurrency issue writing lines, bump to 0.3.1 5 yıl önce
gradlew Make gradlew executable 5 yıl önce
gradlew.bat Initial import, various supporting classes. 5 yıl önce

README.md

KtIrc

Build Status Codacy Badge codecov Download

KtIrc is a Kotlin JVM library for connecting to and interacting with IRC servers. It is still in an early stage of development.

Setup

KtIrc is published to JCenter, so adding it to a gradle build is as simple as:

repositories {
    jcenter()
}

dependencies {
    implementation("com.dmdirc:ktirc:<VERSION>")
}

Usage

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()
}

Known issues / FAQ

java.lang.IllegalStateException: Check failed when connecting to some servers

This 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.

KtIrc connects over IPv4 even when host has IPv6

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

Contributing is welcomed and encouraged! Please try to add unit tests for new features, and maintain a code style consistent with the existing code.

Licence

The code in this repository is released under the MIT licence. See the LICENCE file for more info.