diff --git a/starbot/core/sender.py b/starbot/core/sender.py index 8ae6fc5..a0fb0ca 100644 --- a/starbot/core/sender.py +++ b/starbot/core/sender.py @@ -40,6 +40,9 @@ class Bot(BaseModel): __at_all_limited: Optional[int] = PrivateAttr() """@全体成员次数用尽时所在日期""" + __banned: Optional[bool] = PrivateAttr() + """当前是否被风控""" + __queue: Optional[List[Message]] = PrivateAttr() """消息补发队列""" @@ -56,6 +59,7 @@ class Bot(BaseModel): log_config=LogConfig(log_level="DEBUG") ) self.__at_all_limited = time.localtime(time.time() - 86400).tm_yday + self.__banned = False self.__queue = [] # 注入 Bot 实例引用 @@ -98,6 +102,12 @@ class Bot(BaseModel): exception = AtAllLimitedException() self.__at_all_limited = time.localtime(time.time()).tm_yday continue + elif "LIMITED_MESSAGING" in str(ex): + logger.error(f"受风控影响, 发送群消息失败, 需人工通过验证码验证, 群号: {msg.id}") + if config.get("MASTER_QQ"): + await self.__bot.send_friend_message(config.get("MASTER_QQ"), config.get("BAN_NOTICE")) + else: + logger.warning("未设置主人 QQ, 无法发送提醒消息, 可使用 config.set(\"MASTER_QQ\", QQ号) 进行设置") else: logger.exception("消息推送模块异常", ex) continue diff --git a/starbot/utils/config.py b/starbot/utils/config.py index aba2fa1..e9f7e77 100644 --- a/starbot/utils/config.py +++ b/starbot/utils/config.py @@ -110,6 +110,8 @@ SIMPLE_CONFIG = { # 每个群动态 @ 我命令人数上限,单次 @ 人数过多容易被风控,不推荐修改 "COMMAND_DYNAMIC_AT_ME_LIMIT": 20, + # 被风控时,发送给主人 QQ 的提醒消息 + "BAN_NOTICE": "发送消息失败, 请手动通过验证码验证~", # 是否启用风控消息补发,暂未实现 "BAN_RESEND": False, # 风控发送失败消息滞留时间上限,消息因风控滞留超出此时长不会进行补发,0 为无限制,单位:秒,暂未实现 @@ -228,6 +230,8 @@ FULL_CONFIG = { # 每个群动态 @ 我命令人数上限,单次 @ 人数过多容易被风控,不推荐修改 "COMMAND_DYNAMIC_AT_ME_LIMIT": 20, + # 被风控时,发送给主人 QQ 的提醒消息 + "BAN_NOTICE": "发送消息失败, 请手动通过验证码验证~", # 是否启用风控消息补发,暂未实现 "BAN_RESEND": True, # 风控发送失败消息滞留时间上限,消息因风控滞留超出此时长不会进行补发,0 为无限制,单位:秒,暂未实现