Reooiq commited on
Commit
8bfcd51
·
verified ·
1 Parent(s): 8b68b7c

Update bot.py

Browse files
Files changed (1) hide show
  1. bot.py +76 -126
bot.py CHANGED
@@ -5,170 +5,120 @@ import random
5
  import json
6
  from threading import Thread
7
  from http.server import HTTPServer, SimpleHTTPRequestHandler
8
- from telethon import TelegramClient
9
  from telethon.sessions import StringSession
10
  from telethon.tl.functions.channels import InviteToChannelRequest
11
- from telethon.tl.functions.messages import ExportChatInviteRequest
12
- from telethon.tl.functions.account import UpdateStatusRequest
13
- from telethon.tl.types import InputPeerUser
14
  from telethon.errors import *
15
 
 
16
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
17
  logger = logging.getLogger(__name__)
18
 
 
19
  API_ID = int(os.getenv("API_ID", "0"))
20
  API_HASH = os.getenv("API_HASH", "")
21
  SESSION_STRING = os.getenv("SESSION_STRING") or os.getenv("STRING_SESSION") or ""
22
  SOURCE_CHANNEL = os.getenv("SOURCE_CHANNEL", "")
23
  TARGET_CHANNEL = os.getenv("TARGET_CHANNEL", "")
24
 
25
- def run_server():
26
- HTTPServer(("0.0.0.0", 7860), SimpleHTTPRequestHandler).serve_forever()
27
- Thread(target=run_server, daemon=True).start()
28
 
29
- # 🧠 الذاكرة والمخزن
30
  def load_blacklist():
31
- if os.path.exists('blacklist.txt'):
32
- with open('blacklist.txt', 'r') as f:
33
- return set(line.strip() for line in f if line.strip())
 
34
  return set()
35
 
36
- def save_to_blacklist(user_id):
37
- with open('blacklist.txt', 'a') as f:
38
- f.write(f"{user_id}\n")
39
 
40
- # 🗣️ Spintax بشري جداً
41
- def get_random_message(name, invite_link):
42
- greetings = ["هلا", "مرحبا", "أهلين", "يا هلا", "عساك بخير"]
43
- intros = [
44
- f"{name} شفتك مهتم بنفس مجالنا",
45
- f"شفت تفاعلك قلت أكيد بيهمك هالجروب يا {name}",
46
- "جروبنا بيفيدك جداً",
47
- f"يا {name} أتمنى تنورنا بوجودك"
48
  ]
49
-
50
- # 20% احتمال يرسل رسالة "بشرية" عشوائية فيها خطأ مطبعي متعمد لتجاوز السبام
51
- if random.random() < 0.2:
52
- return f"{random.choice(greetings)} {name}.. \nرابط الجروب اهوا:\n{invite_link}"
53
-
54
- return f"{random.choice(greetings)}\n{random.choice(intros)}\nتفضل الرابط:\n{invite_link}"
55
-
56
- async def simulate_human_activity(client):
57
- """حركة ذكية لتمويه تيليجرام بأن المستخدم يقرأ ويتصفح التطبيق"""
58
- try:
59
- # إرسال حالة "أونلاين"
60
- await client(UpdateStatusRequest(offline=False))
61
- # انتظار كأن الشخص يقرأ الشاشة
62
- await asyncio.sleep(random.randint(1, 3))
63
- except:
64
- pass
65
 
66
- async def brute_force():
67
- logger.info("😈 بدء النسخة الإمبراطورية v3 (محاكاة بشرية، تخزين ذكي)...")
68
  client = TelegramClient(StringSession(SESSION_STRING.strip()), API_ID, API_HASH)
69
-
70
  try:
71
  await client.connect()
72
- if not await client.is_user_authorized():
73
- logger.error("❌ الجلسة ماتت!")
74
- return
75
 
76
- source = await client.get_entity(SOURCE_CHANNEL)
77
- target = await client.get_entity(TARGET_CHANNEL)
78
-
79
  try:
80
- invite = await client(ExportChatInviteRequest(peer=target))
81
  invite_link = invite.link
82
- except Exception:
83
- invite_link = f"https://t.me/{TARGET_CHANNEL}"
84
-
85
  blacklist = load_blacklist()
 
86
 
87
- # 🛡️ نظام حفظ الضحايا في ملف JSON لعدم سحبهم كل مرة من تيليجرام
88
- victims_file = "victims.json"
89
- valid_members = []
90
-
91
- if os.path.exists(victims_file):
92
- with open(victims_file, 'r') as f:
93
- saved_data = json.load(f)
94
- # استخراج فقط من ليس في البلاك لست
95
- valid_members = [m for m in saved_data if str(m['id']) not in blacklist]
96
- logger.info(f"📂 تم تحميل {len(valid_members)} ضحية من المخزن المحلي (بدون استهلاك API تيليجرام!)")
97
-
98
- if not valid_members:
99
- logger.info("📡 جاري سحب القائمة الكاملة لأول مرة...")
100
- members = await client.get_participants(source, limit=10000)
101
- valid_members = [{'id': m.id, 'access_hash': getattr(m, 'access_hash', 0), 'first_name': m.first_name}
102
- for m in members if not m.bot and not m.deleted and str(m.id) not in blacklist]
103
-
104
- with open(victims_file, 'w') as f:
105
- json.dump(valid_members, f)
106
- logger.info(f"✅ تم حفظ {len(valid_members)} ضحية في المخزن المحلي. لن نطلبهم من تيليجرام مجدداً!")
107
-
108
  random.shuffle(valid_members)
