package bot import ( "context" "fmt" "strings" "maunium.net/go/mautrix/id" "gitlab.com/etke.cc/postmoogle/utils" ) func (b *Bot) sendMailboxes(ctx context.Context) { evt := eventFromContext(ctx) mailboxes := map[string]id.RoomID{} b.rooms.Range(func(key any, value any) bool { if key == nil { return true } if value == nil { return true } mailbox, ok := key.(string) if !ok { return true } roomID, ok := value.(id.RoomID) if !ok { return true } mailboxes[mailbox] = roomID return true }) if len(mailboxes) == 0 { b.SendNotice(ctx, evt.RoomID, "No mailboxes are managed by the bot so far, kupo!") return } var msg strings.Builder msg.WriteString("The following mailboxes are managed by the bot:\n") for mailbox, roomID := range mailboxes { msg.WriteString("* `") msg.WriteString(mailbox) msg.WriteString("@") msg.WriteString(b.domain) msg.WriteString("` - `") msg.WriteString(roomID.String()) msg.WriteString("`") msg.WriteString("\n") } 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") }