Golang聊天室机器人分三层:WebSocket/TCP收消息、关键词规则判意图、自动构造回复发回;用goroutine+channel管理连接与广播,辅以限速、日志、退出指令等实用细节。
用 Golang 开发一个能自动回复消息的简易聊天室机器人,核心不在于堆功能,而在于理清“谁来收、谁来判、谁来发”这三层逻辑。它不需要大模型或训练,靠结构化规则 + 轻量 API 就能跑起来,适合快速验证或嵌入内部工具。
WebSocket 更贴近真实场景,支持浏览器直连、消息实时双向、断线重连友好;TCP 则更底层、适合学习并发模型或内网轻量服务。
初期不用接入大模型,用字符串匹配 + 简单关键词提取就足够覆盖 80% 常见问题。例如:
time.Now().Format("2006-01-02 15:04:05") 拼字符串返回避免正则滥用,优先用 strings.Contains、strings.HasPrefix 和 strings.Fields 切分处理,响应更快、调试更直观。
每个客户端连接启动两个 goroutine:一个读、一个写。中间靠一个全局 broadcast channel 中转消息,由单独的广播 goroutine 统一分发。
WriteMessage
register chan *Client),避免 map 并发写 panic
验更顺上线前补几个小点,能明显降低维护成本:
log.Printf("[auto] %s → %s", user, reply),方便排查误触发time.AfterFunc 或带缓冲的 channel 实现速率控制conn.Close() 并清理状态SetPingHandler 响应