109
- success_add, success_msg = 0, 0
110
-
111
- for m_data in valid_members:
112
- name = m_data['first_name'] or "صديقي"
113
- str_id = str(m_data['id'])
114
-
115
- # محاكاة السلوك البشري قبل أي حركة!
116
- await simulate_human_activity(client)
117
 
 
 
 
 
 
 
 
 
 
118
  try:
119
- # 1. الحشر (الإضافة)
120
- peer = InputPeerUser(user_id=m_data['id'], access_hash=m_data['access_hash'])
121
- await client(InviteToChannelRequest(target, [peer]))
122
- success_add += 1
123
- logger.info(f"✅ تم الحشر: {name}")
124
- save_to_blacklist(str_id)
125
- await asyncio.sleep(random.randint(18, 30))
126
 
127
- except UserAlreadyParticipantError:
128
- save_to_blacklist(str_id)
129
- continue
 
 
 
130
 
131
- except (PeerFloodError, UserPrivacyRestrictedError, FloodWaitError) as e:
132
- if isinstance(e, FloodWaitError) and e.seconds > 60:
133
- logger.warning(f"⏳ حظر إضافة. تحويل {name} للخاص...")
134
- else:
135
- logger.warning(f"🛡️ حماية أو خصوصية. تحويل {name} للخاص...")
136
-
137
  try:
138
- # 2. القصف (المراسلة)
139
- msg_text = get_random_message(name, invite_link)
 
140
 
141
- # محاكاة "Typing..." قبل الإرسال! خدعة روسية قوية جداً
142
- async with client.action(m_data['id'], 'typing'):
143
- await asyncio.sleep(random.randint(2, 4))
144
 
145
- await client.send_message(m_data['id'], msg_text)
146
- success_msg += 1
147
- logger.info(f"📨 تم قصف {name} بالخاص!")
148
- save_to_blacklist(str_id)
149
- await asyncio.sleep(random.randint(18, 30))
150
-
151
- except FloodWaitError as e_msg:
152
- if e_msg.seconds > 60:
153
- logger.warning("⚠️ حظر رسائل. تخطي!")
154
- await asyncio.sleep(3)
155
- continue
156
- await asyncio.sleep(e_msg.seconds + 1)
157
- except Exception:
158
- continue
159
- except Exception:
160
- continue
161
-
162
- total_processed = success_add + success_msg
163
- if total_processed > 0 and total_processed % 30 == 0:
164
- logger.info("🔄 تمت معالجة 30 شخص. أخذ استراحة لتمويه خوارزمية تيليجرام (3 دقائق)...")
165
- await asyncio.sleep(180)
166
 
167
- except Exception as e:
168
- logger.error(f"❌ خطأ: {e}")
169
  finally:
170
- logger.info(f"📊 الخلاصة: إضافة {success_add} | مراسلة {success_msg}")
171
  await client.disconnect()
172
 
173
  if __name__ == "__main__":
174
- asyncio.run(brute_force())
 
 
 
 
 
 
 
5
  import json
6
  from threading import Thread
7
  from http.server import HTTPServer, SimpleHTTPRequestHandler
8
+ from telethon import TelegramClient, functions, types
9
  from telethon.sessions import StringSession
10
  from telethon.tl.functions.channels import InviteToChannelRequest
11
+ from telethon.tl.functions.messages import ExportChatInviteRequest, SendScreenshotNotificationRequest
12
+ from telethon.tl.types import InputPeerUser, UserStatusOnline
 
13
  from telethon.errors import *
14
 
15
+ # إعداد اللوق
16
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s')
17
  logger = logging.getLogger(__name__)
18
 
19
+ # المتغيرات
20
  API_ID = int(os.getenv("API_ID", "0"))
21
  API_HASH = os.getenv("API_HASH", "")
22
  SESSION_STRING = os.getenv("SESSION_STRING") or os.getenv("STRING_SESSION") or ""
23
  SOURCE_CHANNEL = os.getenv("SOURCE_CHANNEL", "")
24
  TARGET_CHANNEL = os.getenv("TARGET_CHANNEL", "")
25
 
26
+ # جسر الحماية
27
+ Thread(target=lambda: HTTPServer(("0.0.0.0", 7860), SimpleHTTPRequestHandler).serve_forever(), daemon=True).start()
 
