fafomo/streaming.go
2025-06-16 10:27:06 +02:00

46 lines
1 KiB
Go

package main
import (
"context"
"fmt"
"os"
"os/exec"
"time"
"k8s.io/klog"
"maunium.net/go/mautrix"
"maunium.net/go/mautrix/event"
)
func streaming(ctx context.Context, client *mautrix.Client) {
start := time.Now()
var nameLastMentioned time.Time
var previousNameMentioned string
syncer := client.Syncer.(*mautrix.DefaultSyncer)
syncer.OnEventType(event.EventMessage, func(ctx context.Context, evt *event.Event) {
if evt.Timestamp < start.UnixMilli() {
return
}
if evt.Type == event.EventMessage && evt.RoomID.String() == flagStreamMatrixRoom {
line := evt.Content.AsMessage().Body
name := evt.Sender.Localpart()
if name != previousNameMentioned || time.Since(nameLastMentioned) > time.Minute {
line = fmt.Sprintf("%s says: %s", name, line)
nameLastMentioned = time.Now()
previousNameMentioned = name
}
klog.Info(line)
cmd := exec.CommandContext(ctx, "/home/u/speak.sh", line)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Run()
}
})
<-ctx.Done()
}