Skip to content

Commit 938e3b5

Browse files
committed
role: add tags for role
1 parent 5fe8d9a commit 938e3b5

File tree

3 files changed

+442
-212
lines changed

3 files changed

+442
-212
lines changed

channel/wechatmp/wechatmp_channel.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,14 @@ def POST(self):
182182
logger.debug("[wechatmp] query3 {}".format(cache_key))
183183
channel_instance.query3[cache_key] = True
184184
cnt = 0
185-
while cache[0] == 0 and cnt < 45:
185+
while cache[0] == 0 and cnt < 40:
186186
cnt = cnt + 1
187187
time.sleep(0.1)
188188
cache = channel_instance.cache_dict.get(cache_key)
189-
if cnt == 45:
189+
if cnt == 40:
190190
# Have waiting for 3x5 seconds
191191
# return timeout message
192-
reply_text = "【正在响应中,回复任意文字尝试获取回复】"
192+
reply_text = "【正在思考中,回复任意文字尝试获取回复】"
193193
logger.info("[wechatmp] Three queries has finished For {}: {}".format(from_user, message_id))
194194
replyPost = reply.TextMsg(from_user, to_user, reply_text).send()
195195
return replyPost

plugins/role/role.py

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,20 @@ def __init__(self):
3939
try:
4040
with open(config_path, "r", encoding="utf-8") as f:
4141
config = json.load(f)
42-
self.roles = {role["title"].lower(): role for role in config["roles"]}
42+
self.tags = { tag:(desc,[]) for tag,desc in config["tags"].items()}
43+
self.roles = {}
44+
for role in config["roles"]:
45+
self.roles[role["title"].lower()] = role
46+
for tag in role["tags"]:
47+
if tag not in self.tags:
48+
logger.warning(f"[Role] unknown tag {tag} ")
49+
self.tags[tag] = (tag, [])
50+
self.tags[tag][1].append(role)
51+
for tag in list(self.tags.keys()):
52+
if len(self.tags[tag][1]) == 0:
53+
logger.debug(f"[Role] no role found for tag {tag} ")
54+
del self.tags[tag]
55+
4356
if len(self.roles) == 0:
4457
raise Exception("no role found")
4558
self.handlers[Event.ON_HANDLE_CONTEXT] = self.on_handle_context
@@ -100,6 +113,32 @@ def on_handle_context(self, e_context: EventContext):
100113
desckey = "description"
101114
elif clist[0] == f"{trigger_prefix}设定扮演":
102115
customize = True
116+
elif clist[0] == f"{trigger_prefix}角色类型":
117+
if len(clist) >1:
118+
tag = clist[1].strip()
119+
help_text = "角色列表:\n"
120+
for key,value in self.tags.items():
121+
if value[0] == tag:
122+
tag = key
123+
break
124+
if tag == "所有":
125+
for role in self.roles.values():
126+
help_text += f"{role['title']}: {role['remark']}\n"
127+
elif tag in self.tags:
128+
for role in self.tags[tag][1]:
129+
help_text += f"{role['title']}: {role['remark']}\n"
130+
else:
131+
help_text = f"未知角色类型。\n"
132+
help_text += "目前的角色类型有: \n"
133+
help_text += ",".join([self.tags[tag][0] for tag in self.tags])+"\n"
134+
else:
135+
help_text = f"请输入角色类型。\n"
136+
help_text += "目前的角色类型有: \n"
137+
help_text += ",".join([self.tags[tag][0] for tag in self.tags])+"\n"
138+
reply = Reply(ReplyType.INFO, help_text)
139+
e_context['reply'] = reply
140+
e_context.action = EventAction.BREAK_PASS
141+
return
103142
elif sessionid not in self.roleplays:
104143
return
105144
logger.debug("[Role] on_handle_context. content: %s" % content)
@@ -139,8 +178,10 @@ def get_help_text(self, verbose=False, **kwargs):
139178
help_text = f"使用方法:\n{trigger_prefix}角色"+" 预设角色名: 设定角色为{预设角色名}。\n"+f"{trigger_prefix}role"+" 预设角色名: 同上,但使用英文设定。\n"
140179
help_text += f"{trigger_prefix}设定扮演"+" 角色设定: 设定自定义角色人设为{角色设定}。\n"
141180
help_text += f"{trigger_prefix}停止扮演: 清除设定的角色。\n"
142-
help_text += "\n目前可用的预设角色名列表: \n"
143-
for role in self.roles:
144-
help_text += f"{role}: {self.roles[role]['remark']}\n"
145-
help_text += f"\n命令例子: '{trigger_prefix}角色 写作助理'"
181+
help_text += f"{trigger_prefix}角色类型"+" 角色类型: 查看某类{角色类型}的所有预设角色,为所有时输出所有预设角色。\n"
182+
help_text += "\n目前的角色类型有: \n"
183+
help_text += ",".join([self.tags[tag][0] for tag in self.tags])+"。\n"
184+
help_text += f"\n命令例子: \n{trigger_prefix}角色 写作助理\n"
185+
help_text += f"{trigger_prefix}角色类型 所有\n"
186+
help_text += f"{trigger_prefix}停止扮演\n"
146187
return help_text

0 commit comments

Comments
 (0)