Add emoji support to responses in text and TUI modes
This commit is contained in:
parent
7e1c98a1aa
commit
08b4aece2b
43
assistant.py
43
assistant.py
@ -18,6 +18,24 @@ from openclaw_client import OpenClawClient
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
# Emoji mappings for different response types
|
||||||
|
EMOJIS = {
|
||||||
|
'greeting': '👋',
|
||||||
|
'music_play': '🎵',
|
||||||
|
'music_pause': '⏸️ ',
|
||||||
|
'music_resume': '▶️ ',
|
||||||
|
'music_stop': '⏹️ ',
|
||||||
|
'music_next': '⏭️ ',
|
||||||
|
'music_volume': '🔊',
|
||||||
|
'time': '🕐',
|
||||||
|
'question': '🤔',
|
||||||
|
'answer': '💬',
|
||||||
|
'error': '⚠️ ',
|
||||||
|
'success': '✅',
|
||||||
|
'thinking': '💭',
|
||||||
|
'openclaw': '🏭',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class VoiceAssistant:
|
class VoiceAssistant:
|
||||||
"""
|
"""
|
||||||
@ -117,28 +135,28 @@ class VoiceAssistant:
|
|||||||
if self.music_player.music_library:
|
if self.music_player.music_library:
|
||||||
first_track = list(self.music_player.music_library.values())[0]
|
first_track = list(self.music_player.music_library.values())[0]
|
||||||
self.music_player.play(first_track)
|
self.music_player.play(first_track)
|
||||||
return ("Playing music",
|
return (f"{EMOJIS['music_play']} Playing music",
|
||||||
"en" if language == "en" else "zh")
|
"en" if language == "en" else "zh")
|
||||||
|
|
||||||
# Pause
|
# Pause
|
||||||
elif "pause" in text or "暂停" in text:
|
elif "pause" in text or "暂停" in text:
|
||||||
self.music_player.pause()
|
self.music_player.pause()
|
||||||
return ("Paused", "en" if language == "en" else "zh")
|
return (f"{EMOJIS['music_pause']} Paused", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
# Resume
|
# Resume
|
||||||
elif "resume" in text or "继续" in text:
|
elif "resume" in text or "继续" in text:
|
||||||
self.music_player.resume()
|
self.music_player.resume()
|
||||||
return ("Resumed", "en" if language == "en" else "zh")
|
return (f"{EMOJIS['music_resume']} Resumed", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
# Stop
|
# Stop
|
||||||
elif "stop" in text or "停止" in text:
|
elif "stop" in text or "停止" in text:
|
||||||
self.music_player.stop()
|
self.music_player.stop()
|
||||||
return ("Stopped", "en" if language == "en" else "zh")
|
return (f"{EMOJIS['music_stop']} Stopped", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
# Next
|
# Next
|
||||||
elif "next" in text or "下一首" in text:
|
elif "next" in text or "下一首" in text:
|
||||||
self.music_player.next()
|
self.music_player.next()
|
||||||
return ("Next track", "en" if language == "en" else "zh")
|
return (f"{EMOJIS['music_next']} Next track", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
# Volume
|
# Volume
|
||||||
elif "volume" in text or "音量" in text:
|
elif "volume" in text or "音量" in text:
|
||||||
@ -146,7 +164,7 @@ class VoiceAssistant:
|
|||||||
self.music_player.set_volume(self.music_player.volume + 0.1)
|
self.music_player.set_volume(self.music_player.volume + 0.1)
|
||||||
elif "down" in text or "小" in text:
|
elif "down" in text or "小" in text:
|
||||||
self.music_player.set_volume(self.music_player.volume - 0.1)
|
self.music_player.set_volume(self.music_player.volume - 0.1)
|
||||||
return ("Volume adjusted", "en" if language == "en" else "zh")
|
return (f"{EMOJIS['music_volume']} Volume adjusted", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
return ("Command not recognized", "en" if language == "en" else "zh")
|
return ("Command not recognized", "en" if language == "en" else "zh")
|
||||||
|
|
||||||
@ -166,10 +184,11 @@ class VoiceAssistant:
|
|||||||
def _get_time(self, language: str) -> Tuple[str, str]:
|
def _get_time(self, language: str) -> Tuple[str, str]:
|
||||||
"""Get current time response."""
|
"""Get current time response."""
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
|
emoji = EMOJIS['time']
|
||||||
if language == "zh":
|
if language == "zh":
|
||||||
return (f"现在时间是 {now.strftime('%H点%M分')}", "zh")
|
return (f"{emoji} 现在时间是 {now.strftime('%H点%M分')}", "zh")
|
||||||
else:
|
else:
|
||||||
return (f"The current time is {now.strftime('%I:%M %p')}", "en")
|
return (f"{emoji} The current time is {now.strftime('%I:%M %p')}", "en")
|
||||||
|
|
||||||
def _get_greeting(self, language: str) -> Tuple[str, str]:
|
def _get_greeting(self, language: str) -> Tuple[str, str]:
|
||||||
"""Get greeting response."""
|
"""Get greeting response."""
|
||||||
@ -193,9 +212,9 @@ class VoiceAssistant:
|
|||||||
"""Send question to OpenClaw and get response."""
|
"""Send question to OpenClaw and get response."""
|
||||||
if not self.openclaw_client.enabled:
|
if not self.openclaw_client.enabled:
|
||||||
if language == "zh":
|
if language == "zh":
|
||||||
return ("OpenClaw 未启用", "zh")
|
return (f"{EMOJIS['openclaw']} OpenClaw 未启用", "zh")
|
||||||
else:
|
else:
|
||||||
return ("OpenClaw is not enabled", "en")
|
return (f"{EMOJIS['openclaw']} OpenClaw is not enabled", "en")
|
||||||
|
|
||||||
# Add context about language preference
|
# Add context about language preference
|
||||||
context = {"preferred_language": language}
|
context = {"preferred_language": language}
|
||||||
@ -204,9 +223,9 @@ class VoiceAssistant:
|
|||||||
|
|
||||||
if "error" in response:
|
if "error" in response:
|
||||||
if language == "zh":
|
if language == "zh":
|
||||||
return ("抱歉,暂时无法回答", "zh")
|
return (f"{EMOJIS['error']} 抱歉,暂时无法回答", "zh")
|
||||||
else:
|
else:
|
||||||
return ("Sorry, I can't answer that right now", "en")
|
return (f"{EMOJIS['error']} Sorry, I can't answer that right now", "en")
|
||||||
|
|
||||||
# Extract response text
|
# Extract response text
|
||||||
response_text = response.get("response", str(response))
|
response_text = response.get("response", str(response))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user