matrix-org-irc
v3.0.0
Published
An IRC client library for node, written in Typescript.
Downloads
19,082
Readme
This is a fork of node-irc, which is an IRC client library written in TypeScript for Node. This fork is used by the Matrix-IRC application service.
To use this package:
yarn add matrix-org-irc
Differences from node-irc
The node-irc
library isn't well maintained and there are a number of issues which are impacting development of the Matrix-IRC application service. We made the decision to fork the project in order to improve reliability of the application service. A summary of modifications from [email protected]
are below:
- TypeScript support
- https://github.com/matrix-org/node-irc/pull/1 - Manifested as BOTS-80
- https://github.com/matrix-org/node-irc/pull/4 - Manifested as [BOTS-73] (https://matrix.org/jira/browse/BOTS-73)
- Handle +R - https://github.com/matrix-org/node-irc/commit/7c16b994b12145b6da8961790bcfa808fb7fcba9
- Handle more error codes (430,435,438)
- Fix bug which would fail to connect conflicting nicks which
== NICKLEN
. - Fix
err_unavailresource
on connection with reserved nicks. - Workaround for the Scunthorpe problem: https://github.com/matrix-org/matrix-appservice-irc/issues/103
- Add methods for working out if a given text will be split and into how many lines.
- Add
names
support (incl. multi-prefix). - Add functions to determine if a user prefix is more powerful than another (e.g.
@ > &
) - Case-map all incoming channels correctly (e.g on PRIVMSG and NOTICE)
- Allow IP family to be chosen to allow IPv6 connections.
- Add function for getting channel modes.
- Workaround terrible RFC3484 rules which means that IPv6 DNS rotations would not be honoured.
- Add
setUserMode
to set a user's mode. - Addition of
encodingFallback
option which allows setting encoding to use for non-UTF-8 encoded messages. - Addition of
onNickConflict()
option which is called onerr_nicknameinuse
. This function should return the next nick to try. The function defaults to suffixing monotonically increasing integers. Usage:new Client("server.com", "MyNick", { onNickConflict: function() { return "_MyNick_"; } });