Auto-search user info with services ID
This commit is contained in:
parent
befe3dbbdc
commit
27b64a3a54
@ -9,6 +9,7 @@ import config
|
||||
from services.session_manager import SessionManager
|
||||
from lib.agent_loop import run_agent_loop
|
||||
from lib import personality
|
||||
from lib import ragroleplay
|
||||
from tools.roleplayer import _name_mentioned
|
||||
|
||||
|
||||
@ -115,10 +116,12 @@ class TelegramClient:
|
||||
if not text:
|
||||
return
|
||||
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)
|
||||
threading.Thread(
|
||||
target=self._process_message,
|
||||
args=(chat_id, text, 'private', '', msg_id),
|
||||
args=(chat_id, text, 'private', '', msg_id, tg_username),
|
||||
daemon=True
|
||||
).start()
|
||||
|
||||
@ -174,7 +177,7 @@ class TelegramClient:
|
||||
daemon=True
|
||||
).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(
|
||||
str(chat_id), self._build_system_prompt(
|
||||
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)
|
||||
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)
|
||||
is_roleplay = self._skill == 'roleplayer'
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ from lib.agent_loop import run_agent_loop
|
||||
import config
|
||||
from tools.roleplayer import should_respond
|
||||
from lib import personality
|
||||
from lib import ragroleplay
|
||||
|
||||
# Anti-ban: delay constants for MUC rejoin behavior
|
||||
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?')
|
||||
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)
|
||||
|
||||
is_roleplay = self._skill == 'roleplayer'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user