feat: move user aliases from config to DB with /bcs-alias command
Aliases now stored in UserState table instead of config.yaml. Adds Aliases column (NVARCHAR 500), loads on startup, persists via flush. New /bcs-alias slash command (view/set/clear) for managing nicknames. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,8 @@ class UserDrama:
|
||||
last_coherence_alert_time: float = 0.0
|
||||
# Per-user LLM notes
|
||||
notes: str = ""
|
||||
# Known aliases/nicknames
|
||||
aliases: list[str] = field(default_factory=list)
|
||||
|
||||
|
||||
class DramaTracker:
|
||||
@@ -217,6 +219,16 @@ class DramaTracker:
|
||||
def clear_user_notes(self, user_id: int) -> None:
|
||||
self.get_user(user_id).notes = ""
|
||||
|
||||
def get_user_aliases(self, user_id: int) -> list[str]:
|
||||
return self.get_user(user_id).aliases
|
||||
|
||||
def set_user_aliases(self, user_id: int, aliases: list[str]) -> None:
|
||||
self.get_user(user_id).aliases = aliases
|
||||
|
||||
def get_all_aliases(self) -> dict[int, list[str]]:
|
||||
"""Return {user_id: [aliases]} for all users that have aliases set."""
|
||||
return {uid: user.aliases for uid, user in self._users.items() if user.aliases}
|
||||
|
||||
def reset_off_topic(self, user_id: int) -> None:
|
||||
user = self.get_user(user_id)
|
||||
user.off_topic_count = 0
|
||||
@@ -298,6 +310,8 @@ class DramaTracker:
|
||||
user.offense_count = 0
|
||||
user.warned_since_reset = False
|
||||
user.last_offense_time = 0.0
|
||||
if state.get("aliases"):
|
||||
user.aliases = [a.strip() for a in state["aliases"].split(",") if a.strip()]
|
||||
count += 1
|
||||
return count
|
||||
|
||||
|
||||
Reference in New Issue
Block a user