discord-irc

Connects Discord and IRC channels by sending messages back and forth.
Example

Installation and usage
Note: discord-irc requires Node.js version 6 or newer, as it depends on discord.js.
Before you can run discord-irc you need to create a configuration file by
following the instructions here.
After you've done that you can replace /path/to/config.json
in the commands
below with the path to your newly created configuration file - or just config.json
if it's
in the same directory as the one you're starting the bot from.
When you've done that you can install and start the bot either through npm:
$ npm install -g discord-irc
$ discord-irc --config /path/to/config.json
or by cloning the repository:
In the repository folder:
$ npm install
$ npm run build
$ npm start -- --config /path/to/config.json
It can also be used as a module:
import discordIRC from 'discord-irc';
import config from './config.json';
discordIRC(config);
When installing the library, you may encounter an error relating to the installation of iconv
or node-icu-charset-detector
.
These are optional dependencies which allow you to set the target encoding of messages sent to Discord, as detailed below in the README.
Without these dependencies and the relevant setting, messages that aren't sent in UTF-8 may be corrupted when copied to Discord.
Configuration
First you need to create a Discord bot user, which you can do by following the instructions here.
Example configuration
[
{
"nickname": "test2",
"server": "irc.testbot.org",
"discordToken": "botwantsin123",
"channelMapping": {
"#other-discord": "#new-irc-channel"
}
},
{
"nickname": "test",
"server": "irc.bottest.org",
"discordToken": "botwantsin123",
"autoSendCommands": [
["PRIVMSG", "NickServ", "IDENTIFY password"],
["MODE", "test", "+x"],
["AUTH", "test", "password"]
],
"channelMapping": {
"#discord": "#irc channel-password",
"1234567890": "#channel"
},
"ircOptions": {
"floodProtection": false,
"floodProtectionDelay": 1000
},
"format": {
"commandPrelude": "Command sent by {$nickname}",
"ircText": "<{$displayUsername}> {$text}",
"urlAttachment": "<{$displayUsername}> {$attachmentURL}",
"discord": "**<{$author}>** {$withMentions}"
},
"ircNickColor": false,
"commandCharacters": ["!", "."],
"ircStatusNotices": true,
"ignoreUsers": {
"irc": ["irc_nick1", "irc_nick2"],
"discord": ["discord_nick1", "discord_nick2"]
}
}
]
The ircOptions
object is passed directly to irc-upd (available options).
To retrieve a discord channel ID, write \#channel
on the relevant server – it should produce something of the form <#1234567890>
, which you can then use in the channelMapping
config.
Encodings
If you encounter trouble with some characters being corrupted from some clients (particularly umlauted characters, such as ä
or ö
), try installing the optional dependencies iconv
and node-icu-charset-detector
.
The bot will produce a warning when started if the IRC library is unable to convert between encodings.
Further information can be found in the installation section of irc-upd.
Tests
Run the tests with:
$ npm test
Style Guide
discord-irc follows the Airbnb Style Guide.
ESLint is used to make sure this is followed correctly, which can be run with:
$ npm run lint