JuanCS-Dev's picture
Deploying CLI completion and HF Token auth support
d5dc912 verified
Raw History Blame Contribute Delete
1.96 kB
# SPDX-License-Identifier: MIT
"""bytecli chat — Send a message through the agent to Twitch chat."""
from __future__ import annotations
import argparse
from typing import Any
from cli.client import ByteClient
from cli.config import CLIConfig
from cli.formatters import output, print_header, print_success
def register(subparsers: argparse._SubParsersAction) -> None:
parser = subparsers.add_parser(
"chat",
help="Send a message through the agent (processed by AI pipeline)",
description=(
"Sends a natural language prompt directly into the agent's cognitive pipeline. "
"Unlike raw IRC messages, this triggers the full NLP, sentiment, and autonomy "
"engines as if the streamer or a privileged user had commanded it."
),
epilog=(
"Examples:\n"
' bytecli chat "faz um ASCII do Goku"\n'
' bytecli chat "qual é o resumo da live até agora?"\n'
),
formatter_class=argparse.RawDescriptionHelpFormatter,
)
parser.add_argument("message", help="Message text to send")
parser.set_defaults(handler=_handle)
def _handle(args: argparse.Namespace, client: ByteClient, config: CLIConfig) -> None:
payload: dict[str, Any] = {
"text": args.message,
}
if config.channel != "default":
payload["channel_id"] = config.channel
data = client.post("/api/chat/send", payload)
output(data, json_mode=config.json_output, human_fn=_human_chat)
def _human_chat(data: dict[str, Any]) -> None:
replies = data.get("replies", [])
text = data.get("text", "")
print_success(f"Message sent: {text}")
if replies:
print_header("Agent Replies")
for i, reply in enumerate(replies, 1):
if isinstance(reply, str):
print(f" {i}. {reply}")
elif isinstance(reply, dict):
print(f" {i}. {reply.get('text', reply)}")