From 48295367746910975037a5da0aaa2462eca1f627 Mon Sep 17 00:00:00 2001 From: nexy7574 Date: Sun, 12 Jan 2025 15:46:41 +0000 Subject: [PATCH] Add /kick and /ban text commands --- pkg/hicli/send.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/pkg/hicli/send.go b/pkg/hicli/send.go index 998382f..fabba2b 100644 --- a/pkg/hicli/send.go +++ b/pkg/hicli/send.go @@ -103,6 +103,44 @@ func (h *HiClient) SendMessage( _, err := h.SetState(ctx, roomID, event.Type{Type: parts[1], Class: event.StateEventType}, parts[2], content) return nil, err } + if strings.HasPrefix(text, "/ban ") { + text = strings.TrimPrefix(text, "/ban ") + parts := strings.SplitN(text, " ", 1) // mxid, reason + if len(parts) < 1 || len(parts[0]) == 0 { + return nil, fmt.Errorf("invalid /ban command") + } + content := event.MemberEventContent{ + Membership: event.MembershipBan, + Reason: parts[1], + } + _, err := h.SetState( + ctx, + roomID, + event.Type{Type: "m.room.member", Class: event.StateEventType}, + parts[0], + content, + ) + return nil, err + } + if strings.HasPrefix(text, "/kick ") { + text = strings.TrimPrefix(text, "/kick ") + parts := strings.SplitN(text, " ", 2) // mxid, reason + if len(parts) < 1 || len(parts[0]) == 0 { + return nil, fmt.Errorf("invalid /kick command") + } + content := event.MemberEventContent{ + Membership: event.MembershipLeave, + Reason: parts[1], + } + _, err := h.SetState( + ctx, + roomID, + event.Type{Type: "m.room.member", Class: event.StateEventType}, + parts[0], + content, + ) + return nil, err + } var content event.MessageEventContent msgType := event.MsgText origText := text