File size: 2,823 Bytes
e772b72 238c3dd e772b72 b934787 e772b72 238c3dd e772b72 b934787 238c3dd e772b72 b934787 e772b72 238c3dd b934787 238c3dd b934787 238c3dd b934787 238c3dd b934787 238c3dd b934787 238c3dd b934787 238c3dd b934787 238c3dd e772b72 238c3dd e772b72 238c3dd | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import os
import telebot
import google.generativeai as genai
from flask import Flask
from threading import Thread
import time
# --- 1. إعداد خادم الويب للبقاء مستيقظاً (Flask) ---
app = Flask('')
@app.route('/')
def home():
return "البوت يعمل بنجاح وهو مستيقظ 24/7!"
def run_flask():
# المنفذ 7860 هو الافتراضي لـ Hugging Face
try:
app.run(host='0.0.0.0', port=7860)
except Exception as e:
print(f"Flask Error: {e}")
def keep_alive():
t = Thread(target=run_flask)
t.daemon = True
t.start()
# --- 2. جلب المتغيرات (Secrets) ---
TELEGRAM_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "").strip()
GEMINI_KEY = os.getenv("GEMINI_API_KEY", "").strip()
# التحقق من وجود القيم
if not TELEGRAM_TOKEN or ":" not in TELEGRAM_TOKEN:
print("خطأ: يرجى التأكد من إضافة TELEGRAM_BOT_TOKEN في Secrets بشكل صحيح.")
elif not GEMINI_KEY:
print("خطأ: يرجى إضافة GEMINI_API_KEY في Secrets.")
else:
# إعداد Gemini
genai.configure(api_key=GEMINI_KEY)
model = genai.GenerativeModel('gemini-pro')
# إعداد Telegram Bot مع تفعيل خاصية threaded=False لاستقرار أفضل على الاستضافات المجانية
bot = telebot.TeleBot(TELEGRAM_TOKEN, threaded=False)
# --- 3. أوامر البوت ---
@bot.message_handler(commands=['start'])
def welcome(message):
bot.reply_to(message, "مرحباً! أنا بوت ذكاء اصطناعي مطور. أرسل لي أي شيء وسأجيبك باستخدام Gemini.")
@bot.message_handler(func=lambda message: True)
def handle_message(message):
try:
response = model.generate_content(message.text)
bot.reply_to(message, response.text)
except Exception as e:
print(f"Gemini Error: {e}")
bot.reply_to(message, "عذراً، حدث خطأ بسيط. جرب إرسال الرسالة مرة أخرى.")
# --- 4. التشغيل النهائي مع معالجة أخطاء الشبكة ---
if __name__ == "__main__":
keep_alive()
print("جاري تشغيل النظام...")
while True:
try:
if TELEGRAM_TOKEN and ":" in TELEGRAM_TOKEN:
print("تم بدء تشغيل بوت تليجرام...")
# infinity_polling ستحاول إعادة الاتصال تلقائياً عند حدوث مشاكل في الشبكة
bot.infinity_polling(timeout=20, long_polling_timeout=10)
else:
break
except Exception as e:
print(f"Connection Error: {e}. سأحاول إعادة الاتصال خلال 5 ثوانٍ...")
time.sleep(5) |