forked from MirrorHub/mautrix-whatsapp
feat: add config option for self puppets
This commit is contained in:
parent
074745a3b5
commit
e418e7df7c
4 changed files with 38 additions and 26 deletions
|
@ -94,27 +94,28 @@ type BridgeConfig struct {
|
||||||
|
|
||||||
DoublePuppetConfig bridgeconfig.DoublePuppetConfig `yaml:",inline"`
|
DoublePuppetConfig bridgeconfig.DoublePuppetConfig `yaml:",inline"`
|
||||||
|
|
||||||
PrivateChatPortalMeta string `yaml:"private_chat_portal_meta"`
|
PrivateChatPortalMeta string `yaml:"private_chat_portal_meta"`
|
||||||
ParallelMemberSync bool `yaml:"parallel_member_sync"`
|
ParallelMemberSync bool `yaml:"parallel_member_sync"`
|
||||||
BridgeNotices bool `yaml:"bridge_notices"`
|
BridgeNotices bool `yaml:"bridge_notices"`
|
||||||
ResendBridgeInfo bool `yaml:"resend_bridge_info"`
|
ResendBridgeInfo bool `yaml:"resend_bridge_info"`
|
||||||
MuteBridging bool `yaml:"mute_bridging"`
|
MuteBridging bool `yaml:"mute_bridging"`
|
||||||
ArchiveTag string `yaml:"archive_tag"`
|
ArchiveTag string `yaml:"archive_tag"`
|
||||||
PinnedTag string `yaml:"pinned_tag"`
|
PinnedTag string `yaml:"pinned_tag"`
|
||||||
TagOnlyOnCreate bool `yaml:"tag_only_on_create"`
|
TagOnlyOnCreate bool `yaml:"tag_only_on_create"`
|
||||||
MarkReadOnlyOnCreate bool `yaml:"mark_read_only_on_create"`
|
MarkReadOnlyOnCreate bool `yaml:"mark_read_only_on_create"`
|
||||||
EnableStatusBroadcast bool `yaml:"enable_status_broadcast"`
|
EnableStatusBroadcast bool `yaml:"enable_status_broadcast"`
|
||||||
MuteStatusBroadcast bool `yaml:"mute_status_broadcast"`
|
MuteStatusBroadcast bool `yaml:"mute_status_broadcast"`
|
||||||
StatusBroadcastTag string `yaml:"status_broadcast_tag"`
|
StatusBroadcastTag string `yaml:"status_broadcast_tag"`
|
||||||
WhatsappThumbnail bool `yaml:"whatsapp_thumbnail"`
|
WhatsappThumbnail bool `yaml:"whatsapp_thumbnail"`
|
||||||
AllowUserInvite bool `yaml:"allow_user_invite"`
|
AllowUserInvite bool `yaml:"allow_user_invite"`
|
||||||
FederateRooms bool `yaml:"federate_rooms"`
|
FederateRooms bool `yaml:"federate_rooms"`
|
||||||
URLPreviews bool `yaml:"url_previews"`
|
URLPreviews bool `yaml:"url_previews"`
|
||||||
CaptionInMessage bool `yaml:"caption_in_message"`
|
CaptionInMessage bool `yaml:"caption_in_message"`
|
||||||
BeeperGalleries bool `yaml:"beeper_galleries"`
|
BeeperGalleries bool `yaml:"beeper_galleries"`
|
||||||
ExtEvPolls bool `yaml:"extev_polls"`
|
ExtEvPolls bool `yaml:"extev_polls"`
|
||||||
CrossRoomReplies bool `yaml:"cross_room_replies"`
|
CrossRoomReplies bool `yaml:"cross_room_replies"`
|
||||||
DisableReplyFallbacks bool `yaml:"disable_reply_fallbacks"`
|
DisableReplyFallbacks bool `yaml:"disable_reply_fallbacks"`
|
||||||
|
PrivateChatSelfPuppets bool `yaml:"private_chat_self_puppets"`
|
||||||
|
|
||||||
MessageHandlingTimeout struct {
|
MessageHandlingTimeout struct {
|
||||||
ErrorAfterStr string `yaml:"error_after"`
|
ErrorAfterStr string `yaml:"error_after"`
|
||||||
|
|
|
@ -115,6 +115,7 @@ func DoUpgrade(helper *up.Helper) {
|
||||||
}
|
}
|
||||||
helper.Copy(up.Bool, "bridge", "cross_room_replies")
|
helper.Copy(up.Bool, "bridge", "cross_room_replies")
|
||||||
helper.Copy(up.Bool, "bridge", "disable_reply_fallbacks")
|
helper.Copy(up.Bool, "bridge", "disable_reply_fallbacks")
|
||||||
|
helper.Copy(up.Bool, "bridge", "private_chat_self_puppets")
|
||||||
helper.Copy(up.Str|up.Null, "bridge", "message_handling_timeout", "error_after")
|
helper.Copy(up.Str|up.Null, "bridge", "message_handling_timeout", "error_after")
|
||||||
helper.Copy(up.Str|up.Null, "bridge", "message_handling_timeout", "deadline")
|
helper.Copy(up.Str|up.Null, "bridge", "message_handling_timeout", "deadline")
|
||||||
|
|
||||||
|
|
|
@ -313,6 +313,10 @@ bridge:
|
||||||
# Disable generating reply fallbacks? Some extremely bad clients still rely on them,
|
# Disable generating reply fallbacks? Some extremely bad clients still rely on them,
|
||||||
# but they're being phased out and will be completely removed in the future.
|
# but they're being phased out and will be completely removed in the future.
|
||||||
disable_reply_fallbacks: false
|
disable_reply_fallbacks: false
|
||||||
|
# Invite the puppet which represents the bridge user into private chats?
|
||||||
|
# This allows proper backfilling in private chats without double puppeting enabled,
|
||||||
|
# but adds an additional puppet user to each private chat.
|
||||||
|
private_chat_self_puppets: false
|
||||||
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
|
# Maximum time for handling Matrix events. Duration strings formatted for https://pkg.go.dev/time#ParseDuration
|
||||||
# Null means there's no enforced timeout.
|
# Null means there's no enforced timeout.
|
||||||
message_handling_timeout:
|
message_handling_timeout:
|
||||||
|
|
16
portal.go
16
portal.go
|
@ -1097,6 +1097,10 @@ func (portal *Portal) getMessageIntent(user *User, info *types.MessageInfo, msgT
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
intent := puppet.IntentFor(portal)
|
intent := puppet.IntentFor(portal)
|
||||||
|
if !portal.bridge.Config.Bridge.PrivateChatSelfPuppets && !intent.IsCustomPuppet && portal.IsPrivateChat() && info.Sender.User == portal.Key.Receiver.User && portal.Key.Receiver != portal.Key.JID {
|
||||||
|
portal.log.Debugfln("Not handling %s (%s): user doesn't have double puppeting enabled", info.ID, msgType)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return intent
|
return intent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1983,7 +1987,7 @@ func (portal *Portal) CreateMatrixRoom(user *User, groupInfo *types.GroupInfo, n
|
||||||
invite = append(invite, portal.bridge.Bot.UserID)
|
invite = append(invite, portal.bridge.Bot.UserID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if portal.IsPrivateChat() {
|
if portal.IsPrivateChat() && portal.bridge.Config.Bridge.PrivateChatSelfPuppets {
|
||||||
rec := portal.bridge.GetPuppetByJID(portal.Key.Receiver)
|
rec := portal.bridge.GetPuppetByJID(portal.Key.Receiver)
|
||||||
invite = append(invite, rec.MXID)
|
invite = append(invite, rec.MXID)
|
||||||
}
|
}
|
||||||
|
@ -2103,10 +2107,12 @@ func (portal *Portal) CreateMatrixRoom(user *User, groupInfo *types.GroupInfo, n
|
||||||
portal.log.Errorln("Failed to join created portal with bridge bot for e2be:", err)
|
portal.log.Errorln("Failed to join created portal with bridge bot for e2be:", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rec := portal.bridge.GetPuppetByJID(portal.Key.Receiver)
|
if portal.bridge.Config.Bridge.PrivateChatSelfPuppets {
|
||||||
err = rec.DefaultIntent().EnsureJoined(portal.MXID)
|
rec := portal.bridge.GetPuppetByJID(portal.Key.Receiver)
|
||||||
if err != nil {
|
err = rec.DefaultIntent().EnsureJoined(portal.MXID)
|
||||||
portal.log.Errorln("Failed to join created portal with puppet:", err)
|
if err != nil {
|
||||||
|
portal.log.Errorln("Failed to join created portal with puppet:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
user.UpdateDirectChats(map[id.UserID][]id.RoomID{puppet.MXID: {portal.MXID}})
|
user.UpdateDirectChats(map[id.UserID][]id.RoomID{puppet.MXID: {portal.MXID}})
|
||||||
|
|
Loading…
Reference in a new issue