添加下一首功能

This commit is contained in:
liuwei
2025-06-03 13:45:24 +08:00
parent 07ad30047e
commit d6d197bdf7

View File

@@ -180,13 +180,17 @@ class GuessSongPlugin(MessagePluginInterface):
if self.redis_db:
current_game = self.redis_db.get_game_session(session_id)
# 检查是否是"下一首"命令
if content == "下一首" and current_game and current_game.get("status") == "playing":
return await self._next_song(bot, session_id, sender)
# 如果游戏进行中,且有内容,则视为答案
if current_game and current_game.get("status") == "playing":
if content: # 有内容,视为答案
return await self._check_answer(message)
else: # 没有内容,提示已有游戏在进行中
await bot.send_text_message(session_id,
f"⚠️ 当前已有猜歌游戏在进行中,请直接回复 [猜歌名 歌名] 进行猜测", sender)
f"⚠️ 当前已有猜歌游戏在进行中,请直接回复 [猜歌名 歌名] 进行猜测\n或回复 [猜歌名 下一首] 跳过当前歌曲", sender)
return True, "已有游戏进行中"
# 否则开始新游戏(可以指定歌手或随机)
@@ -219,7 +223,7 @@ class GuessSongPlugin(MessagePluginInterface):
# 发送游戏开始消息
await bot.send_text_message(session_id,
f"🎵 猜歌名游戏开始!\n请听10秒钟歌曲片段然后回复[猜歌名 歌名]来猜测歌曲名称。\n歌手: {song_info.get('singer_name', '未知')}",
f"🎵 猜歌名游戏开始!\n请听10秒钟歌曲片段然后回复[猜歌名 歌名]来猜测歌曲名称。\n回复[猜歌名 下一首]可跳过当前歌曲。\n歌手: {song_info.get('singer_name', '未知')}",
sender)
# 发送10秒音频片段
@@ -466,3 +470,35 @@ class GuessSongPlugin(MessagePluginInterface):
except Exception as e:
self.LOG.error(f"发送音乐消息出错: {e}")
return False
async def _next_song(self, bot: WechatAPIClient, session_id: str, sender: str) -> Tuple[bool, str]:
"""跳过当前歌曲,播放下一首"""
try:
# 获取当前游戏数据
current_game = None
if self.redis_db:
current_game = self.redis_db.get_game_session(session_id)
if not current_game or current_game.get("status") != "playing":
await bot.send_text_message(session_id, f"⚠️ 当前没有进行中的猜歌游戏", sender)
return False, "没有进行中的游戏"
# 显示当前歌曲答案
correct_answer = current_game.get("song_name", "")
singer_name = current_game.get("singer_name", "")
await bot.send_text_message(session_id, f"⏭️ 已跳过当前歌曲\n歌曲:{correct_answer}\n歌手:{singer_name}", sender)
# 发送完整音乐
await self._send_music_message(bot, current_game, session_id)
# 删除当前游戏会话
if self.redis_db:
self.redis_db.delete_game_session(session_id)
# 开始新游戏
return await self._start_new_game(bot, session_id, sender, None)
except Exception as e:
self.LOG.error(f"跳过当前歌曲出错: {e}")
await bot.send_text_message(session_id, f"❌跳过当前歌曲出错,请稍后重试", sender)
return False, f"处理出错: {e}"