diff --git a/commands.go b/commands.go index b5e9d85..3774b94 100644 --- a/commands.go +++ b/commands.go @@ -873,9 +873,13 @@ func (handler *CommandHandler) CommandPM(ce *CommandEvent) { puppet.Sync(user, contact) portal := user.bridge.GetPortalByJID(database.NewPortalKey(contact.JID, user.JID)) if len(portal.MXID) > 0 { - err := portal.MainIntent().EnsureInvited(portal.MXID, user.MXID) + var err error + if !user.IsRelaybot { + err = portal.MainIntent().EnsureInvited(portal.MXID, user.MXID) + } if err != nil { portal.log.Warnfln("Failed to invite %s to portal: %v. Creating new portal", user.MXID, err) + portal.MXID = "" } else { ce.Reply("You already have a private chat portal with that user at [%s](https://matrix.to/#/%s)", puppet.Displayname, portal.MXID) return diff --git a/portal.go b/portal.go index 28e5161..9051edc 100644 --- a/portal.go +++ b/portal.go @@ -1122,7 +1122,7 @@ func (portal *Portal) CreateMatrixRoom(user *User) error { if metadata.Announce { portal.RestrictMessageSending(metadata.Announce) } - } else { + } else if !user.IsRelaybot { customPuppet := portal.bridge.GetPuppetByCustomMXID(user.MXID) if customPuppet != nil && customPuppet.CustomIntent() != nil { _ = customPuppet.CustomIntent().EnsureJoined(portal.MXID) @@ -1132,7 +1132,7 @@ func (portal *Portal) CreateMatrixRoom(user *User) error { portal.SyncBroadcastRecipients(broadcastMetadata) } inCommunity := user.addPortalToCommunity(portal) - if portal.IsPrivateChat() { + if portal.IsPrivateChat() && !user.IsRelaybot { puppet := user.bridge.GetPuppetByJID(portal.Key.JID) user.addPuppetToCommunity(puppet)