From c9c871287d409456e5e51c6e0289cb3d31e97eed Mon Sep 17 00:00:00 2001 From: Aine Date: Wed, 21 Sep 2022 11:18:25 +0300 Subject: [PATCH] add read receipts and typing notifications, closes #30 --- bot/command.go | 6 ++++++ bot/message.go | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/bot/command.go b/bot/command.go index 31aa18a..c986bbe 100644 --- a/bot/command.go +++ b/bot/command.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "strings" + "time" "maunium.net/go/mautrix/event" "maunium.net/go/mautrix/id" @@ -156,6 +157,11 @@ func (b *Bot) handleCommand(ctx context.Context, evt *event.Event, commandSlice if cmd == nil { return } + _, err := b.lp.GetClient().UserTyping(evt.RoomID, true, 30*time.Second) + if err != nil { + b.log.Error("cannot send typing notification: %v", err) + } + defer b.lp.GetClient().UserTyping(evt.RoomID, false, 30*time.Second) //nolint:errcheck if !cmd.allowed(evt.Sender, evt.RoomID) { b.SendNotice(ctx, evt.RoomID, "not allowed to do that, kupo") diff --git a/bot/message.go b/bot/message.go index b618bd0..ea7441a 100644 --- a/bot/message.go +++ b/bot/message.go @@ -7,6 +7,11 @@ import ( func (b *Bot) handle(ctx context.Context) { evt := eventFromContext(ctx) + err := b.lp.GetClient().MarkRead(evt.RoomID, evt.ID) + if err != nil { + b.log.Error("cannot send read receipt: %v", err) + } + content := evt.Content.AsMessage() if content == nil { b.Error(ctx, evt.RoomID, "cannot read message")