From 79d7db4fab1d90691331e522ea019d4be62b21a5 Mon Sep 17 00:00:00 2001 From: James Salter Date: Wed, 18 Aug 2021 15:11:09 +0100 Subject: [PATCH] Fix m.room.bot.options never being received by go-neb --- clients/clients.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/clients/clients.go b/clients/clients.go index 0e5816c..9934559 100644 --- a/clients/clients.go +++ b/clients/clients.go @@ -16,6 +16,7 @@ import ( shellwords "github.com/mattn/go-shellwords" log "github.com/sirupsen/logrus" "maunium.net/go/mautrix" + "maunium.net/go/mautrix/event" mevt "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" ) @@ -344,6 +345,15 @@ func (c *Clients) initClient(botClient *BotClient) error { botClient.verificationSAS = &sync.Map{} syncer := client.Syncer.(*mautrix.DefaultSyncer) + syncer.ParseErrorHandler = func(evt *event.Event, err error) bool { + // Events of type m.room.bot.options will be flagged as errors as this isn't an event type + // recognised by the Syncer, but we need to process them so the bot can accept options + // through this event (see onBotOptionsEvent) + if evt.Type.Type == "m.room.bot.options" { + return true + } + return false + } nebStore := &matrix.NEBStore{ InMemoryStore: *mautrix.NewInMemoryStore(), @@ -366,7 +376,7 @@ func (c *Clients) initClient(botClient *BotClient) error { c.onMessageEvent(botClient, event) }) - syncer.OnEventType(mevt.Type{Type: "m.room.bot.options", Class: mevt.UnknownEventType}, func(_ mautrix.EventSource, event *mevt.Event) { + syncer.OnEventType(mevt.Type{Type: "m.room.bot.options", Class: mevt.StateEventType}, func(_ mautrix.EventSource, event *mevt.Event) { c.onBotOptionsEvent(botClient.Client, event) })