π A cord to connect your Revolt and Discord servers
π A bridge for Discord and Revolt with easy setup through commands, written in TypeScript using revolt.js.
- Bridge messages between platforms
- Bridge attachments
- Bridge replies
- Bridge message edit and delete
- Bridge embeds
- Seamlessly display user information
New: You can use Docker instead.
Node v16.9+ is required!
Important: this bot is meant to be used in one server (Discord+Revolt), but can be used in more as long as they share the same admin.
- Clone this repository, install dependencies and build
git clone https://github.com/mayudev/revcord
cd revcord
npm install
npm run build
- Create a bot in Discord (Guide) and Revolt (Open user settings ->
My Bots
->Create a bot
) - Place the relevant tokens in environment variables. The easiest way is to create a
.env
file (yes, a file called.env
):
DISCORD_TOKEN = ...
REVOLT_TOKEN = ...
Of course, replace ... with tokens.
If you are running a self-hosted instance of Revolt, additionally set the API_URL
variable:
API_URL = https://api.revolt.chat
- Important! Make sure to select the following permissions in URL Generator when making an invite for your bot (Your bot in Discord Developers ->
OAuth2
->URL Generator
) (or if you're lazy, just selectAdministrator
) Note applications.commands!
- Important! On Revolt, make sure to add the bot to a role that has the Masquerade permission!
- Invite the bot to to a Revolt and Discord server.
- Start the bot using
npm start
.
Note: it's recommended to use something like pm2 or nodemon to run the bot. Make sure to pass the --experimental-specifier-resolution=node
flag to node manually, otherwise it will not run (it's included in the default start script).
You need Docker and docker-compose installed.
Follow the steps above to create a .env
file1. You do not have to run npm install
and npm run build
, obviously. Also, make sure your bots have all the required permissions as explained above.
Before you run docker-compose, use touch revcord.sqlite
to create the database file and leave it empty.
Then you should be ready to go.
docker-compose up -d
You can use either slash commands on Discord or rc!
prefix on Revolt (use rc!help
to show all commands)
To use the commands, you need the Administrator
permission on Discord. On Revolt, only the server owner can run them (for now).
From Discord:
/connect <Revolt channel name or ID>
From Revolt:
rc!connect <Discord channel name or ID>
For example:
# From Discord
/connect lounge
/connect 01AB23BC34CD56DE78ZX90WWDB
# From Revolt
rc!connect general
rc!connect 591234567890123456
βοΈ Send a message to see if it works. Try editing and deleting it.
From Discord:
/disconnect
From Revolt:
rc!disconnect
You don't have to specify any channel. It will disconnect the channel the command is sent in.
From Discord:
/connections
From Revolt:
rc!connections
You can toggle whether messages sent by bots should be forwarded. It's enabled by default (it's requied for NQN to work properly).
Use either rc!bots
or /bots
- Create a
mappings.json
file in the root directory. - Use the following format:
[
{
"discord": "discord_channel_id",
"revolt": "revolt_channel_id"
},
{
"discord": "another_discord_channel_id",
"revolt": "another_revolt_channel_id"
}
]
Footnotes
-
Alternatively, you can edit the
docker-compose.yml
file appropriately. Make sure to remove./.env:/app/.env
belowvolumes:
so it won't complain when you don't have a.env
file. β©