IRC Client Library 2.3.0 released!

Update: 2.3.2 released. See below.

Version 2.3.0 of the Kitteh IRC Client Library has been released!


  • Classes with a getClient() method are now all of type ClientLinked.
    • StringUtil now possesses two toLowerCase() methods, one taking ClientLinked.
    • This means you can do StringUtil.toLowerCase(user, user.getNick()).
  • FilteringSubscriptionFactory now available, so you can have your own MBassador instance use KICL's annotation-based filter system.
  • Updated to Netty 4.1.4.
  • 2.3.1 - Servers that don't send PREFIX in the ISUPPORT message will no longer cause exception explosions.
  • 2.3.2 - Channel and user modes now override equals() and hashcode().
    • ModeStatusList#containsMode() now actually works. So that's nice.

IRC Client Library 2.2.0 released!

Version 2.2.0 of the Kitteh IRC Client Library has been released!


  • Tracking of ban, except, invite, and quiet lists (modes b, e, I, and q).
    • ModeInfo describes a particular entry.
    • ChannelModeInfoListEvent firing when the full list is retrieved.
    • Channel#setModeInfoTracking(ChannelMode, boolean) lets you start tracking the mode list.
      • Automatically sends a query for the full list, and tracks subsequent mode changes.
      • Suggested to run this in RequestedChannelJoinCompleteEvent.
    • Channel#getModeInfoList(ChannelMode) gets the list, if it's being tracked.
  • Added new method Format.stripAll() to strip both color and other formats at once.

IRC Client Library 2.1.2 released!

Version 2.1.2 of the Kitteh IRC Client Library has been released!


  • Now sends a colon before the server password if it contains spaces.
  • No longer sends an empty CAP REQ message if all desired capabilities are already requested.

IRC Client Library 2.1.0 released!

Update: 2.1.1 has been released, fixes issue where capabilities message could throw exception

Version 2.1.0 of the Kitteh IRC Client Library has been released!

This is a small update.


  • Updated to Netty 4.1.2.
  • Added new methods to CapabilitiesSupportedListEvent and CapabilitiesNewSupportedEvent:
    • #getRequests() to get requests that will be made based off this information.
    • This list includes the ones the client has added.
    • #addRequest(String) to add additional requests, such as echo-message and invite-notify.

IRC Client Library 2.0.0 released!

Version 2.0.0 of the Kitteh IRC Client Library has been released!

This is quite the update, with many changes including several breaks.

Mode Changes

  • Mode elements are moved to a subpackage.
  • Created UserMode class to describe user modes.
  • Created a base Mode class.
  • ChannelModeStatus becomes ModeStatus<ModeType extends Mode>.
    • And ChannelModeStatusList to ModeStatusList<ModeType extends Mode>.
      • And the from method is now fromChannel and fromUser.
  • ModeCommand becomes ChannelModeCommand.
    • Now supports querying by not adding any mode changes.
    • UserModeCommand for querying/setting your own modes.
  • User modes are now tracked.
    • Client#getUserModes() for your modes.
  • ISUPPORT MODES now parsed as an int value.
  • Supported user modes available in ServerInfo.

Event Filters

  • The EventManager now supports registering custom annotation-based filters.
  • The already existing @CommandFilter and @NumericFilter no longer require additional @Handler information.
  • Added new filters:
    • @ToSelfOnly for private messages.
    • @EchoMessage to only receive messages/notices that were sent by the client.

Other Changes

  • New actor Server, extends Actor.
  • New event ServerNoticeEvent for those pesky server-sent notices.
  • Private message target is now available in those events.
  • Private messages to non-Client-nick targets are now sent in the relevant events.
    • See @ToSelfOnly to continue previous functionality.
  • Added some operator functionality:
    • New commands OperCommand and WallopsCommand.
    • New event WallopsEvent.
  • Capabilities echo-message and invite-notify no longer automatically requested.
  • Channel#getUserModes now explicitly provides a SortedSet
  • Client.Builder#toString no longer exposes passwords or SSL data.
  • A WHOIS is called right after join to ensure Client#getUser() is available ASAP.
  • Fixed bug where ServerInfo could provide mutable lists.