Spaces:
Sleeping
Sleeping
Update bot.py
Browse files
bot.py
CHANGED
|
@@ -7,11 +7,15 @@ import random
|
|
| 7 |
import os
|
| 8 |
from datetime import datetime
|
| 9 |
|
| 10 |
-
#
|
|
|
|
|
|
|
| 11 |
TARGET_GUILD_ID = 1463693244897693779 # أيدي السيرفر المسموح
|
| 12 |
OWNER_ROLE_ID = 1492516779598155877 # أيدي رتبة المالك للتحكم
|
| 13 |
|
| 14 |
-
#
|
|
|
|
|
|
|
| 15 |
REMINDERS = [
|
| 16 |
"🌸 سبحان الله وبحمده، سبحان الله العظيم",
|
| 17 |
"✨ اللهم صل وسلم على نبينا محمد",
|
|
@@ -113,7 +117,9 @@ REMINDERS = [
|
|
| 113 |
"📿 اللهم اجعلنا من الصابرين المحتسبين"
|
| 114 |
]
|
| 115 |
|
| 116 |
-
#
|
|
|
|
|
|
|
| 117 |
RECITERS = [
|
| 118 |
{"name": "إذاعة تلاوات منوعة", "desc": "بث مباشر لتلاوات مختارة", "url": "https://qurango.net/radio/tarateel"},
|
| 119 |
{"name": "عبدالباسط عبدالصمد", "desc": "تلاوة مجودة بصوت خاشع", "url": "https://qurango.net/radio/abdulbasit_abdulsamad_mjawwad"},
|
|
@@ -231,7 +237,6 @@ class ControlPanelView(View):
|
|
| 231 |
await interaction.response.send_message(f"⏮️ تم الرجوع إلى: {RECITERS[current_reciter_index]['name']}", ephemeral=True)
|
| 232 |
await log_event(interaction.guild, f"⏮️ **{interaction.user.name}** رجع للقارئ: {RECITERS[current_reciter_index]['name']}")
|
| 233 |
|
| 234 |
-
|
| 235 |
class QuranBot(commands.Bot):
|
| 236 |
def __init__(self):
|
| 237 |
intents = discord.Intents.default()
|
|
@@ -252,7 +257,6 @@ bot = QuranBot()
|
|
| 252 |
# دوال مساعدة والحماية
|
| 253 |
# =======================================================
|
| 254 |
|
| 255 |
-
# دالة لتسجيل الأحداث (Logs) في القناة المخصصة
|
| 256 |
async def log_event(guild: discord.Guild, message: str):
|
| 257 |
log_channel = discord.utils.get(guild.text_channels, name="📜-سجلات-البوت")
|
| 258 |
time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
@@ -262,7 +266,6 @@ async def log_event(guild: discord.Guild, message: str):
|
|
| 262 |
except: pass
|
| 263 |
print(f"[{time_now}] {message}")
|
| 264 |
|
| 265 |
-
# دالة للتحقق من الرتبة وأن الأمر يعمل في غرفة التحكم فقط
|
| 266 |
def is_owner_and_in_control():
|
| 267 |
async def predicate(interaction: discord.Interaction):
|
| 268 |
if not interaction.guild:
|
|
@@ -295,16 +298,32 @@ async def play_current_reciter(vc: discord.VoiceClient):
|
|
| 295 |
|
| 296 |
@bot.event
|
| 297 |
async def on_ready():
|
| 298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
for guild in bot.guilds:
|
| 300 |
if guild.id != TARGET_GUILD_ID:
|
| 301 |
print(f"👢 تم مغادرة سيرفر غريب: {guild.name}")
|
| 302 |
await guild.leave()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
|
| 304 |
-
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 308 |
|
| 309 |
async def check_and_create_channels(guild):
|
| 310 |
category_name = "إذاعة القرآن الكريم"
|
|
@@ -455,3 +474,4 @@ except Exception: pass
|
|
| 455 |
if __name__ == "__main__":
|
| 456 |
TOKEN = os.environ.get("DISCORD_TOKEN")
|
| 457 |
if TOKEN: bot.run(TOKEN)
|
|
|
|
|
|
| 7 |
import os
|
| 8 |
from datetime import datetime
|
| 9 |
|
| 10 |
+
# =======================================================
|
| 11 |
+
# الإعدادات الأساسية (الثوابت)
|
| 12 |
+
# =======================================================
|
| 13 |
TARGET_GUILD_ID = 1463693244897693779 # أيدي السيرفر المسموح
|
| 14 |
OWNER_ROLE_ID = 1492516779598155877 # أيدي رتبة المالك للتحكم
|
| 15 |
|
| 16 |
+
# =======================================================
|
| 17 |
+
# الأذكار والتذكيرات (القائمة الكاملة)
|
| 18 |
+
# =======================================================
|
| 19 |
REMINDERS = [
|
| 20 |
"🌸 سبحان الله وبحمده، سبحان الله العظيم",
|
| 21 |
"✨ اللهم صل وسلم على نبينا محمد",
|
|
|
|
| 117 |
"📿 اللهم اجعلنا من الصابرين المحتسبين"
|
| 118 |
]
|
| 119 |
|
| 120 |
+
# =======================================================
|
| 121 |
+
# قائمة 30 قارئ (بدون اختصار)
|
| 122 |
+
# =======================================================
|
| 123 |
RECITERS = [
|
| 124 |
{"name": "إذاعة تلاوات منوعة", "desc": "بث مباشر لتلاوات مختارة", "url": "https://qurango.net/radio/tarateel"},
|
| 125 |
{"name": "عبدالباسط عبدالصمد", "desc": "تلاوة مجودة بصوت خاشع", "url": "https://qurango.net/radio/abdulbasit_abdulsamad_mjawwad"},
|
|
|
|
| 237 |
await interaction.response.send_message(f"⏮️ تم الرجوع إلى: {RECITERS[current_reciter_index]['name']}", ephemeral=True)
|
| 238 |
await log_event(interaction.guild, f"⏮️ **{interaction.user.name}** رجع للقارئ: {RECITERS[current_reciter_index]['name']}")
|
| 239 |
|
|
|
|
| 240 |
class QuranBot(commands.Bot):
|
| 241 |
def __init__(self):
|
| 242 |
intents = discord.Intents.default()
|
|
|
|
| 257 |
# دوال مساعدة والحماية
|
| 258 |
# =======================================================
|
| 259 |
|
|
|
|
| 260 |
async def log_event(guild: discord.Guild, message: str):
|
| 261 |
log_channel = discord.utils.get(guild.text_channels, name="📜-سجلات-البوت")
|
| 262 |
time_now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
| 266 |
except: pass
|
| 267 |
print(f"[{time_now}] {message}")
|
| 268 |
|
|
|
|
| 269 |
def is_owner_and_in_control():
|
| 270 |
async def predicate(interaction: discord.Interaction):
|
| 271 |
if not interaction.guild:
|
|
|
|
| 298 |
|
| 299 |
@bot.event
|
| 300 |
async def on_ready():
|
| 301 |
+
# 1. جعل البوت يظهر كـ "متصل" بشكل دائم مع حالة (Watching...)
|
| 302 |
+
await bot.change_presence(status=discord.Status.online, activity=discord.Activity(type=discord.ActivityType.watching, name="جاهز للعمل وينتظر السيرفر..."))
|
| 303 |
+
print(f"🤖 البوت {bot.user} متصل بشبكة ديسكورد بنجاح وهو الآن (Online).")
|
| 304 |
+
|
| 305 |
+
# 2. فحص السيرفرات التي يتواجد فيها حالياً عند التشغيل
|
| 306 |
for guild in bot.guilds:
|
| 307 |
if guild.id != TARGET_GUILD_ID:
|
| 308 |
print(f"👢 تم مغادرة سيرفر غريب: {guild.name}")
|
| 309 |
await guild.leave()
|
| 310 |
+
else:
|
| 311 |
+
# إذا وجد السيرفر الصحيح، يبدأ بتجهيز القنوات
|
| 312 |
+
await check_and_create_channels(guild)
|
| 313 |
+
await log_event(guild, "🚀 **تم إعادة تشغيل البوت وهو متصل الآن.**")
|
| 314 |
|
| 315 |
+
@bot.event
|
| 316 |
+
async def on_guild_join(guild):
|
| 317 |
+
# 3. هذا الحدث يعمل "فوراً" بمجرد إدخال البوت لأي سيرفر جديد
|
| 318 |
+
print(f"📥 البوت دخل سيرفر جديد: {guild.name} | الأيدي: {guild.id}")
|
| 319 |
+
|
| 320 |
+
if guild.id != TARGET_GUILD_ID:
|
| 321 |
+
print("❌ هذا ليس السيرفر المصرح له، جاري المغادرة...")
|
| 322 |
+
await guild.leave()
|
| 323 |
+
else:
|
| 324 |
+
print("✅ تم دخول السيرفر الصحيح! جاري تجهيز النظام...")
|
| 325 |
+
await check_and_create_channels(guild)
|
| 326 |
+
await log_event(guild, "🚀 **تم إضافة البوت للسيرفر بنجاح، القنوات جاهزة!**")
|
| 327 |
|
| 328 |
async def check_and_create_channels(guild):
|
| 329 |
category_name = "إذاعة القرآن الكريم"
|
|
|
|
| 474 |
if __name__ == "__main__":
|
| 475 |
TOKEN = os.environ.get("DISCORD_TOKEN")
|
| 476 |
if TOKEN: bot.run(TOKEN)
|
| 477 |
+
else: print("❌ التوكن مفقود! يرجى التأكد من وضعه في المتغيرات البيئية (Secrets).")
|