mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-14 18:17:29 +08:00
97 lines
1.9 KiB
Go
97 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/YspCoder/clawgo/pkg/bus"
|
|
"github.com/YspCoder/clawgo/pkg/channels"
|
|
)
|
|
|
|
func channelCmd() {
|
|
if len(os.Args) < 3 {
|
|
channelHelp()
|
|
return
|
|
}
|
|
|
|
subcommand := os.Args[2]
|
|
|
|
switch subcommand {
|
|
case "test":
|
|
channelTestCmd()
|
|
default:
|
|
fmt.Printf("Unknown channel command: %s\n", subcommand)
|
|
channelHelp()
|
|
}
|
|
}
|
|
|
|
func channelHelp() {
|
|
fmt.Println("\nChannel commands:")
|
|
fmt.Println(" test Send a test message to a specific channel")
|
|
fmt.Println()
|
|
fmt.Println("Test options:")
|
|
fmt.Println(" --to Recipient ID")
|
|
fmt.Println(" --channel Channel name (weixin, feishu, telegram)")
|
|
fmt.Println(" -m, --message Message to send")
|
|
}
|
|
|
|
func channelTestCmd() {
|
|
to := ""
|
|
channelName := ""
|
|
message := "This is a test message from ClawGo"
|
|
|
|
args := os.Args[3:]
|
|
for i := 0; i < len(args); i++ {
|
|
switch args[i] {
|
|
case "--to":
|
|
if i+1 < len(args) {
|
|
to = args[i+1]
|
|
i++
|
|
}
|
|
case "--channel":
|
|
if i+1 < len(args) {
|
|
channelName = args[i+1]
|
|
i++
|
|
}
|
|
case "-m", "--message":
|
|
if i+1 < len(args) {
|
|
message = args[i+1]
|
|
i++
|
|
}
|
|
}
|
|
}
|
|
|
|
if channelName == "" || to == "" {
|
|
fmt.Println("Error: --channel and --to are required")
|
|
return
|
|
}
|
|
|
|
cfg, err := loadConfig()
|
|
if err != nil {
|
|
fmt.Printf("Error loading config: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
msgBus := bus.NewMessageBus()
|
|
mgr, err := channels.NewManager(cfg, msgBus)
|
|
if err != nil {
|
|
fmt.Printf("Error creating channel manager: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
ctx := context.Background()
|
|
if err := mgr.StartAll(ctx); err != nil {
|
|
fmt.Printf("Error starting channels: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
fmt.Printf("Sending test message to %s (%s)...\n", channelName, to)
|
|
if err := mgr.SendToChannel(ctx, channelName, to, message); err != nil {
|
|
fmt.Printf("Failed to send message: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
fmt.Println("Test message sent successfully.")
|
|
}
|