28
 
 
29
  def load_blacklist():
30
+ if os.path.exists('blacklist.json'):
31
+ try:
32
+ with open('blacklist.json', 'r') as f: return set(json.load(f))
33
+ except: return set()
34
  return set()
35
 
36
+ def save_to_blacklist(blacklist):
37
+ with open('blacklist.json', 'w') as f: json.dump(list(blacklist), f)
 
38
 
39
+ def get_smart_message(name, link):
40
+ templates = [
41
+ f"أهلاً {name} ✨\nوجدت اهتمامك المشترك بمجالنا، يسعدنا انضمامك لأسرتنا هنا: {link}",
42
+ f"السلام عليكم يا {name} 👋\nندعوك لتكون جزءاً من مجتمعنا المتفاعل والمفيد: {link}",
43
+ f"يا هلا {name}.. شفتك متواجد بجروبات مشابهة، حياك الله معنا: {link}",
44
+ f"نتشرف بوجودك {name} في مجموعتنا الرسمية، انضم الآن: {link}"
 
 
45
  ]
46
+ return random.choice(templates)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ async def cyclone_attack():
 
49
  client = TelegramClient(StringSession(SESSION_STRING.strip()), API_ID, API_HASH)
 
50
  try:
51
  await client.connect()
52
+ if not await client.is_user_authorized(): return
 
 
53
 
54
+ # 1. تجهيز الرابط والهدف
55
+ target_entity = await client.get_entity(TARGET_CHANNEL)
 
56
  try:
57
+ invite = await client(ExportChatInviteRequest(peer=target_entity))
58
  invite_link = invite.link
59
+ except: invite_link = f"https://t.me/{TARGET_CHANNEL}"
60
+
 
61
  blacklist = load_blacklist()
62
+ source = await client.get_entity(SOURCE_CHANNEL)
63
 
64
+ # 2. سحب قائمة ضخمة
65
+ logger.info(f"📡 جاري سحب وتصفية الأعضاء من {SOURCE_CHANNEL}...")
66
+ participants = await client.get_participants(source, limit=5000)
67
+ valid_members = [m for m in participants if not m.bot and not m.deleted and str(m.id) not in blacklist]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  random.shuffle(valid_members)
 
 
 
 
 
 
 
 
69
 
70
+ logger.info(f"🌪️ تم تجهيز إعصار لـ {len(valid_members)} عضو.")
71
+
72
+ added, messaged = 0, 0
73
+ for member in valid_members:
74
+ if added + messaged >= 500: break # حد الدورة الواحدة
75
+
76
+ name = member.first_name or "صديقي"
77
+ str_id = str(member.id)
78
+
79
  try:
80
+ # 🟡 حركة ذكية 1: إظهار أنك "أونلاين"
81
+ await client(functions.account.UpdateStatusRequest(offline=False))
 
 
 
 
 
82
 
83
+ # محاولة الإضافة
84
+ await client(InviteToChannelRequest(target_entity, [InputPeerUser(member.id, member.access_hash)]))
85
+ added += 1
86
+ logger.info(f"✅ حشر مباشر: {name}")
87
+ blacklist.add(str_id)
88
+ await asyncio.sleep(random.randint(15, 25))
89
 
90
+ except (PeerFloodError, UserPrivacyRestrictedError, FloodWaitError):
91
+ # 🔵 الخطة البديلة: المراسلة الاحترافية
 
 
 
 
92
  try:
93
+ # 🟢 حركة ذكية 2: إظهار أنك "تكتب الآن"
94
+ async with client.action(member.id, 'typing'):
95
+ await asyncio.sleep(3) # محاكاة وقت الكتابة
96
 
97
+ # 🟣 حركة ذكية 3: قراءة محادثة العضو (Seen)
98
+ await client(functions.messages.ReadHistoryRequest(peer=member.id, max_id=0))
 
99
 
100
+ msg = get_smart_message(name, invite_link)
101
+ await client.send_message(member.id, msg)
102
+ messaged += 1
103
+ logger.info(f"📨 قصف ذكي (بعد الكتابة والسين): {name}")
104
+ blacklist.add(str_id)
105
+ await asyncio.sleep(random.randint(20, 40))
106
+ except: continue
107
+
108
+ except Exception: continue
109
+
110
+ # حفظ الذاكرة دورياً
111
+ if (added + messaged) % 10 == 0: save_to_blacklist(blacklist)
 
 
 
 
 
 
 
 
 
112
 
 
 
113
  finally:
114
+ save_to_blacklist(blacklist)
115
  await client.disconnect()
116
 
117
  if __name__ == "__main__":
118
+ while True:
119
+ try:
120
+ asyncio.run(cyclone_attack())
121
+ logger.info("😴 استراحة إعصارية لمدة 10 دقائق...")
122
+ import time
123
+ time.sleep(600)
124
+ except Exception: import time; time.sleep(30)