From ba73b5a97c4b14adc233db730ba8da84496b4d9f Mon Sep 17 00:00:00 2001 From: Aine Date: Mon, 29 Aug 2022 20:18:25 +0300 Subject: [PATCH] add !pm delete, closes #13 --- bot/command.go | 8 ++++++++ bot/command_admin.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/bot/command.go b/bot/command.go index 650e318..966662f 100644 --- a/bot/command.go +++ b/bot/command.go @@ -14,6 +14,7 @@ import ( const ( commandHelp = "help" commandStop = "stop" + commandDelete = "delete" commandMailboxes = "mailboxes" ) @@ -115,6 +116,11 @@ func (b *Bot) buildCommandList() commandList { description: "Show the list of all mailboxes", allowed: b.allowAdmin, }, + { + key: commandDelete, + description: "Delete specific mailbox", + allowed: b.allowAdmin, + }, } } @@ -134,6 +140,8 @@ func (b *Bot) handleCommand(ctx context.Context, evt *event.Event, commandSlice b.sendHelp(ctx) case commandStop: b.runStop(ctx) + case commandDelete: + b.runDelete(ctx, commandSlice) case commandMailboxes: b.sendMailboxes(ctx) default: diff --git a/bot/command_admin.go b/bot/command_admin.go index 8513d92..2c13422 100644 --- a/bot/command_admin.go +++ b/bot/command_admin.go @@ -2,9 +2,12 @@ package bot import ( "context" + "fmt" "strings" "maunium.net/go/mautrix/id" + + "gitlab.com/etke.cc/postmoogle/utils" ) func (b *Bot) sendMailboxes(ctx context.Context) { @@ -51,3 +54,28 @@ func (b *Bot) sendMailboxes(ctx context.Context) { b.SendNotice(ctx, evt.RoomID, msg.String()) } + +func (b *Bot) runDelete(ctx context.Context, commandSlice []string) { + evt := eventFromContext(ctx) + if len(commandSlice) < 2 { + b.SendNotice(ctx, evt.RoomID, fmt.Sprintf("Usage: `%s delete MAILBOX`", b.prefix)) + return + } + mailbox := utils.Mailbox(commandSlice[1]) + + v, ok := b.rooms.Load(mailbox) + if v == nil || !ok { + b.SendError(ctx, evt.RoomID, "mailbox does not exists, kupo") + return + } + roomID := v.(id.RoomID) + + b.rooms.Delete(mailbox) + err := b.setSettings(roomID, settings{}) + if err != nil { + b.Error(ctx, evt.RoomID, "cannot update settings: %v", err) + return + } + + b.SendNotice(ctx, evt.RoomID, "mailbox has been deleted") +}