latte bf01724b3e docs: Update README, .env.example, and .gitignore for Living AI
- Add Living AI features overview to README
- Document all Living AI configuration options
- Add Living AI command toggles documentation
- Add new Living AI commands (!relationship, !mood, etc.)
- Update project structure to include new services
- Add Living AI settings to .env.example
- Add command toggles to .env.example
- Update commands reference with Living AI commands
- Add database files to .gitignore
2026-01-12 20:06:29 +01:00
2026-01-11 20:29:59 +01:00
2026-01-10 21:46:27 +01:00
2026-01-10 21:46:27 +01:00
2026-01-10 21:46:27 +01:00
2026-01-12 19:51:48 +01:00

Discord AI Bot

A customizable Discord bot that responds to @mentions with AI-generated responses. Supports multiple AI providers.

Features

  • Multi-Provider AI: Supports OpenAI, OpenRouter, Anthropic (Claude), and Google Gemini
  • Persistent Memory: PostgreSQL database for user and conversation storage
  • User Recognition: Set custom names so the bot knows "who is who"
  • User Facts: Bot remembers things about users (hobbies, preferences, etc.)
  • Web Search: Access current information via SearXNG integration
  • Fully Customizable: Configure bot name, personality, and behavior
  • Easy Deployment: Docker support with PostgreSQL included

Living AI Features

  • Autonomous Learning: Bot automatically extracts and remembers facts from conversations
  • Mood System: Bot has emotional states that affect its responses naturally
  • Relationship Tracking: Bot builds relationships from Stranger to Close Friend
  • Communication Style Learning: Bot adapts to each user's preferred style
  • Opinion Formation: Bot develops genuine preferences on topics
  • Proactive Behavior: Birthday wishes, follow-ups on mentioned events
  • Self-Awareness: Bot knows its age, statistics, and history with users
  • Cross-User Connections: Bot can identify shared interests between users

Quick Start

1. Clone the repository

git clone https://github.com/your-username/discord-ai-bot.git
cd discord-ai-bot

2. Configure the bot

cp .env.example .env

Edit .env with your settings (see Configuration below).

3. Run with Docker

docker compose up -d

This starts both the bot and PostgreSQL database. Run migrations on first start:

docker compose exec daemon-boyfriend alembic upgrade head

Or run locally:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m daemon_boyfriend

Configuration

All configuration is done via environment variables in .env.

Required Settings

Variable Description
DISCORD_TOKEN Your Discord bot token
AI_PROVIDER openai, openrouter, anthropic, or gemini
OPENAI_API_KEY OpenAI API key (if using OpenAI)
OPENROUTER_API_KEY OpenRouter API key (if using OpenRouter)
ANTHROPIC_API_KEY Anthropic API key (if using Anthropic)
GEMINI_API_KEY Google Gemini API key (if using Gemini)

Bot Identity

Variable Default Description
BOT_NAME AI Bot The bot's display name (used in responses)
BOT_PERSONALITY helpful and friendly Personality traits for the AI
BOT_DESCRIPTION I'm an AI assistant... Shown when mentioned without a message
BOT_STATUS for mentions Status message (shown as "Watching ...")
SYSTEM_PROMPT (auto-generated) Custom system prompt (overrides default)

AI Settings

Variable Default Description
AI_MODEL gpt-4o Model to use
AI_MAX_TOKENS 1024 Maximum response length
AI_TEMPERATURE 0.7 Response creativity (0.0-2.0)
MAX_CONVERSATION_HISTORY 20 Messages to remember per user

Database (PostgreSQL)

Variable Default Description
DATABASE_URL (none) PostgreSQL connection string
POSTGRES_PASSWORD daemon Password for docker-compose PostgreSQL
CONVERSATION_TIMEOUT_MINUTES 60 Minutes before starting new conversation

When DATABASE_URL is set, the bot uses PostgreSQL for persistent storage. Without it, the bot falls back to in-memory storage (data lost on restart).

Web Search (SearXNG)

Variable Default Description
SEARXNG_URL (none) SearXNG instance URL
SEARXNG_ENABLED true Enable/disable web search
SEARXNG_MAX_RESULTS 5 Max search results to fetch

When configured, the bot automatically searches the web for queries that need current information (news, weather, etc.).

Living AI Settings

Variable Default Description
LIVING_AI_ENABLED true Master switch for all Living AI features
MOOD_ENABLED true Enable mood system
RELATIONSHIP_ENABLED true Enable relationship tracking
FACT_EXTRACTION_ENABLED true Enable autonomous fact extraction
FACT_EXTRACTION_RATE 0.3 Probability of extracting facts (0.0-1.0)
PROACTIVE_ENABLED true Enable proactive messages (birthdays, follow-ups)
CROSS_USER_ENABLED false Enable cross-user associations (privacy-sensitive)
OPINION_FORMATION_ENABLED true Enable bot opinion formation
STYLE_LEARNING_ENABLED true Enable communication style learning
MOOD_DECAY_RATE 0.1 How fast mood returns to neutral per hour

Command Toggles

