From b8990c1898f5891a4013ddc29616ed4e210331cb Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 20 May 2022 16:37:41 +0300 Subject: [PATCH] Move to mautrix --- README.md | 65 ++++++++---------------------------------- bridge/bridge.go | 6 ++-- bridge/commands.go | 6 ++-- bridge/portal.go | 2 +- bridge/provisioning.go | 2 +- bridge/puppet.go | 2 +- bridge/user.go | 2 +- config/cmd.go | 2 +- config/database.go | 2 +- database/database.go | 2 +- example-config.yaml | 17 +++++------ go.mod | 2 +- main.go | 12 ++++---- registration/cmd.go | 4 +-- run/cmd.go | 6 ++-- version/cmd.go | 4 +-- 16 files changed, 48 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index 290f57f..f0d2564 100644 --- a/README.md +++ b/README.md @@ -1,59 +1,18 @@ # mautrix-discord +A Matrix-Discord puppeting bridge based on [discordgo](https://github.com/bwmarrin/discordgo). -## Getting Started +## Documentation +All setup and usage instructions are located on [docs.mau.fi]. Some quick links: -To get start with this bridge you first need to create the configuration file. -You can do that by running `./discord generate-config`. By default this will -output to `config.yaml`. Edit this file as necessary. +[docs.mau.fi]: https://docs.mau.fi/bridges/go/discord/index.html -Once you're done with the configuration file you need to generate the -registration for the Synapse. To do so run `./discord generate-registration`. -This command will update your configuration file as well where necessary. +* [Bridge setup](https://docs.mau.fi/bridges/go/setup.html?bridge=discord) + (or [with Docker](https://docs.mau.fi/bridges/general/docker-setup.html?bridge=discord)) +* Basic usage: [Authentication](https://docs.mau.fi/bridges/go/discord/authentication.html) -Now that you have a registration file, be sure to add it to the -`app_service_config_files` in the `homeserver.yaml` file of your Synapse -install. Once you've done this, make sure to reload or restart Synapse. +### Features & Roadmap +[ROADMAP.md](https://github.com/mautrix/discord/blob/master/ROADMAP.md) +contains a general overview of what is supported by the bridge. -You are no ready to start the bridge with `./discord` - -From the Matrix client of your choice, create a direct message with -`@discordbot:localhost` adjusting if you changed these settings in the config. -This will be your management room with the bot. - -From the management room you can now login to Discord with the `login` command. -This will present you with a QRCode that you can scan with the Discord mobile -application to login. For more detailed instructions, see the -[official documentation](https://support.discord.com/hc/en-us/articles/360039213771-QR-Code-Login-FAQ). - -You should now be able to send an receive direct messages from both one on ones -and group dms. However you can't currently create the dm, so you'll have to be -invited while the bridge is running. - -## Status - -Complete: - - * Login via QRCode - * Message sending for DMs and Group DMs - * Message editing for text bodies only (see notes about attachments below) - * Unicode standard reactions (add/remove) - * Message deleting - * Username formatting - * User avatars - -Bugged: - - * Changing the room title of a group dm in discord is sent as a message. - -Incomplete: - - * Attachments; most details including the database layout and database api are done. - -Not started: - - * Double Puppeting - * Enumerating DM list - * Mentions needs to be parsed, they currently show up as `<@!` in the message body. - * Custom emoji are not yet implemented. In message emoji show up as `<:text:id>`. - * Custom emoji reactions are not yet implemented. - * Additional bot commands like logout +## Discussion +Matrix room: [#discord:maunium.net](https://matrix.to/#/#discord:maunium.net) diff --git a/bridge/bridge.go b/bridge/bridge.go index c1b09a9..07e0653 100644 --- a/bridge/bridge.go +++ b/bridge/bridge.go @@ -11,9 +11,9 @@ import ( "maunium.net/go/mautrix/appservice" "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/config" - "gitlab.com/beeper/discord/database" - "gitlab.com/beeper/discord/version" + "go.mau.fi/mautrix-discord/config" + "go.mau.fi/mautrix-discord/database" + "go.mau.fi/mautrix-discord/version" ) const ( diff --git a/bridge/commands.go b/bridge/commands.go index 2799e7f..ed94503 100644 --- a/bridge/commands.go +++ b/bridge/commands.go @@ -11,9 +11,9 @@ import ( "maunium.net/go/mautrix/format" "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/consts" - "gitlab.com/beeper/discord/remoteauth" - "gitlab.com/beeper/discord/version" + "go.mau.fi/mautrix-discord/consts" + "go.mau.fi/mautrix-discord/remoteauth" + "go.mau.fi/mautrix-discord/version" ) type globals struct { diff --git a/bridge/portal.go b/bridge/portal.go index 05562d3..7f5e847 100644 --- a/bridge/portal.go +++ b/bridge/portal.go @@ -15,7 +15,7 @@ import ( "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/database" + "go.mau.fi/mautrix-discord/database" ) type portalDiscordMessage struct { diff --git a/bridge/provisioning.go b/bridge/provisioning.go index 46f95f9..43cfa0b 100644 --- a/bridge/provisioning.go +++ b/bridge/provisioning.go @@ -17,7 +17,7 @@ import ( "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/remoteauth" + "go.mau.fi/mautrix-discord/remoteauth" ) const ( diff --git a/bridge/puppet.go b/bridge/puppet.go index f17e8f1..37c58e2 100644 --- a/bridge/puppet.go +++ b/bridge/puppet.go @@ -9,7 +9,7 @@ import ( "maunium.net/go/mautrix/appservice" "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/database" + "go.mau.fi/mautrix-discord/database" ) type Puppet struct { diff --git a/bridge/user.go b/bridge/user.go index 1dcb262..d6b967e 100644 --- a/bridge/user.go +++ b/bridge/user.go @@ -16,7 +16,7 @@ import ( "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" - "gitlab.com/beeper/discord/database" + "go.mau.fi/mautrix-discord/database" ) var ( diff --git a/config/cmd.go b/config/cmd.go index be5262d..a0fea19 100644 --- a/config/cmd.go +++ b/config/cmd.go @@ -4,7 +4,7 @@ import ( "fmt" "os" - "gitlab.com/beeper/discord/globals" + "go.mau.fi/mautrix-discord/globals" ) type Cmd struct { diff --git a/config/database.go b/config/database.go index 7fb569d..8f8247f 100644 --- a/config/database.go +++ b/config/database.go @@ -3,7 +3,7 @@ package config import ( log "maunium.net/go/maulogger/v2" - db "gitlab.com/beeper/discord/database" + db "go.mau.fi/mautrix-discord/database" ) type database struct { diff --git a/database/database.go b/database/database.go index 8c31441..3798d72 100644 --- a/database/database.go +++ b/database/database.go @@ -8,7 +8,7 @@ import ( log "maunium.net/go/maulogger/v2" - "gitlab.com/beeper/discord/database/migrations" + "go.mau.fi/mautrix-discord/database/migrations" ) type Database struct { diff --git a/example-config.yaml b/example-config.yaml index 32ef879..3399a60 100644 --- a/example-config.yaml +++ b/example-config.yaml @@ -1,14 +1,14 @@ # Homeserver details. homeserver: # The address that this appservice can use to connect to the homeserver. - address: http://localhost:29326 + address: http://localhost:8008 # The domain of the homeserver (for MXIDs, etc). domain: example.com # Is the homeserver actually mautrix-asmux? asmux: false # The URL to push real-time bridge status to. - # If set, the bridge will make POST requests to this URL whenever a user's whatsapp connection state changes. + # If set, the bridge will make POST requests to this URL whenever a user's discord connection state changes. # The bridge will use the appservice as_token to authorize requests. status_endpoint: null @@ -16,11 +16,11 @@ homeserver: # Changing these values requires regeneration of the registration. appservice: # The address that the homeserver can use to connect to this appservice. - address: http://localhost:29350 + address: http://localhost:29334 # The hostname and port where this appservice should listen. hostname: 0.0.0.0 - port: 29350 + port: 29334 # Database config. database: # The database type. "sqlite3" and "postgres" are supported. @@ -29,7 +29,7 @@ appservice: # SQLite: File name is enough. https://github.com/mattn/go-sqlite3#connection-string # Postgres: Connection string. For example, postgres://user:password@host/database?sslmode=disable # To connect via Unix socket, use something like postgres:///dbname?host=/var/run/postgresql - uri: mautrix-whatsapp.db + uri: mautrix-discord.db # Maximum number of connections. Mostly relevant for Postgres. max_open_conns: 20 max_idle_conns: 2 @@ -50,7 +50,7 @@ appservice: bot: username: discordbot displayname: Discord bridge bot - avatar: mxc://beeper.com/222332ba2b197e57b73ef2db236232db79af62d0 + avatar: mxc://maunium.net/nIdEykemnwdisvHbpxflpDlC # Whether or not to receive ephemeral events via appservice transactions. # Requires MSC2409 support (i.e. Synapse 1.22+). @@ -64,9 +64,10 @@ appservice: # Bridge config bridge: # Localpart template of MXIDs for Discord users. - # {{.}} is replaced with the phone number of the WhatsApp user. + # {{.}} is replaced with the internal ID of the Discord user. username_template: discord_{{.}} - # Displayname template for Discord userss. + # Displayname template for Discord users. + # TODO: document variables displayname_template: '{{.Username}}#{{.Discriminator}} (D){{if .Bot}} (bot){{end}}' portal_message_buffer: 128 diff --git a/go.mod b/go.mod index bba6b6a..e5b1ade 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module gitlab.com/beeper/discord +module go.mau.fi/mautrix-discord go 1.17 diff --git a/main.go b/main.go index 3183eec..ba9037a 100644 --- a/main.go +++ b/main.go @@ -6,12 +6,12 @@ import ( "github.com/alecthomas/kong" - "gitlab.com/beeper/discord/config" - "gitlab.com/beeper/discord/consts" - "gitlab.com/beeper/discord/globals" - "gitlab.com/beeper/discord/registration" - "gitlab.com/beeper/discord/run" - "gitlab.com/beeper/discord/version" + "go.mau.fi/mautrix-discord/config" + "go.mau.fi/mautrix-discord/consts" + "go.mau.fi/mautrix-discord/globals" + "go.mau.fi/mautrix-discord/registration" + "go.mau.fi/mautrix-discord/run" + "go.mau.fi/mautrix-discord/version" ) var cli struct { diff --git a/registration/cmd.go b/registration/cmd.go index d3c50d8..e2990f2 100644 --- a/registration/cmd.go +++ b/registration/cmd.go @@ -7,8 +7,8 @@ import ( "maunium.net/go/mautrix/appservice" - "gitlab.com/beeper/discord/config" - "gitlab.com/beeper/discord/globals" + "go.mau.fi/mautrix-discord/config" + "go.mau.fi/mautrix-discord/globals" ) type Cmd struct { diff --git a/run/cmd.go b/run/cmd.go index 06846e9..d53a061 100644 --- a/run/cmd.go +++ b/run/cmd.go @@ -6,9 +6,9 @@ import ( "os/signal" "syscall" - "gitlab.com/beeper/discord/bridge" - "gitlab.com/beeper/discord/config" - "gitlab.com/beeper/discord/globals" + "go.mau.fi/mautrix-discord/bridge" + "go.mau.fi/mautrix-discord/config" + "go.mau.fi/mautrix-discord/globals" ) type Cmd struct{} diff --git a/version/cmd.go b/version/cmd.go index 8c19eb5..d1f0f0f 100644 --- a/version/cmd.go +++ b/version/cmd.go @@ -3,8 +3,8 @@ package version import ( "fmt" - "gitlab.com/beeper/discord/consts" - "gitlab.com/beeper/discord/globals" + "go.mau.fi/mautrix-discord/consts" + "go.mau.fi/mautrix-discord/globals" ) type Cmd struct{}