Setup
In the configuration, botId
is the “Application ID” in the Discord Developer portal.
The Discord bot must have these Privileged Gateway Intents enabled to function correctly:
- Presence
- Server Members
- Message Content
Bot channel
Create a special channel in no category (or at least not in any of the special categories you’ll create in the next step) for the
bot’s status, notice et. al messages. Add this channel’s ID to the configuration in the (truly terribly-named) irc.quitMsgChanId
field.
Server categories
- Add a category for each IRC server, named for that server e.g.
irc.libera.chat
. - Add a channel in that category for each IRC channel you wish to join on connect.
- Add to
config/channelXForms-NODE_ENV.json
with required name transforms! You can also adjust these from the client at anytime with the!channelXforms
command.
Allowed speakers
To control which Discord users can speak as your IRC user, create a Role in your guild and add users to it you wish to allow
to speak and use DRC in your server. Set the ID of this role as config.app.allowedSpeakersRoleId
.
Configuration
DRC uses the config
module and as such follows these rules as to which configuration file will be used.
default.js
both specifies all default values as well as illustrating the expected structure. As a hobby project, some of the names have been very poorly chosen. You have my apologies.
Critical configuration values
The following configuration parameters must be set by you, the user for the system to function correctly:
app.allowedSpeakersRoleId
orapp.allowedSpeakers
discord.botId
discord.guildId
discord.token
irc.quitMsgChanId
Using private message channels
If you create a category with a name that matches this logic* - such as “Private Messages”, “privmsgs”, or “PMs”) - DRC will automatically create a channel in this category for each private message received (a la traditional IRC client’s “query window” feature).
In order for this feature to proper expire these channels after config.discord.privMsgChannelStalenessTimeMinutes
have elapsed, your Redis server must have “Kx
” keyspace notifications enabled!
* x.match(/priv(?:ate)?\s*me?s(?:sa)?ge?s?/ig) || x === 'PMs'
at the time of this writing