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.
npmis installed with Node.js. - Get latest stable release.
- Install dependencies:
npm ci. - Create configuration file:
Createcp config/development.cjson.sample config/development.cjsonproduction.cjsonfor production mode (NODE_ENV=production). - Edit configuration files. See section
Adding Bot to Discord Guildbelow. - Start application:
nodejs ./app.jsornpm start. - Type
!pingin 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_CHANNELSandMANAGE_WEBHOOKS(both requires Two-Factor Authentication).Set
MANAGE_CHANNELSif you want to bot set channel topic from jabber to Discord (one way sync).Set
MANAGE_WEBHOOKSpermission 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-botsudo 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 |