继续之前的重构:把根目录残留的非数据/资源类子目录(agents、agenttool、ai、 autoreply、completion、conversation、llm、message、mqtpp、stream、 toolmanager、toolrouter)一并搬到 internal/ 下,并把全工程引用它们的 import 路径从 "meshtastic_mqtt_server/<x>" 重写为 "meshtastic_mqtt_server/internal/<x>"。 变更 - git mv 12 个顶层目录进 internal/,无函数体改动。 - 全工程 sed 把 import path 加上 internal/ 前缀,包括 main.go、 internal/bot/bot_service.go、internal/store/bot_store.go 中对 mqtpp 的引用,以及 ai 子系统内部 agents/agenttool/autoreply/conversation/ llm/toolmanager/toolrouter 之间的相互引用。 验证 - go build ./... 通过;go test ./... 全部包通过。 - AI 自动回复链路(main → ai.NewService → autoreply.Service → botSender) 保持不变,仅 import 路径调整。 - 根目录最终只剩 main.go / main_test.go / internal/ 加 go.mod / go.sum 与数据资源目录(dist、doc、firmware、py、win、meshmap_frontend)。 Co-Authored-By: Claude <noreply@anthropic.com>
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
package autoreply
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
// BotServiceAdapter adapts the bot service to the BotSender interface
|
|
type BotServiceAdapter struct {
|
|
sendDirectTextFn func(ctx context.Context, botID uint64, toNodeNum int64, text string) error
|
|
sendChannelTextFn func(ctx context.Context, botID uint64, channelID string, text string) error
|
|
}
|
|
|
|
// NewBotServiceAdapter creates a new bot service adapter
|
|
func NewBotServiceAdapter(
|
|
sendDirectTextFn func(ctx context.Context, botID uint64, toNodeNum int64, text string) error,
|
|
sendChannelTextFn func(ctx context.Context, botID uint64, channelID string, text string) error,
|
|
) *BotServiceAdapter {
|
|
return &BotServiceAdapter{
|
|
sendDirectTextFn: sendDirectTextFn,
|
|
sendChannelTextFn: sendChannelTextFn,
|
|
}
|
|
}
|
|
|
|
// SendDirectText sends a direct/private message to a specific node
|
|
func (a *BotServiceAdapter) SendDirectText(ctx context.Context, botID uint64, toNodeNum int64, text string) error {
|
|
if a.sendDirectTextFn == nil {
|
|
return fmt.Errorf("send direct text function is nil")
|
|
}
|
|
return a.sendDirectTextFn(ctx, botID, toNodeNum, text)
|
|
}
|
|
|
|
// SendChannelText sends a channel message to a specific channel
|
|
func (a *BotServiceAdapter) SendChannelText(ctx context.Context, botID uint64, channelID string, text string) error {
|
|
if a.sendChannelTextFn == nil {
|
|
return fmt.Errorf("send channel text function is nil")
|
|
}
|
|
return a.sendChannelTextFn(ctx, botID, channelID, text)
|
|
}
|