Auto-search user info with services ID

This commit is contained in:
Dita Aji Pratama 2026-07-07 17:17:50 +07:00
parent befe3dbbdc
commit 27b64a3a54
2 changed files with 53 additions and 2 deletions

View File

@ -9,6 +9,7 @@ import config
from services.session_manager import SessionManager from services.session_manager import SessionManager
from lib.agent_loop import run_agent_loop from lib.agent_loop import run_agent_loop
from lib import personality from lib import personality
from lib import ragroleplay
from tools.roleplayer import _name_mentioned from tools.roleplayer import _name_mentioned
@ -115,10 +116,12 @@ class TelegramClient:
if not text: if not text:
return return
msg_id = update.message.message_id msg_id = update.message.message_id
user = update.effective_user
tg_username = user.username if user else None
print(f'[{_ts()}] Telegram DM from {chat_id}: {text[:60]}', flush=True) print(f'[{_ts()}] Telegram DM from {chat_id}: {text[:60]}', flush=True)
threading.Thread( threading.Thread(
target=self._process_message, target=self._process_message,
args=(chat_id, text, 'private', '', msg_id), args=(chat_id, text, 'private', '', msg_id, tg_username),
daemon=True daemon=True
).start() ).start()
@ -174,7 +177,7 @@ class TelegramClient:
daemon=True daemon=True
).start() ).start()
def _process_message(self, chat_id, body, chat_type, sender_name, reply_to_msg_id): def _process_message(self, chat_id, body, chat_type, sender_name, reply_to_msg_id, tg_username=None):
session = self._session_mgr.get_or_create( session = self._session_mgr.get_or_create(
str(chat_id), self._build_system_prompt( str(chat_id), self._build_system_prompt(
tools_definition=self._tools_def, tools_definition=self._tools_def,
@ -190,6 +193,31 @@ class TelegramClient:
self._schedule_send(chat_id, 'Memulai sesi baru. Ada yang bisa dibantu?', reply_to_msg_id) self._schedule_send(chat_id, 'Memulai sesi baru. Ada yang bisa dibantu?', reply_to_msg_id)
return return
if self._skill == 'roleplayer' and chat_type == 'private':
try:
results = ragroleplay.users_filter(config.ragroleplay_db_path, unique_id=str(chat_id))
if results:
u = results[0]
context = (
f'[User Context]\n'
f'Nama: {u["fullname"]} ({u["nickname"]})\n'
f'Alias: {u.get("alias", "-") or "-"}\n'
f'Persona: {u.get("persona", "-") or "-"}\n'
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
f'[/User Context]'
)
session.add_message('system', context)
else:
tg_info = f'ID: {chat_id}'
if tg_username:
tg_info += f', @{tg_username}'
session.add_message('system',
f'[User Context: Pengguna baru — belum ada di database]\n'
f'[Platform: Telegram ({tg_info})]')
except Exception:
pass
session.add_message('user', body) session.add_message('user', body)
is_roleplay = self._skill == 'roleplayer' is_roleplay = self._skill == 'roleplayer'

View File

@ -11,6 +11,7 @@ from lib.agent_loop import run_agent_loop
import config import config
from tools.roleplayer import should_respond from tools.roleplayer import should_respond
from lib import personality from lib import personality
from lib import ragroleplay
# Anti-ban: delay constants for MUC rejoin behavior # Anti-ban: delay constants for MUC rejoin behavior
MUC_REJOIN_INITIAL_DELAY = 5.0 # detik, delay awal sebelum rejoin MUC_REJOIN_INITIAL_DELAY = 5.0 # detik, delay awal sebelum rejoin
@ -296,6 +297,28 @@ class XMPPClient(ClientXMPP):
self._schedule_send(jid, 'Memulai sesi baru. Ada yang bisa di bantu?') self._schedule_send(jid, 'Memulai sesi baru. Ada yang bisa di bantu?')
return return
if self._skill == 'roleplayer':
try:
results = ragroleplay.users_filter(config.ragroleplay_db_path, unique_id=jid)
if results:
u = results[0]
context = (
f'[User Context]\n'
f'Nama: {u["fullname"]} ({u["nickname"]})\n'
f'Alias: {u.get("alias", "-") or "-"}\n'
f'Persona: {u.get("persona", "-") or "-"}\n'
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
f'[/User Context]'
)
session.add_message('system', context)
else:
session.add_message('system',
f'[User Context: Pengguna baru — belum ada di database]\n'
f'[Platform: XMPP ({jid})]')
except Exception:
pass
session.add_message('user', body) session.add_message('user', body)
is_roleplay = self._skill == 'roleplayer' is_roleplay = self._skill == 'roleplayer'