diff --git a/coolq/bot.go b/coolq/bot.go index a853a24..94ef00c 100644 --- a/coolq/bot.go +++ b/coolq/bot.go @@ -408,9 +408,20 @@ func (bot *CQBot) formatGroupMessage(m *message.GroupMessage) MSG { gm["sender"].(MSG)["nickname"] = "匿名消息" gm["sub_type"] = "anonymous" } else { - mem := bot.Client.FindGroup(m.GroupCode).FindMember(m.Sender.Uin) + group := bot.Client.FindGroup(m.GroupCode) + mem := group.FindMember(m.Sender.Uin) if mem == nil{ - return Failed(100,"MEMBER_NOT_FOUND","群员不存在") + log.Warnf("获取 %v 成员信息失败,尝试刷新成员列表", m.Sender.Uin) + t, err := bot.Client.GetGroupMembers(group) + if err != nil { + log.Warnf("刷新群 %v 成员列表失败: %v", group.Uin, err) + return Failed(100, "GET_MEMBERS_API_ERROR", err.Error()) + } + group.Members = t + mem = group.FindMember(m.Sender.Uin) + if mem != nil{ + return Failed(100,"MEMBER_NOT_FOUND","群员不存在") + } } ms := gm["sender"].(MSG) ms["role"] = func() string {