Make reason optional

This commit is contained in:
nexy7574 2025-01-12 15:49:07 +00:00
parent 4829536774
commit 2ee66cb6bc

View file

@ -106,18 +106,27 @@ func (h *HiClient) SendMessage(
if strings.HasPrefix(text, "/ban ") { if strings.HasPrefix(text, "/ban ") {
text = strings.TrimPrefix(text, "/ban ") text = strings.TrimPrefix(text, "/ban ")
parts := strings.SplitN(text, " ", 1) // mxid, reason parts := strings.SplitN(text, " ", 1) // mxid, reason
if len(parts) < 1 || len(parts[0]) == 0 { // reason is optional
if len(parts) < 1 {
return nil, fmt.Errorf("invalid /ban command") return nil, fmt.Errorf("invalid /ban command")
} }
content := event.MemberEventContent{ mxid := parts[0]
Membership: event.MembershipBan, var content event.MemberEventContent
Reason: parts[1], if len(parts) == 2 {
content = event.MemberEventContent{
Membership: event.MembershipBan,
Reason: parts[1],
}
} else {
content = event.MemberEventContent{
Membership: event.MembershipBan,
}
} }
_, err := h.SetState( _, err := h.SetState(
ctx, ctx,
roomID, roomID,
event.Type{Type: "m.room.member", Class: event.StateEventType}, event.Type{Type: "m.room.member", Class: event.StateEventType},
parts[0], mxid,
content, content,
) )
return nil, err return nil, err
@ -125,18 +134,23 @@ func (h *HiClient) SendMessage(
if strings.HasPrefix(text, "/kick ") { if strings.HasPrefix(text, "/kick ") {
text = strings.TrimPrefix(text, "/kick ") text = strings.TrimPrefix(text, "/kick ")
parts := strings.SplitN(text, " ", 2) // mxid, reason parts := strings.SplitN(text, " ", 2) // mxid, reason
if len(parts) < 1 || len(parts[0]) == 0 { mxid := parts[0]
return nil, fmt.Errorf("invalid /kick command") var content event.MemberEventContent
} if len(parts) == 2 {
content := event.MemberEventContent{ content = event.MemberEventContent{
Membership: event.MembershipLeave, Membership: event.MembershipLeave,
Reason: parts[1], Reason: parts[1],
}
} else {
content = event.MemberEventContent{
Membership: event.MembershipLeave,
}
} }
_, err := h.SetState( _, err := h.SetState(
ctx, ctx,
roomID, roomID,
event.Type{Type: "m.room.member", Class: event.StateEventType}, event.Type{Type: "m.room.member", Class: event.StateEventType},
parts[0], mxid,
content, content,
) )
return nil, err return nil, err