88 "go.mau.fi/util/jsontime"
99 "go.mau.fi/util/ptr"
1010 "maunium.net/go/mautrix/bridgev2"
11+ "maunium.net/go/mautrix/bridgev2/database"
1112 "maunium.net/go/mautrix/event"
1213
1314 "go.mau.fi/mautrix-whatsapp/pkg/waid"
@@ -50,7 +51,7 @@ func (wa *WhatsAppConnector) GetCapabilities() *bridgev2.NetworkGeneralCapabilit
5051}
5152
5253func (wa * WhatsAppConnector ) GetBridgeInfoVersion () (info , caps int ) {
53- return 1 , 5
54+ return 1 , 6
5455}
5556
5657const WAMaxFileSize = 2000 * 1024 * 1024
@@ -65,7 +66,7 @@ func supportedIfFFmpeg() event.CapabilitySupportLevel {
6566}
6667
6768func capID () string {
68- base := "fi.mau.whatsapp.capabilities.2025_10_07 "
69+ base := "fi.mau.whatsapp.capabilities.2025_10_27 "
6970 if ffmpeg .Supported () {
7071 return base + "+ffmpeg"
7172 }
@@ -161,6 +162,16 @@ var whatsappCaps = &event.RoomFeatures{
161162 MaxSize : WAMaxFileSize ,
162163 },
163164 },
165+ State : event.StateFeatureMap {
166+ event .StateRoomName .Type : event .CapLevelFullySupported ,
167+ event .StateRoomAvatar .Type : event .CapLevelFullySupported ,
168+ event .StateTopic .Type : event .CapLevelFullySupported ,
169+ },
170+ MemberActions : event.MemberFeatureMap {
171+ event .MemberActionInvite : event .CapLevelFullySupported ,
172+ event .MemberActionKick : event .CapLevelFullySupported ,
173+ event .MemberActionLeave : event .CapLevelFullySupported ,
174+ },
164175 MaxTextLength : MaxTextLength ,
165176 LocationMessage : event .CapLevelFullySupported ,
166177 Poll : event .CapLevelFullySupported ,
@@ -179,9 +190,16 @@ var whatsappCaps = &event.RoomFeatures{
179190 DeleteChat : true ,
180191}
181192
193+ var whatsappDMCaps * event.RoomFeatures
182194var whatsappCAGCaps * event.RoomFeatures
183195
184196func init () {
197+ whatsappDMCaps = ptr .Clone (whatsappCaps )
198+ whatsappDMCaps .ID = capID () + "+dm"
199+ whatsappDMCaps .State = event.StateFeatureMap {
200+ event .StateBeeperDisappearingTimer .Type : event .CapLevelFullySupported ,
201+ }
202+ whatsappDMCaps .MemberActions = nil
185203 whatsappCAGCaps = ptr .Clone (whatsappCaps )
186204 whatsappCAGCaps .ID = capID () + "+cag"
187205 whatsappCAGCaps .Reply = event .CapLevelUnsupported
@@ -191,6 +209,8 @@ func init() {
191209func (wa * WhatsAppClient ) GetCapabilities (ctx context.Context , portal * bridgev2.Portal ) * event.RoomFeatures {
192210 if portal .Metadata .(* waid.PortalMetadata ).CommunityAnnouncementGroup {
193211 return whatsappCAGCaps
212+ } else if portal .RoomType == database .RoomTypeDM {
213+ return whatsappDMCaps
194214 }
195215 return whatsappCaps
196216}
0 commit comments