Simple transport bot between Discord channel and Jabber (XMPP MUC) conference. You can join several conferences on one bot instance.
- You need a working installation of Node.js on the machine this bot will run on.
npm
is installed with Node.js. - Get latest stable release.
- Install dependencies:
npm ci
. - Create configuration file:
Create
cp config/development.cjson.sample config/development.cjson
production.cjson
for production mode (NODE_ENV=production
). - Edit configuration files. See section
Adding Bot to Discord Guild
below. - Start application:
nodejs ./app.js
ornpm start
. - Type
!ping
in Discord channel to check "pong" answer.
-
You need to create an application on My Apps page.
-
Create an invitation URL as described on Bot Authorization Flow documentation page. For ease of use, it is recommended to use this website: https://discordapi.com/permissions.html.
Bot requires 3 permissions:
READ_MESSAGES
,SEND_MESSAGES
,EMBED_LINKS
.There are two optional permissions:
MANAGE_CHANNELS
andMANAGE_WEBHOOKS
(both requires Two-Factor Authentication).Set
MANAGE_CHANNELS
if you want to bot set channel topic from jabber to Discord (one way sync).Set
MANAGE_WEBHOOKS
permission if you want to bot send messages to Discord on behalf of jabber user nickname. -
You need to navigate to this URL, you'll be prompted to add the bot to a guild in which you have proper permissions. On acceptance, the bot will be added.
Set environment variable DEBUG
to values according to debug
package documentation. This application uses values: info
, error
, error:app
, error:jabber
, error:discord
, debug:app
, debug:jabber
, debug:discord
.
For example, run in Linux terminal:
$> export DEBUG=*,-xmpp:client
$> node app.js
If DEBUG
is not set then it sets to log all except debug
settings: app.js#L3-L5.
Also you can run it in a docker container:
cd ~/projects/discord-xmpp-transport-bot
sudo docker run --rm -it -v $(pwd):/src:rw mkenney/npm:node-7.7-alpine "npm ci"
sudo docker run --rm -it -v $(pwd):/src:ro mkenney/npm:node-7.7-alpine "npm run start-debug"
Or use Dockerfile:
- Build the image:
sudo docker build -t discord-xmpp-transport-image .
- Run the container:
sudo docker run -it --rm --name dscrd-xmpp-brdg -e NODE_ENV=production -e DEBUG=info,error:*,debug:* discord-xmpp-transport-image
Run using docker-compose:
- Development mode:
sudo docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build
- Production mode:
sudo docker-compose up --build -d
All commands work only from Discord side. The bot answers visible only in Discord.
Command | Description | Where works |
---|---|---|
!ping |
Answers «pong». | Direct Message, Room |
!say <room> Text |
Say something behalf of the bot. You can use jabber conference or Discord room ID as parameter (see !rooms command). This command only works for bot admin (adminId in the config file) |
DM, Room |
!rooms |
Show linked jabber conferences | DM, Room |
!users |
Show users from linked jabber conference. Also, show who is ignored by !ignore command |
Room |
!ignore JabberUsername |
Ignore user from jabber by a nickname. If he changes nickname → he will be ignored with a new nickname. | Room |
!unignore JabberUsername or !dont_ignore JabberUsername |
Stop ignoring some user | Room |