Update main.py
Browse files
main.py
CHANGED
|
@@ -16,25 +16,34 @@ app = Flask(__name__)
|
|
| 16 |
|
| 17 |
@app.route('/')
|
| 18 |
def home():
|
| 19 |
-
return "ربات یکپارچه آلفا (نسخه
|
| 20 |
|
| 21 |
def run_flask():
|
| 22 |
app.run(host="0.0.0.0", port=7860)
|
| 23 |
|
| 24 |
|
| 25 |
# --- ساختار کاملاً خالص کیبورد پایین صفحه (Chat Keypad) ---
|
|
|
|
| 26 |
MAIN_KEYPAD_DICT = {
|
| 27 |
"rows": [
|
| 28 |
{
|
| 29 |
"buttons": [
|
| 30 |
-
{"id": "chat_btn", "type": "Simple", "button_text": "
|
| 31 |
-
{"id": "img_btn", "type": "Simple", "button_text": "🎨 عکس"}
|
| 32 |
]
|
| 33 |
},
|
| 34 |
{
|
| 35 |
"buttons": [
|
| 36 |
-
{"id": "
|
| 37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
]
|
| 39 |
}
|
| 40 |
],
|
|
@@ -48,7 +57,7 @@ async def send_with_keyboard(client, chat_id, text, use_keyboard=True):
|
|
| 48 |
await client.send_message(chat_id, text)
|
| 49 |
return
|
| 50 |
|
| 51 |
-
# ارسال تهاجمی: دور زدن محدودیتهای rubpy و تزریق مستقیم به سرور روبیکا
|
| 52 |
try:
|
| 53 |
payload = {
|
| 54 |
"chat_id": chat_id,
|
|
@@ -60,7 +69,7 @@ async def send_with_keyboard(client, chat_id, text, use_keyboard=True):
|
|
| 60 |
return
|
| 61 |
except Exception as raw_api_err:
|
| 62 |
print(f"خطای تزریق مستقیم: {raw_api_err}")
|
| 63 |
-
# تلاش دوم از طریق روش استاندارد کتابخانه
|
| 64 |
try:
|
| 65 |
await client.send_message(chat_id, text, chat_keypad=MAIN_KEYPAD_DICT, chat_keypad_type="New")
|
| 66 |
return
|
|
@@ -348,7 +357,7 @@ else:
|
|
| 348 |
@bot.on_update(filters.private)
|
| 349 |
async def main_handler(client, update):
|
| 350 |
try:
|
| 351 |
-
# استخراج متن پیام کاربر
|
| 352 |
user_text = getattr(update, "text", "") or getattr(getattr(update, "message", None), "text", "") or getattr(getattr(update, "new_message", None), "text", "")
|
| 353 |
user_text_str = str(user_text).strip() if user_text else ""
|
| 354 |
|
|
@@ -362,30 +371,27 @@ else:
|
|
| 362 |
if chat_id not in user_states:
|
| 363 |
user_states[chat_id] = {"mode": None, "text": ""}
|
| 364 |
|
| 365 |
-
# مدیریت کامندهای لغو/شروع از دکمهها یا چت
|
| 366 |
-
if user_text_str in ["/start", "سلام", "لغو", "/cancel", "❌ لغو"]:
|
| 367 |
user_states[chat_id] = {"mode": None, "text": ""}
|
| 368 |
menu = (
|
| 369 |
"سلام! به ربات هوشمند آلفا خوش آمدید 🤖\n\n"
|
| 370 |
-
"لطفاً برای شروع، از کیبورد پایین یکی از بخشها را انتخاب کنید:\n
|
| 371 |
-
"💬 چت با هوش مصنوعی\n"
|
| 372 |
-
"🎨 طراحی عکس\n"
|
| 373 |
-
"🎙️ تبدیل متن به صدا"
|
| 374 |
)
|
| 375 |
await send_with_keyboard(client, chat_id, menu, True)
|
| 376 |
return
|
| 377 |
|
| 378 |
-
if user_text_str in ["/chat", "💬 چت"]:
|
| 379 |
user_states[chat_id] = {"mode": "chat", "text": ""}
|
| 380 |
await send_with_keyboard(client, chat_id, "💬 شما وارد بخش **چت با هوش مصنوعی** شدید.\n\nهر سوالی دارید بفرستید تا جواب بدم:\n" + FOOTER_MENU, True)
|
| 381 |
return
|
| 382 |
|
| 383 |
-
if user_text_str in ["/image", "🎨 عکس"]:
|
| 384 |
user_states[chat_id] = {"mode": "image_waiting_for_text", "text": ""}
|
| 385 |
await send_with_keyboard(client, chat_id, "🎨 شما وارد بخش **ساخت عکس** شدید.\n\nلطفاً متنی که میخواهید به عکس تبدیل شود را توصیف کنید:\n" + FOOTER_MENU, True)
|
| 386 |
return
|
| 387 |
|
| 388 |
-
if user_text_str in ["/tts", "🎙️ صدا"]:
|
| 389 |
user_states[chat_id] = {"mode": "tts_waiting_for_text", "text": ""}
|
| 390 |
await send_with_keyboard(client, chat_id, "🎙️ شما وارد بخش **تبدیل متن به صدا** شدید.\n\nلطفاً متنی که میخواهید به صدا تبدیل شود را ارسال کنید (حداکثر 2500 کاراکتر):\n" + FOOTER_MENU, True)
|
| 391 |
return
|
|
@@ -393,7 +399,7 @@ else:
|
|
| 393 |
current_mode = user_states[chat_id].get("mode")
|
| 394 |
|
| 395 |
if current_mode is None:
|
| 396 |
-
await send_with_keyboard(client, chat_id, "⚠️ لطفاً ابتدا از کیبورد پایین
|
| 397 |
return
|
| 398 |
|
| 399 |
elif current_mode == "chat":
|
|
|
|
| 16 |
|
| 17 |
@app.route('/')
|
| 18 |
def home():
|
| 19 |
+
return "ربات یکپارچه آلفا (نسخه کیبورد تکستونه) روشن است! 🚀"
|
| 20 |
|
| 21 |
def run_flask():
|
| 22 |
app.run(host="0.0.0.0", port=7860)
|
| 23 |
|
| 24 |
|
| 25 |
# --- ساختار کاملاً خالص کیبورد پایین صفحه (Chat Keypad) ---
|
| 26 |
+
# هر دکمه در یک ردیف جداگانه قرار گرفت
|
| 27 |
MAIN_KEYPAD_DICT = {
|
| 28 |
"rows": [
|
| 29 |
{
|
| 30 |
"buttons": [
|
| 31 |
+
{"id": "chat_btn", "type": "Simple", "button_text": "چت با هوش مصنوعی 🤖"}
|
|
|
|
| 32 |
]
|
| 33 |
},
|
| 34 |
{
|
| 35 |
"buttons": [
|
| 36 |
+
{"id": "img_btn", "type": "Simple", "button_text": "ساخت تصاویر با هوش مصنوعی🎨"}
|
| 37 |
+
]
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"buttons": [
|
| 41 |
+
{"id": "tts_btn", "type": "Simple", "button_text": "تبدیل متن به صدا با هوش مصنوعی🎙️"}
|
| 42 |
+
]
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"buttons": [
|
| 46 |
+
{"id": "cancel_btn", "type": "Simple", "button_text": "برگشت♻️"}
|
| 47 |
]
|
| 48 |
}
|
| 49 |
],
|
|
|
|
| 57 |
await client.send_message(chat_id, text)
|
| 58 |
return
|
| 59 |
|
| 60 |
+
# ارسال تهاجمی: دور زدن محدودیتهای rubpy و تزریق مستقیم به سرور روبیکا
|
| 61 |
try:
|
| 62 |
payload = {
|
| 63 |
"chat_id": chat_id,
|
|
|
|
| 69 |
return
|
| 70 |
except Exception as raw_api_err:
|
| 71 |
print(f"خطای تزریق مستقیم: {raw_api_err}")
|
| 72 |
+
# تلاش دوم از طریق روش استاندارد کتابخانه
|
| 73 |
try:
|
| 74 |
await client.send_message(chat_id, text, chat_keypad=MAIN_KEYPAD_DICT, chat_keypad_type="New")
|
| 75 |
return
|
|
|
|
| 357 |
@bot.on_update(filters.private)
|
| 358 |
async def main_handler(client, update):
|
| 359 |
try:
|
| 360 |
+
# استخراج متن پیام کاربر
|
| 361 |
user_text = getattr(update, "text", "") or getattr(getattr(update, "message", None), "text", "") or getattr(getattr(update, "new_message", None), "text", "")
|
| 362 |
user_text_str = str(user_text).strip() if user_text else ""
|
| 363 |
|
|
|
|
| 371 |
if chat_id not in user_states:
|
| 372 |
user_states[chat_id] = {"mode": None, "text": ""}
|
| 373 |
|
| 374 |
+
# مدیریت کامندهای لغو/شروع از دکمهها یا چت با نامهای جدید
|
| 375 |
+
if user_text_str in ["/start", "سلام", "لغو", "/cancel", "❌ لغو", "برگشت♻️"]:
|
| 376 |
user_states[chat_id] = {"mode": None, "text": ""}
|
| 377 |
menu = (
|
| 378 |
"سلام! به ربات هوشمند آلفا خوش آمدید 🤖\n\n"
|
| 379 |
+
"لطفاً برای شروع، از کیبورد پایین یکی از بخشها را انتخاب کنید:\n"
|
|
|
|
|
|
|
|
|
|
| 380 |
)
|
| 381 |
await send_with_keyboard(client, chat_id, menu, True)
|
| 382 |
return
|
| 383 |
|
| 384 |
+
if user_text_str in ["/chat", "💬 چت", "چت با هوش مصنوعی 🤖"]:
|
| 385 |
user_states[chat_id] = {"mode": "chat", "text": ""}
|
| 386 |
await send_with_keyboard(client, chat_id, "💬 شما وارد بخش **چت با هوش مصنوعی** شدید.\n\nهر سوالی دارید بفرستید تا جواب بدم:\n" + FOOTER_MENU, True)
|
| 387 |
return
|
| 388 |
|
| 389 |
+
if user_text_str in ["/image", "🎨 عکس", "ساخت تصاویر با هوش مصنوعی🎨"]:
|
| 390 |
user_states[chat_id] = {"mode": "image_waiting_for_text", "text": ""}
|
| 391 |
await send_with_keyboard(client, chat_id, "🎨 شما وارد بخش **ساخت عکس** شدید.\n\nلطفاً متنی که میخواهید به عکس تبدیل شود را توصیف کنید:\n" + FOOTER_MENU, True)
|
| 392 |
return
|
| 393 |
|
| 394 |
+
if user_text_str in ["/tts", "🎙️ صدا", "تبدیل متن به صدا با هوش مصنوعی🎙️"]:
|
| 395 |
user_states[chat_id] = {"mode": "tts_waiting_for_text", "text": ""}
|
| 396 |
await send_with_keyboard(client, chat_id, "🎙️ شما وارد بخش **تبدیل متن به صدا** شدید.\n\nلطفاً متنی که میخواهید به صدا تبدیل شود را ارسال کنید (حداکثر 2500 کاراکتر):\n" + FOOTER_MENU, True)
|
| 397 |
return
|
|
|
|
| 399 |
current_mode = user_states[chat_id].get("mode")
|
| 400 |
|
| 401 |
if current_mode is None:
|
| 402 |
+
await send_with_keyboard(client, chat_id, "⚠️ لطفاً ابتدا از کیبورد پایین، بخش مورد نظرتان را انتخاب کنید:" + FOOTER_MENU, True)
|
| 403 |
return
|
| 404 |
|
| 405 |
elif current_mode == "chat":
|