mirror of
https://github.com/Mrs4s/go-cqhttp.git
synced 2025-05-04 19:17:37 +08:00
82 lines
3.6 KiB
Go
82 lines
3.6 KiB
Go
// Package selfdiagnosis 自我诊断相关
|
||
package selfdiagnosis
|
||
|
||
import (
|
||
"github.com/Mrs4s/MiraiGo/client"
|
||
log "github.com/sirupsen/logrus"
|
||
)
|
||
|
||
// NetworkDiagnosis 诊断网络状态并输出结果
|
||
func NetworkDiagnosis(c *client.QQClient) {
|
||
log.Infof("开始诊断网络情况")
|
||
qualityInfo := c.ConnectionQualityTest()
|
||
log.Debugf("聊天服务器连接延迟: %vms", qualityInfo.ChatServerLatency)
|
||
log.Debugf("聊天服务器丢包率: %v%%", qualityInfo.ChatServerPacketLoss*10)
|
||
log.Debugf("长消息服务器连接延迟: %vms", qualityInfo.LongMessageServerLatency)
|
||
log.Debugf("长消息服务器响应延迟: %vms", qualityInfo.LongMessageServerResponseLatency)
|
||
log.Debugf("媒体服务器连接延迟: %vms", qualityInfo.SrvServerLatency)
|
||
log.Debugf("媒体服务器丢包率: %v%%", qualityInfo.SrvServerPacketLoss*10)
|
||
|
||
const (
|
||
chatServerErrorMessage = "可能出现消息丢失/延迟或频繁掉线等情况, 请检查本地网络状态."
|
||
longMessageServerErrorMessage = "可能导致无法接收/发送长消息的情况, 请检查本地网络状态."
|
||
mediaServerErrorMessage = "可能导致无法上传/下载媒体文件, 无法上传群共享, 无法发送消息等情况, 请检查本地网络状态."
|
||
)
|
||
|
||
if qualityInfo.ChatServerLatency > 1000 {
|
||
if qualityInfo.ChatServerLatency == 9999 {
|
||
log.Errorf("错误: 聊天服务器延迟测试失败, %v", chatServerErrorMessage)
|
||
} else {
|
||
log.Warnf("警告: 聊天服务器延迟为 %vms,大于 1000ms, %v", qualityInfo.ChatServerLatency, chatServerErrorMessage)
|
||
}
|
||
}
|
||
|
||
if qualityInfo.ChatServerPacketLoss > 0 {
|
||
log.Warnf("警告: 本地连接聊天服务器丢包率为 %v%%, %v", qualityInfo.ChatServerPacketLoss*10, chatServerErrorMessage)
|
||
}
|
||
|
||
if qualityInfo.LongMessageServerLatency > 1000 {
|
||
if qualityInfo.LongMessageServerLatency == 9999 {
|
||
log.Errorf("错误: 长消息服务器延迟测试失败, %v 如果您使用的腾讯云服务器, 请修改DNS到114.114.114.114", longMessageServerErrorMessage)
|
||
} else {
|
||
log.Warnf("警告: 长消息延迟为 %vms, 大于 1000ms, %v", qualityInfo.LongMessageServerLatency, longMessageServerErrorMessage)
|
||
}
|
||
}
|
||
|
||
if qualityInfo.LongMessageServerResponseLatency > 2000 {
|
||
if qualityInfo.LongMessageServerResponseLatency == 9999 {
|
||
log.Errorf("错误: 长消息服务器响应延迟测试失败, %v 如果您使用的腾讯云服务器, 请修改DNS到114.114.114.114", longMessageServerErrorMessage)
|
||
} else {
|
||
log.Warnf("警告: 长消息响应延迟为 %vms, 大于 1000ms, %v", qualityInfo.LongMessageServerResponseLatency, longMessageServerErrorMessage)
|
||
}
|
||
}
|
||
|
||
if qualityInfo.SrvServerLatency > 1000 {
|
||
if qualityInfo.SrvServerPacketLoss == 9999 {
|
||
log.Errorf("错误: 媒体服务器延迟测试失败, %v", mediaServerErrorMessage)
|
||
} else {
|
||
log.Warnf("警告: 媒体服务器延迟为 %vms,大于 1000ms, %v", qualityInfo.SrvServerLatency, mediaServerErrorMessage)
|
||
}
|
||
}
|
||
|
||
if qualityInfo.SrvServerPacketLoss > 0 {
|
||
log.Warnf("警告: 本地连接媒体服务器丢包率为 %v%%, %v", qualityInfo.SrvServerPacketLoss*10, mediaServerErrorMessage)
|
||
}
|
||
|
||
if qualityInfo.ChatServerLatency > 1000 || qualityInfo.ChatServerPacketLoss > 0 || qualityInfo.LongMessageServerLatency > 1000 || qualityInfo.SrvServerLatency > 1000 || qualityInfo.SrvServerPacketLoss > 0 {
|
||
log.Infof("网络诊断完成. 发现问题, 请检查日志.")
|
||
} else {
|
||
log.Infof("网络诊断完成. 未发现问题")
|
||
}
|
||
}
|
||
|
||
// DNSDiagnosis 诊断DNS状态并输出结果
|
||
func DNSDiagnosis() {
|
||
// todo
|
||
}
|
||
|
||
// EnvironmentDiagnosis 诊断本地环境状态并输出结果
|
||
func EnvironmentDiagnosis() {
|
||
// todo
|
||
}
|