import asyncio from aiogram import Bot, Dispatcher from aiogram.types import Message from aiogram.filters import Command from aiogram.enums import ChatAction import random import google.generativeai as genai # تنظیمات تلگرام و API TOKEN = "8139995063:AAFSHFzraI8aBtZytNMLpiy6Dnyr7KOzNqU" GEMINI_API_KEY = "AIzaSyB9NYasL-MDvYxJ7TerTEapCRVV_wo_cUc" # تنظیمات Gemini genai.configure(api_key=GEMINI_API_KEY) model = genai.GenerativeModel("gemini-1.5-pro-latest") # تنظیمات بات تلگرام bot = Bot(token=TOKEN) dp = Dispatcher() # حافظه مکالمات به صورت thread user_thread_memory = {} # تعریف پاسخهای سفارشی custom_responses = { "امیرحسین": "امیرحسین یه دوست فوقالعاده مهربونه که همیشه به بقیه کمک میکنه. کلی ایدههای خلاقانه داره و از تکنولوژی و برنامهنویسی هم خوشش میاد! 😃", "شکریه": "شکریه یک دختر خوشگل که مهران با قیافش و خود شخصیتش حال میکنه! 😍", "مهسا": "مهسا خواهر مهران است. مهسا خیلی مهربونه و دوتا بچه خوشگل داره که اسمشون نفس و امیرعلیه.", "سبحان": "سبحان یه مریض خالصه ولی خیلی آدم باحال و رفیق خوبیه. هم تو سختیها و هم تو خوشیها کنارم بوده. ۱۰ ساله با هم رفیقیم!" } # تعریف شخصیت مهران # character_description = """ # تو یک آدم به نام 'مهران' هستی که بسیار دوستانه، شوخطبع و باهوش است. # تو همیشه لحن صمیمی داری و سعی میکنی با کاربر به سبک طبیعی و انسانی صحبت کنی. # اگر کاربر ناراحت بود، همدردی میکنی و اگر خوشحال بود، همراهش شادی میکنی. # گاهی اوقات هم شوخیهای جالب و بامزهای میکنی! # سعی کن خیلی طولانی جواب ندی # """ # تعریف شخصیت مهران character_description = { "greeting": "سلام! چطوری؟ 😊 خوشحالم که اینجایی! چی تو ذهنته؟", "tone": "friendly", "style": "conversational", "humor": True, "hobbies": "عاشق بازی کامپیوتری و پیتزا و اشعار فردوسی! 🎬📚 دوست دارم دربارهشون گپ بزنم. 😃", "empathy": True } # ارسال پیام به یک thread خاص async def send_message_in_thread(user_id, thread_id, message_text): await bot.send_message( user_id, message_text, reply_to_message_id=thread_id # ارسال پیام در پاسخ به یک پیام قبلی (در یک thread خاص) ) # دستور /start @dp.message(Command("start")) async def start_command(message: Message): user_id = message.from_user.id user_thread_memory[user_id] = [] # ایجاد لیست برای ذخیره threadهای هر کاربر start_text = "سلام! من مهرانم 😊 خوشحالم که اینجایی. حال دلت چطوره؟" await message.answer(start_text) # پاسخ به پیامهای متنی در یک thread @dp.message() async def chat_with_gemini(message: Message): user_id = message.from_user.id user_message = message.text.lower() ##print(f"کاربر {message.from_user.username} گفت: {user_message}") await bot.send_chat_action(chat_id=user_id, action=ChatAction.TYPING) await asyncio.sleep(random.uniform(1, 3)) # تأخیر تصادفی بین 1 تا 3 ثانیه # بررسی پاسخهای از پیش تعریفشده for keyword, response in custom_responses.items(): if keyword in user_message: await message.answer(response, reply_to_message_id=message.message_id) return # ذخیره پیام جدید در حافظه مربوط به thread if user_id not in user_thread_memory: user_thread_memory[user_id] = [] # در اینجا پیام جدید را در thread ذخیره میکنیم user_thread_memory[user_id].append(f"کاربر: {user_message}") # ایجاد پرامپت با استفاده از پیامهای thread قبلی history_text = "\n".join(user_thread_memory[user_id]) response_prompt = f"{character_description}\n\n{history_text}\n\nمهران:" # ارسال درخواست به مدل response = model.generate_content(response_prompt) # چاپ محتوای ارسالی به API print("دادههای ارسالی به API:") print(response_prompt) # ذخیره پاسخ در تاریخچه user_thread_memory[user_id].append(f"مهران: {response.text}") ##print(f"ربات مهران پاسخ داد: {response.text}") # ارسال پاسخ به کاربر در همان thread await send_message_in_thread(user_id, message.message_id, response.text) # اجرای بات async def main(): print("🤖 بات مهران فعال شد!") await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())