diff options
Diffstat (limited to 'Omni/Bot.hs')
| -rw-r--r-- | Omni/Bot.hs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Omni/Bot.hs b/Omni/Bot.hs new file mode 100644 index 0000000..77a0408 --- /dev/null +++ b/Omni/Bot.hs @@ -0,0 +1,66 @@ +#!/usr/bin/env run.sh +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE NoImplicitPrelude #-} + +-- | Omni Bot - Family assistant via Telegram. +-- +-- Usage: +-- bot # Uses TELEGRAM_BOT_TOKEN env var +-- bot --token=XXX # Explicit token +-- bot --model=MODEL # Override LLM model +-- +-- : out bot +-- : dep aeson +-- : dep http-conduit +-- : dep stm +module Omni.Bot where + +import Alpha +import qualified Data.Text as Text +import qualified Omni.Agent.Telegram as Telegram +import qualified Omni.Cli as Cli +import qualified Omni.Test as Test +import qualified System.Console.Docopt as Docopt + +main :: IO () +main = Cli.main plan + +plan :: Cli.Plan () +plan = + Cli.Plan + { Cli.help = help, + Cli.move = move, + Cli.test = test, + Cli.tidy = \_ -> pure () + } + +help :: Cli.Docopt +help = + [Cli.docopt| +bot - Omni family assistant via Telegram + +Usage: + bot [--token=TOKEN] [--model=MODEL] + bot test + bot (-h | --help) + +Options: + -h --help Show this help + --token=TOKEN Telegram bot token (or use TELEGRAM_BOT_TOKEN env) + --model=MODEL LLM model to use [default: anthropic/claude-sonnet-4] +|] + +move :: Cli.Arguments -> IO () +move args = do + let maybeToken = fmap Text.pack (Cli.getArg args (Cli.longOption "token")) + Telegram.startBot maybeToken + +test :: Test.Tree +test = + Test.group + "Omni.Bot" + [ Test.unit "help is non-empty" <| do + let usage = str (Docopt.usage help) :: String + null usage Test.@=? False + ] |
