Add user_template to wrap user messages with sender context (name, id, username)
Configure via ai.prompt.user_template in config.json using {text}, {full_name},
{user_id}, {first_name}, {last_name}, {username} placeholders. Applied to both
history user messages and the current prompt. No-op when unset.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -289,6 +289,27 @@ class AIService:
|
||||
]
|
||||
).strip()
|
||||
|
||||
def _render_user_message(self, text: str, user: Any) -> str:
|
||||
template = self.config.prompt.user_template
|
||||
if not template or not text:
|
||||
return text
|
||||
first_name = str(getattr(user, "first_name", "") or "")
|
||||
last_name = str(getattr(user, "last_name", "") or "")
|
||||
username = str(getattr(user, "username", "") or "")
|
||||
user_id = str(getattr(user, "id", "") or "")
|
||||
full_name = f"{first_name} {last_name}".strip() or username or user_id
|
||||
try:
|
||||
return template.format_map({
|
||||
"text": text,
|
||||
"user_id": user_id,
|
||||
"first_name": first_name,
|
||||
"last_name": last_name,
|
||||
"username": username,
|
||||
"full_name": full_name,
|
||||
})
|
||||
except (KeyError, ValueError):
|
||||
return text
|
||||
|
||||
async def build_messages(
|
||||
self,
|
||||
ctx: "CommandContext",
|
||||
@@ -303,8 +324,13 @@ class AIService:
|
||||
for item in history:
|
||||
if not item.text:
|
||||
continue
|
||||
messages.append({"role": item.role, "content": item.text})
|
||||
messages.append({"role": "user", "content": prompt})
|
||||
if item.role == "user":
|
||||
sender = getattr(item.message, "from_user", None)
|
||||
content = self._render_user_message(item.text, sender)
|
||||
else:
|
||||
content = item.text
|
||||
messages.append({"role": item.role, "content": content})
|
||||
messages.append({"role": "user", "content": self._render_user_message(prompt, ctx.actor)})
|
||||
return messages
|
||||
|
||||
async def _fetch_mcp_tool_schemas(self) -> list[dict]:
|
||||
|
||||
Reference in New Issue
Block a user