From 221a21fd3bf0e5e8c04a9531a01de91774aea921 Mon Sep 17 00:00:00 2001 From: James Lu Date: Mon, 22 Jun 2020 05:07:46 +0000 Subject: [PATCH] matrix: add support for global display names --- bridge/matrix/matrix.go | 16 ++++++++++++++-- matterbridge.toml.sample | 4 ++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bridge/matrix/matrix.go b/bridge/matrix/matrix.go index 6521fe86..036d620c 100644 --- a/bridge/matrix/matrix.go +++ b/bridge/matrix/matrix.go @@ -180,9 +180,21 @@ func (b *Bmatrix) handleEvent(ev *matrix.Event) { return } + // Use display name (/nick) if available + // XXX: no support for per-room display names or disambiguation yet + hasDisplayName := false + displayName := ev.Sender[1:] + if b.GetBool("UseDisplayName") { + if resp, err := b.mc.GetDisplayName(ev.Sender); err == nil { + displayName = resp.DisplayName + b.Log.Debugf("Got display name %s for user %s", displayName, ev.Sender) + hasDisplayName = true + } + } + // Create our message rmsg := config.Message{ - Username: ev.Sender[1:], + Username: displayName, Channel: channel, Account: b.Account, UserID: ev.Sender, @@ -198,7 +210,7 @@ func (b *Bmatrix) handleEvent(ev *matrix.Event) { } // Remove homeserver suffix if configured - if b.GetBool("NoHomeServerSuffix") { + if b.GetBool("NoHomeServerSuffix") && !hasDisplayName { re := regexp.MustCompile("(.*?):.*") rmsg.Username = re.ReplaceAllString(rmsg.Username, `$1`) } diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample index 975078c7..ec9c9246 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -1213,6 +1213,10 @@ Password="yourpass" #OPTIONAL (default false) NoHomeServerSuffix=false +#Whether to prefer display names when available. Currently this does not +#support disambiguation if display names collide. (default false) +#UseDisplayName=false + #Whether to disable sending of HTML content to matrix #See https://github.com/42wim/matterbridge/issues/1022 #OPTIONAL (default false)