discord-xmpp-transport-bot
discord-xmpp-transport-bot copied to clipboard
Simple transport bot between Discord channel and Jabber conference
discord-jabber-transport-bot
Simple transport bot between Discord channel and Jabber (XMPP MUC) conference. You can join several conferences on one bot instance.
How to start
- 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:
Createcp 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.
Adding Bot to Discord Guild
-
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.
Debugging
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.
Docker
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
Bot commands
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 !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 |