diff --git a/plugins/douyu/main.py b/plugins/douyu/main.py index 200aa61..6106ee7 100644 --- a/plugins/douyu/main.py +++ b/plugins/douyu/main.py @@ -143,10 +143,8 @@ class DouyuPlugin(MessagePluginInterface): content = str(message.get("content", "")).strip() if not content: return False - for cmd in self._commands: - if content.startswith(cmd): - return True - return False + first_token = content.split()[0] + return first_token in self._commands @plugin_stats_decorator(plugin_name="斗鱼直播") async def process_message(self, message: Dict[str, Any]) -> Tuple[bool, Optional[str]]: @@ -157,7 +155,16 @@ class DouyuPlugin(MessagePluginInterface): self.bot: WechatAPIClient = message.get("bot") if roomid and gbm.get_group_permission(roomid, self.feature) == PermissionStatus.DISABLED: return False, "没有权限" - if content.startswith("斗鱼订阅"): + first_token = content.split()[0] + if content == "斗鱼订阅列表": + rooms = self.redis_manager.list_group_rooms(roomid or sender) + if not rooms: + await self.bot.send_text_message(roomid or sender, "暂无订阅", sender) + return True, "暂无订阅" + text = "当前订阅的斗鱼房间:\n" + "\n".join(rooms) + await self.bot.send_text_message(roomid or sender, text, sender) + return True, "列表已发送" + if first_token == "斗鱼订阅": parts = content.split() if len(parts) < 2: await self.bot.send_text_message(roomid or sender, "请提供房间号,例如:订阅斗鱼 7718843", sender) @@ -166,7 +173,7 @@ class DouyuPlugin(MessagePluginInterface): ok = self.redis_manager.add_group_room(roomid or sender, room_id) await self.bot.send_text_message(roomid or sender, f"✅ 已订阅斗鱼房间 {room_id}", sender) return True, "订阅成功" if ok else "订阅失败" - if content.startswith("取消斗鱼订阅"): + if first_token == "取消斗鱼订阅": parts = content.split() if len(parts) < 2: await self.bot.send_text_message(roomid or sender, "请提供房间号,例如:取消订阅斗鱼 7718843", sender) @@ -175,14 +182,6 @@ class DouyuPlugin(MessagePluginInterface): ok = self.redis_manager.remove_group_room(roomid or sender, room_id) await self.bot.send_text_message(roomid or sender, f"✅ 已取消订阅斗鱼房间 {room_id}", sender) return True, "取消成功" if ok else "取消失败" - if content.startswith("斗鱼订阅列表"): - rooms = self.redis_manager.list_group_rooms(roomid or sender) - if not rooms: - await self.bot.send_text_message(roomid or sender, "暂无订阅", sender) - return True, "暂无订阅" - text = "当前订阅的斗鱼房间:\n" + "\n".join(rooms) - await self.bot.send_text_message(roomid or sender, text, sender) - return True, "列表已发送" return False, None async def _scheduled_check_job(self):