import streamlit as st import time import random import json from datetime import datetime import os # تنظیمات اصلی چت‌بات ADMIN_USERNAME = "admin" ADMIN_PASSWORD = "password" # CSS بهبود یافته با انیمیشن‌ها و افکت‌های جدید CUSTOM_CSS = """ """ class EnhancedChatbot: def __init__(self): self.conversation_history = [] self.admin_logged_in = False self.quick_replies = [ "بخشنامه‌های جدید", "راهنمای استفاده", "تماس با پشتیبانی", "گزارش مشکل" ] self.stats = { 'total_messages': 0, 'user_messages': 0, 'bot_messages': 0, 'start_time': datetime.now() } self.load_responses() def load_responses(self): """بارگذاری پاسخ‌های از پیش تعریف شده""" self.responses = { 'greeting': [ "سلام! چطور می‌تونم کمکتون کنم؟", "درود! من پاسخگوی هوشمند بخشنامه هستم. چه کمکی از دستم برمیاد؟", "خوش آمدید! در خدمت شما هستم." ], 'help': [ "برای راهنمایی بیشتر می‌تونید از گزینه‌های سریع پایین استفاده کنید.", "من می‌تونم در موارد زیر کمکتون کنم:\n- جستجوی بخشنامه‌ها\n- پاسخ به سوالات متداول\n- راهنمایی در مورد فرآیندها", ], 'unknown': [ "متوجه نشدم. می‌شه بیشتر توضیح بدید؟", "می‌تونید سوالتون رو به شکل دیگه‌ای بپرسید؟", "برای راهنمایی بهتر، لطفاً جزئیات بیشتری ارائه کنید." ] } def chat_response(self, message): """پردازش پیام کاربر و ارائه پاسخ هوشمند""" self.stats['total_messages'] += 1 self.stats['user_messages'] += 1 # افزودن پیام کاربر self.conversation_history.append({ 'type': 'user', 'message': message, 'timestamp': datetime.now().strftime("%H:%M") }) # شبیه‌سازی تایپ کردن time.sleep(1) # انتخاب پاسخ مناسب if any(word in message.lower() for word in ['سلام', 'درود', 'خوش آمدید']): response = random.choice(self.responses['greeting']) elif 'راهنمایی' in message.lower() or 'کمک' in message.lower(): response = random.choice(self.responses['help']) else: response = random.choice(self.responses['unknown']) self.stats['bot_messages'] += 1 # افزودن پاسخ ربات self.conversation_history.append({ 'type': 'bot', 'message': response, 'timestamp': datetime.now().strftime("%H:%M") }) return self.conversation_history def get_stats(self): """دریافت آمار چت‌بات""" uptime = datetime.now() - self.stats['start_time'] return { 'total_messages': self.stats['total_messages'], 'user_messages': self.stats['user_messages'], 'bot_messages': self.stats['bot_messages'], 'uptime': str(uptime).split('.')[0], 'response_rate': f"{(self.stats['bot_messages'] / self.stats['user_messages'] * 100):.1f}%" if self.stats['user_messages'] > 0 else "0%" } # تنظیمات اولیه استریملیت # ادامه کد قبلی... # تنظیمات اولیه استریملیت st.set_page_config( page_title="پاسخگوی هوشمند بخشنامه", page_icon="🤖", layout="wide", initial_sidebar_state="expanded" ) # اعمال CSS st.markdown(CUSTOM_CSS, unsafe_allow_html=True) # ایجاد نمونه از چت‌بات if 'chatbot' not in st.session_state: st.session_state.chatbot = EnhancedChatbot() # نمایش هدر اصلی st.markdown("""

پاسخگوی هوشمند بخشنامه

""", unsafe_allow_html=True) # نمایش پیام‌ها for message in st.session_state.chatbot.conversation_history: message_class = "user" if message['type'] == 'user' else "bot" icon = "user" if message['type'] == 'user' else "robot" st.markdown(f"""
{message['timestamp']}
{message['message']}
""", unsafe_allow_html=True) # نمایش نشانگر تایپ کردن if st.session_state.get('is_typing', False): st.markdown("""
""", unsafe_allow_html=True) # پاسخ‌های سریع st.markdown("""
""", unsafe_allow_html=True) for reply in st.session_state.chatbot.quick_replies: st.markdown(f"""
{reply}
""", unsafe_allow_html=True) st.markdown("
", unsafe_allow_html=True) # بخش ورودی پیام col1, col2 = st.columns([4, 1]) with col1: user_message = st.text_input( "", placeholder="پیام خود را بنویسید...", key="user_message", help="برای ارسال پیام، متن خود را وارد کرده و دکمه ارسال را بزنید" ) with col2: send_button = st.button( "ارسال پیام", key="send_button", help="برای ارسال پیام کلیک کنید" ) if send_button and user_message: st.session_state['is_typing'] = True st.session_state.chatbot.chat_response(user_message) st.session_state['is_typing'] = False st.experimental_rerun() st.markdown("
", unsafe_allow_html=True) # پنل مدیریت در سایدبار with st.sidebar: st.markdown("""

پنل مدیریت

""", unsafe_allow_html=True) if st.checkbox("نمایش آمار"): stats = st.session_state.chatbot.get_stats() st.markdown("""

آمار سیستم

""", unsafe_allow_html=True) for key, value in stats.items(): st.markdown(f"""
{key}: {value}
""", unsafe_allow_html=True) st.markdown("
", unsafe_allow_html=True) if st.button("پاک کردن تاریخچه", key="clear_history"): st.session_state.chatbot.conversation_history = [] st.experimental_rerun() # تنظیمات ظاهری st.markdown("### تنظیمات ظاهری") font_size = st.slider("اندازه متن", 12, 20, 14) st.markdown(f""" """, unsafe_allow_html=True) # اضافه کردن اسکریپت‌های جاوااسکریپت برای عملکرد بهتر st.markdown(""" """, unsafe_allow_html=True)