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 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'
|
||||||
|
|
||||||
|
|||||||
@ -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'
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user