Skip to content

Commit 7a6ce49

Browse files
committed
Implement msc4323 suspension
1 parent 3134711 commit 7a6ce49

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
golang.org/x/sync v0.16.0
1414
gopkg.in/yaml.v3 v3.0.1
1515
maunium.net/go/mauflag v1.0.0
16-
maunium.net/go/mautrix v0.25.1-0.20250823214755-7e07700a6943
16+
maunium.net/go/mautrix v0.25.1-0.20250831164929-75f12ea228d8
1717
)
1818

1919
require (

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,5 +98,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
9898
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
9999
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
100100
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
101-
maunium.net/go/mautrix v0.25.1-0.20250823214755-7e07700a6943 h1:qNRr7dDDJhGUMTqkp4p1EJ18SL0yMKzB1pdzSZ2XUWo=
102-
maunium.net/go/mautrix v0.25.1-0.20250823214755-7e07700a6943/go.mod h1:pDd6Ppg+1PbWrw/rg4ZQQfVYZICRGzH+DcliZ/BODvU=
101+
maunium.net/go/mautrix v0.25.1-0.20250831164929-75f12ea228d8 h1:9vZSazM726hCXBQiH8DdFmRlEmQTHJVN8ksDhbpOX20=
102+
maunium.net/go/mautrix v0.25.1-0.20250831164929-75f12ea228d8/go.mod h1:pDd6Ppg+1PbWrw/rg4ZQQfVYZICRGzH+DcliZ/BODvU=

policyeval/commands.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -883,9 +883,14 @@ var cmdSuspend = &CommandHandler{
883883
Name: "suspend",
884884
Aliases: []string{"unsuspend"},
885885
Func: func(ce *CommandEvent) {
886-
err := ce.Meta.Bot.SynapseAdmin.SuspendAccount(ce.Ctx, id.UserID(ce.Args[0]), synapseadmin.ReqSuspendUser{
887-
Suspend: ce.Command != "unsuspend",
888-
})
886+
var err error
887+
if ce.Meta.Bot.SpecVersions.Supports(mautrix.FeatureAccountModeration) {
888+
_, err = ce.Meta.Bot.UnstableSetSuspendedStatus(ce.Ctx, id.UserID(ce.Args[0]), ce.Command == "suspend")
889+
} else {
890+
err = ce.Meta.Bot.SynapseAdmin.SuspendAccount(ce.Ctx, id.UserID(ce.Args[0]), synapseadmin.ReqSuspendUser{
891+
Suspend: ce.Command != "unsuspend",
892+
})
893+
}
889894
if err != nil {
890895
ce.Reply("Failed to %s: %v", ce.Command, err)
891896
} else {

policyeval/execute.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,13 @@ func (pe *PolicyEvaluator) maybeApplySuspend(ctx context.Context, userID id.User
139139
if !plist.AutoSuspend {
140140
return
141141
}
142-
err := pe.Bot.SynapseAdmin.SuspendAccount(ctx, userID, synapseadmin.ReqSuspendUser{Suspend: true})
142+
143+
var err error
144+
if pe.Bot.SpecVersions.Supports(mautrix.FeatureAccountModeration) {
145+
_, err = pe.Bot.UnstableSetSuspendedStatus(ctx, userID, true)
146+
} else {
147+
err = pe.Bot.SynapseAdmin.SuspendAccount(ctx, userID, synapseadmin.ReqSuspendUser{Suspend: true})
148+
}
143149
if err != nil {
144150
zerolog.Ctx(ctx).Err(err).Stringer("user_id", userID).Msg("Failed to suspend user")
145151
pe.sendNotice(ctx, "Failed to suspend %s: %v", format.MarkdownMention(userID), err)

0 commit comments

Comments
 (0)