All commands can be individually enabled/disabled. When disabled, the bot handles these functions naturally through conversation.

Variable Default Description
COMMANDS_ENABLED true Master switch for all commands
CMD_RELATIONSHIP_ENABLED true Enable !relationship command
CMD_MOOD_ENABLED true Enable !mood command
CMD_BOTSTATS_ENABLED true Enable !botstats command
CMD_OURHISTORY_ENABLED true Enable !ourhistory command
CMD_BIRTHDAY_ENABLED true Enable !birthday command
CMD_REMEMBER_ENABLED true Enable !remember command
CMD_SETNAME_ENABLED true Enable !setname command
CMD_WHATDOYOUKNOW_ENABLED true Enable !whatdoyouknow command
CMD_FORGETME_ENABLED true Enable !forgetme command

Example Configurations

Friendly Assistant:

BOT_NAME=Helper Bot
BOT_PERSONALITY=friendly, helpful, and encouraging
BOT_DESCRIPTION=I'm here to help! Ask me anything.
BOT_STATUS=ready to help

Technical Expert:

BOT_NAME=TechBot
BOT_PERSONALITY=knowledgeable, precise, and technical
BOT_DESCRIPTION=I'm a technical assistant. Ask me about programming, DevOps, or technology.
BOT_STATUS=for tech questions

Custom System Prompt:

BOT_NAME=GameMaster
SYSTEM_PROMPT=You are GameMaster, a Dungeon Master for text-based RPG adventures. Stay in character, describe scenes vividly, and guide players through exciting quests. Use Discord markdown for emphasis.

Discord Setup

  1. Go to Discord Developer Portal
  2. Create a new application
  3. Go to Bot and create a bot
  4. Enable these Privileged Gateway Intents:
    • Server Members Intent
    • Message Content Intent
  5. Copy the bot token to your .env file
  6. Go to OAuth2URL Generator:
    • Select scope: bot
    • Select permissions: Send Messages, Read Message History, View Channels
  7. Use the generated URL to invite the bot to your server

Usage

Mention the bot in any channel:

@YourBot what's the weather like?
@YourBot explain quantum computing
@YourBot help me write a poem

Memory Commands

Users can manage what the bot remembers about them:

Command Description
!setname <name> Set your preferred name
!clearname Reset to Discord display name
!remember <fact> Tell the bot something about you
!whatdoyouknow See what the bot remembers
!forgetme Clear all facts about you

Admin commands:

Command Description
!setusername @user <name> Set name for another user
!teachbot @user <fact> Add a fact about a user

Living AI Commands

Command Description
!relationship See your relationship level with the bot
!mood See the bot's current emotional state
!botstats Bot shares its self-awareness statistics
!ourhistory See your history with the bot
!birthday <date> Set your birthday for the bot to remember

Note: When commands are disabled, the bot handles these naturally through conversation:

  • Ask "what do you know about me?" instead of !whatdoyouknow
  • Say "call me Alex" instead of !setname Alex
  • Ask "how are you feeling?" instead of !mood
  • Say "my birthday is March 15th" instead of !birthday

AI Providers

Provider Models Notes
OpenAI gpt-4o, gpt-4-turbo, gpt-3.5-turbo Official OpenAI API
OpenRouter 100+ models Access to Llama, Mistral, Claude, etc.
Anthropic claude-3-5-sonnet, claude-3-opus Direct Claude API
Gemini gemini-2.0-flash, gemini-1.5-pro Google AI API

Project Structure

src/daemon_boyfriend/
├── bot.py              # Main bot class
├── config.py           # Configuration
├── cogs/
│   ├── ai_chat.py      # Mention handler
│   ├── memory.py       # Memory commands
│   └── status.py       # Health/status commands
├── models/
│   ├── user.py         # User, UserFact, UserPreference
│   ├── conversation.py # Conversation, Message
│   ├── guild.py        # Guild, GuildMember
│   └── living_ai.py    # BotState, UserRelationship, etc.
└── services/
    ├── ai_service.py   # AI provider factory
    ├── database.py     # PostgreSQL connection
    ├── user_service.py # User management
    ├── persistent_conversation.py  # DB-backed history
    ├── providers/      # AI providers
    ├── searxng.py      # Web search service
    ├── mood_service.py           # Mood system
    ├── relationship_service.py   # Relationship tracking
    ├── fact_extraction_service.py # Autonomous learning
    ├── communication_style_service.py # Style learning
    ├── opinion_service.py        # Opinion formation
    ├── proactive_service.py      # Scheduled events
    ├── self_awareness_service.py # Bot self-reflection
    └── association_service.py    # Cross-user connections
schema.sql              # Database schema
project-vision.md       # Living AI design document

License

MIT

Description
A companion for those who love deeply and feel intensely. For the ones whose closeness is a feature, not a bug - who build connections through vulnerability, trust, and unwavering presence. A safe space to process grief, navigate attachment, and remember that your capacity to care is a strength, even when it hurts.
Readme 406 KiB
Languages
Python 96.9%
HTML 2.9%
Dockerfile 0.2%