X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/5a93b6124068c2a8748fc0bfbb2a2d151815bcf0..a50886435ab974bee6f96ddc0d92210549a01221:/daemon.go diff --git a/daemon.go b/daemon.go index 2a93f1d..31a6714 100644 --- a/daemon.go +++ b/daemon.go @@ -90,6 +90,8 @@ func daemon(ctx context.Context, out io.Writer) (err error) { err = errors.Join(err, agents.Close()) }() + whatsapp.inbox.voice = &VoiceTranscriber{config: config.Voice} + root := agents[0] agent := root.agent schedules := root.schedules @@ -111,6 +113,8 @@ func daemon(ctx context.Context, out io.Writer) (err error) { if hasBot { telegram = newTelegramBot(newTelegramAPI(telegramAPIURL, botSettings.Token), botSettings.Owner, filepath.Join(agent.dir, telegramOffsetFileName), daemonLogger(out, "telegram: ")) + telegram.voice = &VoiceTranscriber{config: config.Voice} + logger.Info("Telegram bot started") } @@ -353,6 +357,10 @@ func daemonServe(ctx context.Context, listener net.Listener, bot *TelegramBot, w return errors.Join(err, listener.Close()) } + if bot != nil { + l.tools.imageShow.bot = bot + } + loops := []*TurnLoop{l} for _, child := range children { loop, err := child.Loop(nil, func(Event) { @@ -493,6 +501,27 @@ func daemonRunRequest(l *TurnLoop, whatsapp *WhatsApp, request SocketRequest, an _, err := l.Submit(terminalSource, request.Text) return err + case "image": + if !filepath.IsAbs(request.Path) { + return errors.New("use /image PATH [caption]") + } + + data, err := imageReadFile(request.Path) + if err != nil { + return fmt.Errorf("read terminal image: %w", err) + } + + name, err := l.agent.Images().Save(data) + if err != nil { + return fmt.Errorf("store terminal image: %w", err) + } + + _, err = l.Submit(terminalSource, imageText([]string{name}, request.Text)) + if err != nil { + return fmt.Errorf("submit terminal image: %w", err) + } + + return nil case "interrupt": if !l.Interrupt() { return errors.New("no turn runs")