# Matrix Discord Bridge A bridge between [Matrix](http://matrix.org/) and [Discord](https://discordapp.com/). Currently the bridge is alpha quality, but is usable.  ## Helping out [](https://travis-ci.org/Half-Shot/matrix-appservice-discord) ### PRs PRs are graciously accepted, so please come talk to us in [#discord-bridge:matrix.org](https://matrix.to/#/#discord-bridge:matrix.org) about any neat ideas you might have. If you are going to make a change, please merge it with the `develop` branch :). ### Issues You can also file bug reports/ feature requests on Github Issues which also helps a ton. Please remember to include logs. Please also be aware that this is an unoffical project worked on in my (Half-Shot) spare time. ## Setting up (These instructions were tested against Node.js v6.9.5 and the Synapse homeserver) ### Setup the bridge * Run ``npm install`` to grab the dependencies. * Run ``npm build`` to build the typescript. * Copy ``config/config.sample.yaml`` to ``config.yaml`` and edit it to reflect your setup. * Run ``node build/discordas.js -r -u "http://localhost:9005" -c config.yaml`` * Modify your HSs appservices config so that it includes the generated file. #### 3PID Protocol Support This bridge support searching for rooms within networks via the 3pid system used in clients like [Riot](https://riot.im). However, it requires a small manual change to your registration file. Add ``protocols: ["discord"]`` to the end and restart both your bridge and synapse. Any new servers/guilds you bridge should show up in the network list on Riot and other clients. ### Setting up Discord * Create a new application via https://discordapp.com/developers/applications/me/create * Make sure to create a bot user. Fill in ``config.yaml`` * Run ``npm run-script getbotlink`` to get a authorisation link. * Give this link to owners of the guilds you plan to bridge. * Finally, you can join a room with ``#_discord_guildid_channelid`` * These can be taken from the url ("/$GUILDID/$CHANNELID") when you are in a channel. * Riot (and other clients with third party protocol support) users can directly join channels from the room directory. ## Features and Roadmap In a vague order of what is coming up next - [x] Group messages - Matrix -> Discord - [x] Text content - [x] Image content - [x] Audio/Video content - [ ] Typing notifs (**Not supported, requires syncing**) - [x] User Profiles - Discord -> Matrix - [x] Text content - [x] Image content - [x] Audio/Video content - [x] Typing notifs - [x] User Profiles - [x] Presence (Synapse currently squashes presence, waiting on future spec) - [ ] Third Party Lookup - [x] Rooms - [ ] Users - [ ] Puppet a user's real Discord account. - [x] Sending messages - [ ] Direct messages - [x] Rooms react to Discord updates - [ ] Integrate Discord into existing rooms. - [ ] Manage channel from Matrix (possibly) - [ ] Authorise admin rights from Discord to Matrix users - [ ] Topic - [ ] Room Name - [ ] Provisioning API - [ ] Webhooks (allows for prettier messages to discord) - [ ] VOIP (**Hard** | Unlikely to be finished anytime soon) ## Contact My Matrix ID: [@Half-Shot:half-shot.uk](https://matrix.to/#/@Half-Shot:half-shot.uk)