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:
10
bot/data.go
10
bot/data.go
@@ -2,6 +2,7 @@ package bot
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/getsentry/sentry-go"
|
"github.com/getsentry/sentry-go"
|
||||||
"maunium.net/go/mautrix/id"
|
"maunium.net/go/mautrix/id"
|
||||||
@@ -66,6 +67,15 @@ func (b *Bot) getSettings(ctx context.Context, roomID id.RoomID) (settings, erro
|
|||||||
var config settings
|
var config settings
|
||||||
err := b.lp.GetClient().GetRoomAccountData(roomID, settingskey, &config)
|
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
|
return config, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ func (b *Bot) getMailbox(ctx context.Context, evt *event.Event) {
|
|||||||
|
|
||||||
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
||||||
if err != nil {
|
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 == "" {
|
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)
|
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
||||||
if err != nil {
|
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) {
|
if !cfg.Allowed(b.noowner, evt.Sender) {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ func (b *Bot) getOwner(ctx context.Context, evt *event.Event) {
|
|||||||
|
|
||||||
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
||||||
if err != nil {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,8 @@ func (b *Bot) setOwner(ctx context.Context, evt *event.Event, owner string) {
|
|||||||
ownerID := id.UserID(owner)
|
ownerID := id.UserID(owner)
|
||||||
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
cfg, err := b.getSettings(span.Context(), evt.RoomID)
|
||||||
if err != nil {
|
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) {
|
if !cfg.Allowed(b.noowner, evt.Sender) {
|
||||||
|
|||||||
Reference in New Issue
Block a user