github.com/Mrs4s/go-cqhttp@v1.2.0/internal/selfdiagnosis/diagnoses.go (about) 1 // Package selfdiagnosis 自我诊断相关 2 package selfdiagnosis 3 4 import ( 5 "github.com/Mrs4s/MiraiGo/client" 6 log "github.com/sirupsen/logrus" 7 ) 8 9 // NetworkDiagnosis 诊断网络状态并输出结果 10 func NetworkDiagnosis(c *client.QQClient) { 11 log.Infof("开始诊断网络情况") 12 qualityInfo := c.ConnectionQualityTest() 13 log.Debugf("聊天服务器连接延迟: %vms", qualityInfo.ChatServerLatency) 14 log.Debugf("聊天服务器丢包率: %v%%", qualityInfo.ChatServerPacketLoss*10) 15 log.Debugf("长消息服务器连接延迟: %vms", qualityInfo.LongMessageServerLatency) 16 log.Debugf("长消息服务器响应延迟: %vms", qualityInfo.LongMessageServerResponseLatency) 17 log.Debugf("媒体服务器连接延迟: %vms", qualityInfo.SrvServerLatency) 18 log.Debugf("媒体服务器丢包率: %v%%", qualityInfo.SrvServerPacketLoss*10) 19 20 const ( 21 chatServerErrorMessage = "可能出现消息丢失/延迟或频繁掉线等情况, 请检查本地网络状态." 22 longMessageServerErrorMessage = "可能导致无法接收/发送长消息的情况, 请检查本地网络状态." 23 mediaServerErrorMessage = "可能导致无法上传/下载媒体文件, 无法上传群共享, 无法发送消息等情况, 请检查本地网络状态." 24 ) 25 26 if qualityInfo.ChatServerLatency > 1000 { 27 if qualityInfo.ChatServerLatency == 9999 { 28 log.Errorf("错误: 聊天服务器延迟测试失败, %v", chatServerErrorMessage) 29 } else { 30 log.Warnf("警告: 聊天服务器延迟为 %vms,大于 1000ms, %v", qualityInfo.ChatServerLatency, chatServerErrorMessage) 31 } 32 } 33 34 if qualityInfo.ChatServerPacketLoss > 0 { 35 log.Warnf("警告: 本地连接聊天服务器丢包率为 %v%%, %v", qualityInfo.ChatServerPacketLoss*10, chatServerErrorMessage) 36 } 37 38 if qualityInfo.LongMessageServerLatency > 1000 { 39 if qualityInfo.LongMessageServerLatency == 9999 { 40 log.Errorf("错误: 长消息服务器延迟测试失败, %v 如果您使用的腾讯云服务器, 请修改DNS到114.114.114.114", longMessageServerErrorMessage) 41 } else { 42 log.Warnf("警告: 长消息延迟为 %vms, 大于 1000ms, %v", qualityInfo.LongMessageServerLatency, longMessageServerErrorMessage) 43 } 44 } 45 46 if qualityInfo.LongMessageServerResponseLatency > 2000 { 47 if qualityInfo.LongMessageServerResponseLatency == 9999 { 48 log.Errorf("错误: 长消息服务器响应延迟测试失败, %v 如果您使用的腾讯云服务器, 请修改DNS到114.114.114.114", longMessageServerErrorMessage) 49 } else { 50 log.Warnf("警告: 长消息响应延迟为 %vms, 大于 1000ms, %v", qualityInfo.LongMessageServerResponseLatency, longMessageServerErrorMessage) 51 } 52 } 53 54 if qualityInfo.SrvServerLatency > 1000 { 55 if qualityInfo.SrvServerPacketLoss == 9999 { 56 log.Errorf("错误: 媒体服务器延迟测试失败, %v", mediaServerErrorMessage) 57 } else { 58 log.Warnf("警告: 媒体服务器延迟为 %vms,大于 1000ms, %v", qualityInfo.SrvServerLatency, mediaServerErrorMessage) 59 } 60 } 61 62 if qualityInfo.SrvServerPacketLoss > 0 { 63 log.Warnf("警告: 本地连接媒体服务器丢包率为 %v%%, %v", qualityInfo.SrvServerPacketLoss*10, mediaServerErrorMessage) 64 } 65 66 if qualityInfo.ChatServerLatency > 1000 || qualityInfo.ChatServerPacketLoss > 0 || qualityInfo.LongMessageServerLatency > 1000 || qualityInfo.SrvServerLatency > 1000 || qualityInfo.SrvServerPacketLoss > 0 { 67 log.Infof("网络诊断完成. 发现问题, 请检查日志.") 68 } else { 69 log.Infof("网络诊断完成. 未发现问题") 70 } 71 } 72 73 // DNSDiagnosis 诊断DNS状态并输出结果 74 func DNSDiagnosis() { 75 // todo 76 } 77 78 // EnvironmentDiagnosis 诊断本地环境状态并输出结果 79 func EnvironmentDiagnosis() { 80 // todo 81 }