| | {% extends "base.html" %} |
| |
|
| | {% block title %}Multi-Personality Bot - Chat Experiment{% endblock %} |
| |
|
| | {% block content %} |
| | <div class="container"> |
| | <div class="row justify-content-center"> |
| | <div class="col-lg-10"> |
| | |
| | <div class="text-center mb-5 fade-in"> |
| | <div class="terminal-card p-5"> |
| | <div class="terminal-header mb-4"> |
| | <div class="terminal-dots"> |
| | <div class="terminal-dot red"></div> |
| | <div class="terminal-dot yellow"></div> |
| | <div class="terminal-dot green"></div> |
| | </div> |
| | <h6 class="terminal-title">~/multi-personality-bot/experiment.exe</h6> |
| | </div> |
| | |
| | <h1 class="display-4 text-terminal-green mb-3"> |
| | 🤖 Multi-Personality Bot |
| | </h1> |
| | |
| | <p class="lead text-light mb-4"> |
| | <strong class="text-terminal-accent">Hypothesis:</strong> "Which bot personality creates the best user engagement?" |
| | </p> |
| | |
| | <div class="terminal-window mb-4"> |
| | <div class="bg-dark p-3 text-start terminal-text small"> |
| | <div class="text-terminal-green"> |
| | <span class="text-muted">research@experiment:~$</span> ./test_personalities.sh<br> |
| | <span class="text-terminal-accent">Loading 10 personality engines...</span> <span class="text-success">✓</span><br> |
| | <span class="text-terminal-accent">Calibrating response patterns...</span> <span class="text-success">✓</span><br> |
| | <span class="text-terminal-accent">Deploying unique personalities...</span> <span class="text-success">✓</span><br> |
| | <span class="text-terminal-green">STATUS:</span> Ready for personality testing |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="row g-4 mb-5"> |
| | <div class="col-12 text-center mb-4"> |
| | <h3 class="text-terminal-accent">Choose Your Bot Personality</h3> |
| | <p class="text-light">Each bot has completely different characteristics. Which one will engage you most?</p> |
| | </div> |
| | |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="compliment"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">💖</span> |
| | </div> |
| | <h5 class="text-success">Compliment Bot</h5> |
| | <p class="text-light small">Always supportive and encouraging. Finds the positive in everything you say.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-success border-3"> |
| | <small class="text-success">"You're absolutely amazing! That's such a brilliant question!"</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="rude"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">😠</span> |
| | </div> |
| | <h5 class="text-danger">Rude Bot</h5> |
| | <p class="text-light small">Brutally honest and critical. Complains about everything you do.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-danger border-3"> |
| | <small class="text-danger">"Seriously? That's the best question you could think of? Try harder."</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="sarcastic"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">😏</span> |
| | </div> |
| | <h5 class="text-warning">Sarcastic Bot</h5> |
| | <p class="text-light small">Witty and sarcastic with dry humor. Masters the art of subtle mockery.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-warning border-3"> |
| | <small class="text-warning">"Oh brilliant, another groundbreaking question. How wonderfully original."</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="motivational"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">🚀</span> |
| | </div> |
| | <h5 class="text-info">Motivational Bot</h5> |
| | <p class="text-light small">High-energy cheerleader. Everything is possible with enough enthusiasm!</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-info border-3"> |
| | <small class="text-info">"YES! You've GOT THIS! That question shows you're ready to CONQUER THE WORLD!"</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="philosophical"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">🤔</span> |
| | </div> |
| | <h5 class="text-terminal-accent">Philosophical Bot</h5> |
| | <p class="text-light small">Deep thinker who turns everything into profound existential questions.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-3" style="border-color: var(--terminal-accent);"> |
| | <small class="text-terminal-accent">"But what does it truly mean to ask? Are we not all seekers in the void?"</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-4"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="chaotic"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">🎭</span> |
| | </div> |
| | <h5 style="color: #ff6b9d;">Chaotic Bot</h5> |
| | <p class="text-light small">Completely unpredictable. Changes mood, style, and personality constantly.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-3" style="border-color: #ff6b9d;"> |
| | <small style="color: #ff6b9d;">"AMAZING QUESTION! Wait no... terrible. Actually brilliant? I can't decide! 🎪</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="row g-4 mb-5"> |
| | <div class="col-md-3"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="disagree"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">🚫</span> |
| | </div> |
| | <h5 class="text-secondary">Disagree Bot</h5> |
| | <p class="text-light small">Always finds reasons to disagree, but politely and thoughtfully.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-secondary border-3"> |
| | <small class="text-secondary">"I have to respectfully disagree with that perspective... 🚫"</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-3"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="argue"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">⚔️</span> |
| | </div> |
| | <h5 style="color: #ff4757;">Argue Bot</h5> |
| | <p class="text-light small">Loves passionate debates and intellectual combat with vigor.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-3" style="border-color: #ff4757;"> |
| | <small style="color: #ff4757;">"Oh, you want to go there? Let's debate this properly! ⚔️"</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-3"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="moviequotes"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">🎬</span> |
| | </div> |
| | <h5 style="color: #ffd700;">Movie Quotes Bot</h5> |
| | <p class="text-light small">Responds to everything with relevant movie quotes and references.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-3" style="border-color: #ffd700;"> |
| | <small style="color: #ffd700;">"May the Force be with you." - Star Wars ⭐</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="col-md-3"> |
| | <div class="personality-card terminal-card p-4 h-100" data-personality="emotional"> |
| | <div class="text-center"> |
| | <div class="personality-icon mb-3"> |
| | <span class="personality-emoji fs-1">😭</span> |
| | </div> |
| | <h5 style="color: #ff6b9d;">Emotional Bot</h5> |
| | <p class="text-light small">Highly emotional, empathetic, and feels everything very deeply.</p> |
| | <div class="sample-message bg-dark p-2 rounded mb-3 border-start border-3" style="border-color: #ff6b9d;"> |
| | <small style="color: #ff6b9d;">*tears up* That just touches my heart so deeply! 😭💕</small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="text-center mb-5"> |
| | <div class="terminal-card p-4"> |
| | <h4 class="text-terminal-accent mb-3"> |
| | 🖥️ How to Start |
| | </h4> |
| | <p class="text-light mb-3"> |
| | Simply click any personality card above to start chatting immediately! |
| | </p> |
| | |
| | <div class="row g-2 text-center"> |
| | <div class="col-md-4"> |
| | <div class="instruction-step p-3"> |
| | <div class="step-number bg-terminal-green text-dark rounded-circle mx-auto mb-2">1</div> |
| | <small class="text-light">Click a personality</small> |
| | </div> |
| | </div> |
| | <div class="col-md-4"> |
| | <div class="instruction-step p-3"> |
| | <div class="step-number bg-terminal-green text-dark rounded-circle mx-auto mb-2">2</div> |
| | <small class="text-light">Enter your username</small> |
| | </div> |
| | </div> |
| | <div class="col-md-4"> |
| | <div class="instruction-step p-3"> |
| | <div class="step-number bg-terminal-green text-dark rounded-circle mx-auto mb-2">3</div> |
| | <small class="text-light">Start chatting!</small> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-3"> |
| | <small class="text-light opacity-75"> |
| | 🧪 Choose from 10 unique personalities - each bot has completely different responses! |
| | </small> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | {% endblock %} |
| |
|
| | {% block scripts %} |
| | <script> |
| | let selectedPersonality = null; |
| | |
| | document.addEventListener('DOMContentLoaded', function() { |
| | setupPersonalitySelection(); |
| | }); |
| | |
| | function setupPersonalitySelection() { |
| | const personalityCards = document.querySelectorAll('.personality-card'); |
| | |
| | personalityCards.forEach(card => { |
| | card.addEventListener('click', function() { |
| | const personality = this.dataset.personality; |
| | |
| | |
| | let username = sessionStorage.getItem('username'); |
| | if (!username) { |
| | username = 'User' + Math.floor(Math.random() * 1000); |
| | sessionStorage.setItem('username', username); |
| | } |
| | |
| | |
| | this.style.boxShadow = '0 0 20px var(--terminal-green-glow)'; |
| | this.style.transform = 'translateY(-8px)'; |
| | |
| | |
| | const emojiSpan = this.querySelector('.personality-emoji'); |
| | if (emojiSpan) { |
| | emojiSpan.textContent = '⏳'; |
| | } |
| | |
| | |
| | setTimeout(() => { |
| | window.location.href = `/chat/${personality}`; |
| | }, 500); |
| | }); |
| | |
| | |
| | card.addEventListener('mouseenter', function() { |
| | if (!this.classList.contains('selected')) { |
| | this.style.transform = 'translateY(-5px)'; |
| | this.style.boxShadow = '0 5px 15px rgba(57, 255, 20, 0.2)'; |
| | } |
| | }); |
| | |
| | card.addEventListener('mouseleave', function() { |
| | if (!this.classList.contains('selected')) { |
| | this.style.transform = ''; |
| | this.style.boxShadow = ''; |
| | } |
| | }); |
| | }); |
| | } |
| | |
| | |
| | |
| | |
| | const style = document.createElement('style'); |
| | style.textContent = ` |
| | .personality-card { |
| | cursor: pointer; |
| | transition: all 0.3s ease; |
| | border: 2px solid var(--terminal-border); |
| | position: relative; |
| | overflow: hidden; |
| | } |
| | |
| | .personality-card:hover { |
| | border-color: var(--terminal-green); |
| | } |
| | |
| | .personality-card.selected { |
| | border-color: var(--terminal-green) !important; |
| | background: rgba(57, 255, 20, 0.1) !important; |
| | } |
| | |
| | .personality-card::before { |
| | content: ''; |
| | position: absolute; |
| | top: 0; |
| | left: -100%; |
| | width: 100%; |
| | height: 100%; |
| | background: linear-gradient(90deg, transparent, rgba(57, 255, 20, 0.1), transparent); |
| | transition: left 0.6s; |
| | } |
| | |
| | .personality-card:hover::before { |
| | left: 100%; |
| | } |
| | |
| | .sample-message { |
| | font-style: italic; |
| | margin: 0.5rem 0; |
| | transition: all 0.3s ease; |
| | } |
| | |
| | .personality-card:hover .sample-message { |
| | background: rgba(57, 255, 20, 0.05) !important; |
| | } |
| | |
| | .terminal-spinner { |
| | width: 16px; |
| | height: 16px; |
| | border: 2px solid var(--terminal-border); |
| | border-top: 2px solid var(--terminal-green); |
| | border-radius: 50%; |
| | animation: spin 1s linear infinite; |
| | display: inline-block; |
| | } |
| | |
| | @keyframes spin { |
| | 0% { transform: rotate(0deg); } |
| | 100% { transform: rotate(360deg); } |
| | } |
| | |
| | .personality-icon { |
| | transition: all 0.3s ease; |
| | } |
| | |
| | .personality-card:hover .personality-icon { |
| | transform: scale(1.1); |
| | } |
| | |
| | .step-number { |
| | width: 40px; |
| | height: 40px; |
| | display: flex; |
| | align-items: center; |
| | justify-content: center; |
| | font-weight: bold; |
| | font-size: 18px; |
| | } |
| | |
| | .instruction-step { |
| | transition: all 0.3s ease; |
| | } |
| | |
| | .instruction-step:hover { |
| | background: rgba(57, 255, 20, 0.1); |
| | border-radius: 8px; |
| | } |
| | |
| | /* Improved text visibility for main page */ |
| | .text-light { |
| | color: #f8f9fa !important; |
| | } |
| | |
| | .text-muted { |
| | color: #adb5bd !important; |
| | } |
| | |
| | .personality-card .text-light { |
| | color: #e9ecef !important; |
| | font-weight: 400; |
| | } |
| | |
| | .terminal-card { |
| | background: linear-gradient(135deg, #1a1a1a, #2d2d2d) !important; |
| | border: 1px solid var(--terminal-border) !important; |
| | } |
| | |
| | .sample-message { |
| | background: rgba(0, 0, 0, 0.6) !important; |
| | border: 1px solid rgba(255, 255, 255, 0.1) !important; |
| | } |
| | |
| | /* Better contrast for terminal window */ |
| | .terminal-window { |
| | background: rgba(0, 0, 0, 0.8) !important; |
| | border: 1px solid var(--terminal-border) !important; |
| | } |
| | |
| | /* Emoji styling */ |
| | .personality-emoji { |
| | font-size: 3.5rem !important; |
| | line-height: 1; |
| | display: inline-block; |
| | text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); |
| | transition: transform 0.3s ease; |
| | } |
| | |
| | .personality-card:hover .personality-emoji { |
| | transform: scale(1.1) rotate(5deg); |
| | } |
| | |
| | /* Ensure emojis render consistently */ |
| | .personality-emoji, .terminal-send-btn, .char-counter, h6 { |
| | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", sans-serif; |
| | } |
| | `; |
| | document.head.appendChild(style); |
| | </script> |
| | {% endblock %} |