mrwabnalas40 commited on
Commit
c039b26
·
verified ·
1 Parent(s): 18bd453

Upload userbot_noura.py

Browse files
Files changed (1) hide show
  1. userbot_noura.py +125 -45
userbot_noura.py CHANGED
@@ -36,7 +36,7 @@ load_dotenv()
36
  API_ID = int(os.getenv("API_ID", 0))
37
  API_HASH = os.getenv("API_HASH", "")
38
  PHONE = os.getenv("PHONE", "")
39
- BOT_TOKEN = os.getenv("BOT_TOKEN", "")
40
 
41
  # إعدادات نورا
42
  NOURA_API = (os.getenv("NOURA_API_BASE", "http://127.0.0.1:9531")).rstrip("/")
@@ -848,68 +848,148 @@ async def post_init(app):
848
  logging.info("Warm-up: تم.")
849
  except Exception as e:
850
  logging.warning("Warm-up فشل: %s", e)
 
 
 
851
 
852
  # =========================
853
- # الدوال الرئيسية للتشغيل
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
854
  # =========================
855
- # استبدل دالة main() الحالية:
856
 
857
  async def main():
 
 
858
  # بدء تيليثون
859
  await client.start(phone=PHONE)
860
- print("✅ تم تشغيل تيليثون بنجاح")
861
 
862
  # تحديث قائمة القنوات تلقائياً
863
  await refresh_admin_channels()
 
864
 
865
- # بدء تيليجرام بوت
866
- app = ApplicationBuilder().token(TELEGRAM_TOKEN).post_init(post_init).build()
 
867
 
868
- # إضافة الهاندلرات
 
869
  app.add_handler(CommandHandler("start", start))
870
  app.add_handler(CommandHandler("image", handle_image_command))
871
  app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
872
  app.add_handler(MessageHandler(filters.PHOTO | (filters.Document.IMAGE & filters.CAPTION), handle_images))
 
873
 
874
- # تشغيل البوتين معاً
875
- await asyncio.gather(
876
- client.run_until_disconnected(),
877
- app.run_polling()
878
- )
879
-
880
- # استبدل دالة main() الحالية بهذا الكود:
881
-
882
- async def main():
883
- # بدء تيليثون
884
- await client.start(phone=PHONE)
885
- print("✅ تم تشغيل تيليثون بنجاح")
886
-
887
- # تحديث قائمة القنوات تلقائياً
888
- await refresh_admin_channels()
889
-
890
- # بدء تيليجرام بوت في خيط منفصل
891
- import threading
892
-
893
- def run_bot():
894
- # إنشاء تطبيق جديد داخل الخيط
895
- app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
896
-
897
- # إضافة الهاندلرات
898
- app.add_handler(CommandHandler("start", start))
899
- app.add_handler(CommandHandler("image", handle_image_command))
900
- app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
901
- app.add_handler(MessageHandler(filters.PHOTO | (filters.Document.IMAGE & filters.CAPTION), handle_images))
902
-
903
- # تشغيل البوت
904
- app.run_polling()
905
-
906
- # تشغيل البوت في خيط منفصل
907
- bot_thread = threading.Thread(target=run_bot)
908
- bot_thread.daemon = True
909
- bot_thread.start()
910
 
911
- # الاستمرار في تشغيل تيليثون في الخيط الرئيسي
 
912
  await client.run_until_disconnected()
913
 
 
 
 
 
914
  if __name__ == "__main__":
915
- asyncio.run(main())
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  API_ID = int(os.getenv("API_ID", 0))
37
  API_HASH = os.getenv("API_HASH", "")
38
  PHONE = os.getenv("PHONE", "")
39
+ BOT_TOKEN = os.getenv("BOT_TOKEN", "7875784449:AAGlCPmjOmoQHRSku8HShc-cTfaXrkroYN0")
40
 
41
  # إعدادات نورا
42
  NOURA_API = (os.getenv("NOURA_API_BASE", "http://127.0.0.1:9531")).rstrip("/")
 
848
  logging.info("Warm-up: تم.")
849
  except Exception as e:
850
  logging.warning("Warm-up فشل: %s", e)
851
+ import asyncio
852
+ from telethon import TelegramClient, events
853
+ from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters
854
 
855
  # =========================
