botserver/docs/src/chapter-05/keyword-set-user.md

70 lines
2 KiB
Markdown
Raw Normal View History

# SET_USER Keyword
The **SET_USER** keyword defines the active user context for the current bot session.
It associates all subsequent actions, memory entries, and responses with a specific user identity.
---
## Syntax
```basic
SET_USER "user-id"
```
---
## Parameters
- `"user-id"` — A unique identifier (UUID or username) representing the user.
This value is used to link session data, memory, and logs to the correct user record.
---
## Description
`SET_USER` updates the bots internal session to reflect the specified user identity.
This is typically used after authentication or when switching between users in multi-user environments.
Once set, all commands such as `SET_CONTEXT`, `SET_BOT_MEMORY`, and `FIND` operate within the scope of that user.
If the user ID does not exist in the database, the system automatically creates a new user record.
The command ensures that the session token and memory cache are properly synchronized.
---
## Example
```basic
' Set the active user for the session
SET_USER "john_doe"
' Store personalized memory
SET_BOT_MEMORY "preferred_language" "English"
' Retrieve user-specific data
FIND "recent orders"
```
---
## Implementation Notes
- Implemented in Rust under `src/session/mod.rs` and `src/org/mod.rs`.
- The keyword interacts with the session manager to update the active user ID.
- It ensures that all subsequent operations are scoped to the correct user context.
- If Redis or database caching is enabled, the user ID is stored for persistence across sessions.
---
## Related Keywords
- [`SET_CONTEXT`](keyword-set-context.md) — Defines the operational context for the session.
- [`SET_BOT_MEMORY`](keyword-set-bot-memory.md) — Stores persistent data for the bot or user.
- [`GET_BOT_MEMORY`](keyword-get-bot-memory.md) — Retrieves stored memory entries.
---
## Summary
`SET_USER` is essential for maintaining user-specific state and personalization in GeneralBots.
It ensures that each session operates independently and securely under the correct user identity.