bot mehran
Tue Mar 11 2025 16:37:25 GMT+0000 (Coordinated Universal Time)
Saved by @mehran
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())



Comments