def send_msg(self, event=None):
msg = self.input_text.get().strip()
if not msg:
return
self.input_text.set("")
self.append_msg("你", msg)
self.messages.append({"role": "user", "content": msg})
threading.Thread(target=self.do_ai, args=(msg,), daemon=True).start()
def do_ai(self, msg):
msg = msg.strip()
if "你有什么技能" in msg or "你会什么" in msg or "技能" in msg:
keyword = ""
if " " in msg:
keyword = msg.split(" ", 1)[-1].strip()
match_skills = []
for idx, skill in enumerate(SKILLS):
if not keyword or any(keyword in kw for kw in skill["keywords"]) or keyword in skill["name"]:
match_skills.append((idx + 1, skill["name"]))
if not match_skills:
self.append_msg("AI", f"❌ 没有找到包含【{keyword}】的技能")
return
res = f"✅ 找到 {len(match_skills)} 个技能(直接回复数字/名称即可执行):\n"
for num, name in match_skills:
res += f"{num}、{name}\n"
self.append_msg("AI", res)
return
if msg.isdigit():
num = int(msg)
if 1 <= num <= len(SKILLS):
try:
result = SKILLS[num-1]["action"]()
self.append_msg("AI", result)
except Exception as e:
self.append_msg("AI", f"❌ 执行失败:{str(e)}")
return
for idx, skill in enumerate(SKILLS):
if msg in skill["name"] or any(kw in msg for kw in skill["keywords"]):
try:
result = skill["action"]()
self.append_msg("AI", result)
except Exception as e:
self.append_msg("AI", f"❌ 执行失败:{str(e)}")
return