diff --git a/bot/command_admin.go b/bot/command_admin.go index 2c13422..b51b1de 100644 --- a/bot/command_admin.go +++ b/bot/command_admin.go @@ -3,6 +3,7 @@ package bot import ( "context" "fmt" + "sort" "strings" "maunium.net/go/mautrix/id" @@ -12,7 +13,8 @@ import ( func (b *Bot) sendMailboxes(ctx context.Context) { evt := eventFromContext(ctx) - mailboxes := map[string]id.RoomID{} + mailboxes := map[string]settings{} + slice := []string{} b.rooms.Range(func(key any, value any) bool { if key == nil { return true @@ -29,26 +31,32 @@ func (b *Bot) sendMailboxes(ctx context.Context) { if !ok { return true } + config, err := b.getSettings(roomID) + if err != nil { + b.log.Error("cannot retrieve settings: %v", err) + } - mailboxes[mailbox] = roomID + mailboxes[mailbox] = config + slice = append(slice, mailbox) return true }) + sort.Strings(slice) - if len(mailboxes) == 0 { + if len(slice) == 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 { + for _, mailbox := range slice { + cfg := mailboxes[mailbox] msg.WriteString("* `") msg.WriteString(mailbox) msg.WriteString("@") msg.WriteString(b.domain) - msg.WriteString("` - `") - msg.WriteString(roomID.String()) - msg.WriteString("`") + msg.WriteString("` by ") + msg.WriteString(cfg.Owner()) msg.WriteString("\n") }