Merge branch 'settings-or-error' into 'main'

Suppress M_NOT_FOUND error when fetching settings

See merge request etke.cc/postmoogle!3
This commit is contained in:
Aine
2022-08-23 14:50:08 +00:00
3 changed files with 17 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ package bot
import (
"context"
"strings"
"github.com/getsentry/sentry-go"
"maunium.net/go/mautrix/id"
@@ -66,6 +67,15 @@ func (b *Bot) getSettings(ctx context.Context, roomID id.RoomID) (settings, erro
var config settings
err := b.lp.GetClient().GetRoomAccountData(roomID, settingskey, &config)
if err != nil {
if strings.Contains(err.Error(), "M_NOT_FOUND") {
// Suppress `M_NOT_FOUND (HTTP 404): Room account data not found` errors.
// Until some settings are explicitly set, we don't store any.
// In such cases, just return a default (empty) settings object.
err = nil
}
}
return config, err
}

View File

@@ -49,7 +49,8 @@ func (b *Bot) getMailbox(ctx context.Context, evt *event.Event) {
cfg, err := b.getSettings(span.Context(), evt.RoomID)
if err != nil {
b.log.Warn("cannot get %s settings: %v", evt.RoomID, err)
b.Error(span.Context(), evt.RoomID, "failed to retrieve setting: %v", err)
return
}
if cfg.Mailbox == "" {
@@ -81,7 +82,8 @@ func (b *Bot) setMailbox(ctx context.Context, evt *event.Event, mailbox string)
}
cfg, err := b.getSettings(span.Context(), evt.RoomID)
if err != nil {
b.log.Warn("cannot get settings: %v", err)
b.Error(span.Context(), evt.RoomID, "failed to retrieve setting: %v", err)
return
}
if !cfg.Allowed(b.noowner, evt.Sender) {

View File

@@ -23,7 +23,7 @@ func (b *Bot) getOwner(ctx context.Context, evt *event.Event) {
cfg, err := b.getSettings(span.Context(), evt.RoomID)
if err != nil {
b.Error(span.Context(), evt.RoomID, "owner is not set yet")
b.Error(span.Context(), evt.RoomID, "failed to retrieve setting: %v", err)
return
}
@@ -47,7 +47,8 @@ func (b *Bot) setOwner(ctx context.Context, evt *event.Event, owner string) {
ownerID := id.UserID(owner)
cfg, err := b.getSettings(span.Context(), evt.RoomID)
if err != nil {
b.log.Warn("cannot get settings: %v", err)
b.Error(span.Context(), evt.RoomID, "failed to retrieve setting: %v", err)
return
}
if !cfg.Allowed(b.noowner, evt.Sender) {