856
+ # الإعدادات الأساسية
857
+ # =========================
858
+ #API_ID = 'your_api_id'
859
+ #API_HASH = 'your_api_hash'
860
+ #PHONE = 'your_phone_number'
861
+ #TELEGRAM_TOKEN = 'your_telegram_bot_token'
862
+
863
+ # قوائم القنوات (سيتم ملؤها ديناميكياً)
864
+ source_channels = []
865
+ target_channels = []
866
+
867
+ # تهيئة العميل
868
+ client = TelegramClient('session_name', API_ID, API_HASH)
869
+
870
+ # =========================
871
+ # دوال المساعدة
872
+ # =========================
873
+
874
+ async def refresh_admin_channels():
875
+ """تحديث قائمة القنوات من قنوات الإدارة"""
876
+ global source_channels, target_channels
877
+ try:
878
+ # هنا يتم جلب القنوات من قنوات الإدارة
879
+ # هذا مثال - يجب تعديله حسب طريقة تخزينك للقنوات
880
+ source_channels = [123456, 789012] # أمثلة على معرفات القنوات
881
+ target_channels = [345678, 901234] # أمثلة على معرفات القنوات
882
+
883
+ print(f"🔄 تم تحديث القنوات: {len(source_channels)} مصدر، {len(target_channels)} هدف")
884
+ except Exception as e:
885
+ print(f"❌ خطأ في تحديث القنوات: {e}")
886
+
887
+ async def periodic_channel_refresh(interval_minutes=30):
888
+ """تحديث قائمة القنوات بشكل دوري"""
889
+ while True:
890
+ await asyncio.sleep(interval_minutes * 60)
891
+ await refresh_admin_channels()
892
+
893
+ # =========================
894
+ # معالجة رسائل القنوات (تليثون)
895
+ # =========================
896
+
897
+ @client.on(events.NewMessage(chats=source_channels))
898
+ async def handle_channel_message(event):
899
+ """معالجة الرسائل من القنوات المصدر"""
900
+ try:
901
+ print(f"📥 رسالة جديدة من قناة مصدر: {event.chat_id}")
902
+
903
+ # إعادة الإرسال لجميع القنوات الهدف
904
+ success_count = 0
905
+ for target_id in target_channels:
906
+ if target_id != event.chat_id: # عدم الإرسال لنفس القناة
907
+ try:
908
+ await client.forward_messages(target_id, event.message)
909
+ print(f"✅ تم النشر إلى: {target_id}")
910
+ success_count += 1
911
+ await asyncio.sleep(1) # تجنب FloodWait
912
+ except Exception as e:
913
+ print(f"❌ فشل النشر إلى {target_id}: {e}")
914
+
915
+ print(f"✅ تم النشر إلى {success_count} قناة")
916
+
917
+ except Exception as e:
918
+ print(f"❌ خطأ في معالجة الرسالة: {e}")
919
+
920
+ # =========================
921
+ # معالجة أوامر البوت (تليجرام)
922
+ # =========================
923
+
924
+ async def start(update, context):
925
+ """معالجة أمر /start"""
926
+ await update.message.reply_text("مرحباً! أنا بوت يعمل.")
927
+
928
+ async def handle_image_command(update, context):
929
+ """معالجة أمر /image"""
930
+ await update.message.reply_text("معالجة صورة...")
931
+
932
+ async def handle_message(update, context):
933
+ """معالجة الرسائل النصية"""
934
+ await update.message.reply_text(f"تم استلام رسالتك: {update.message.text}")
935
+
936
+ async def handle_images(update, context):
937
+ """معالجة الصور المرسلة"""
938
+ await update.message.reply_text("تم استلام الصورة!")
939
+
940
+ # =========================
941
+ # الدالة الرئيسية
942
  # =========================
 
943
 
944
  async def main():
945
+ print("🚀 بدء التشغيل...")
946
+
947
  # بدء تيليثون
948
  await client.start(phone=PHONE)
949
+ print("✅ تيليثون يعمل")
950
 
951
  # تحديث قائمة القنوات تلقائياً
952
  await refresh_admin_channels()
953
+ print("✅ تم تحديث القنوات")
954
 
955
+ # بدء التحديث الدوري للقنوات في الخلفية
956
+ asyncio.create_task(periodic_channel_refresh(30))
957
+ print("✅ التحديث الدوري يعمل")
958
 
959
+ # بدء بوت التليجرام في الخلفية
960
+ app = ApplicationBuilder().token(TELEGRAM_TOKEN).build()
961
  app.add_handler(CommandHandler("start", start))
962
  app.add_handler(CommandHandler("image", handle_image_command))
963
  app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
964
  app.add_handler(MessageHandler(filters.PHOTO | (filters.Document.IMAGE & filters.CAPTION), handle_images))
965
+ print("✅ تم إعداد بوت التليجرام")
966
 
967
+ # تشغيل البوت في الخلفية
968
+ await app.initialize()
969
+ await app.start()
970
+ if app.updater:
971
+ await app.updater.start_polling()
972
+ print("✅ بوت التليجرام يعمل")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
973
 
974
+ # البقاء في الانتظار إلى الأبد
975
+ print("🔄 البوت يعمل الآن - استخدم Ctrl+C لإيقافه")
976
  await client.run_until_disconnected()
977
 
978
+ # =========================
979
+ # نقطة الدخول
980
+ # =========================
981
+
982
  if __name__ == "__main__":
983
+ # تشغيل البوت بشكل دائم
984
+ loop = asyncio.new_event_loop()
985
+ asyncio.set_event_loop(loop)
986
+
987
+ try:
988
+ loop.run_until_complete(main())
989
+ except KeyboardInterrupt:
990
+ print("⏹️ تم إيقاف البوت")
991
+ except Exception as e:
992
+ print(f"❌ خطأ: {e}")
993
+ finally:
994
+ print("🔄 جاري الإغلاق...")
995
+ loop.close()