دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

أتمتة تطبيق ATF المصغّر على تيليغرام باستعمال Node.js وجلسات Telethon

كيشرح هاد الدليل كيفاش تثبّت ATF Bot Automation v2، وتهيّأ بيانات الولوج لتيليغرام، وتحمّل جلسات Telethon، وتنشئ وتتحقق من محافظ TON، وتشغّل سيرورات العمل التفاعلية أو التلقائية. وكيغطي حتى عمّال المهام، وتسجيل الإحالات، وحلول Turnstile، والبروكسيات، ولوحات المعلومات، والسحوبات، وإعادة المحاولات، واحتياطات أساسية لتدبير الأسرار.

أتمتة تطبيق ATF المصغّر على تيليغرام باستعمال Node.js وجلسات Telethon

شنو كيدير ATF Bot Automation v2

ATF Bot Automation v2 هو بوت بـ Node.js كيتفاعل مع Telegram Mini App ديال ATF باستعمال ملفات جلسات Telethon SQLite النشيطة. عوض ما يخزّن Telegram.WebApp.initData فملف query ثابت، كيطلب WebView جديدة من Telegram فكل دورة وكيستعمل بيانات التهيئة الجديدة اللي كيرجعها Telegram.

البوت كيدعم بزاف ديال الحسابات، وكيقدر يدبّر تسجيل الدخول لـ ATF، وإنشاء والتحقق من محافظ TON، والمطالبة بمكافآت التعدين، والمهام الديناميكية، وتسجيل الإحالات، وإحصائيات الحساب، وتبديل المحفظة، والسحب من ATF. كيعيد فحص مجلد الجلسات فكل دورة، وبهذا يقدر يكتاشف الحسابات الجديدة بلا ما تبدّل الكود المصدري.

الميزات الرئيسية

  • WebView ديال Telegram وبيانات تهيئة Mini App جديدة فكل دورة.
  • ولوج للقراءة فقط لقواعد بيانات جلسات Telethon SQLite، مع نسخ مفتاح المصادقة مؤقتاً للذاكرة.
  • إنشاء تلقائي لعناوين محافظ TON v4r2 حقيقية على الشبكة الرئيسية.
  • توقيع TON Proof والتحقق من المحفظة عبر نقطة النهاية sync_wallet ديال ATF.
  • عمال محافظ فطابور للحسابات اللي كتوصلها ردود مؤقتة بحال busy أو ردود مخزنة/مزالة التكرار.
  • اكتشاف ديناميكي للمهام عبر تحليل إعدادات الواجهة الأمامية ديال ATF باستعمال Acorn بلا eval.
  • عمال مهام مستقلون وحالة إعداد أولي مستقلة لكل جلسة.
  • تسجيل الإحالات عبر Telegram messages.StartBot، بما فيه التعامل مع Turnstile.
  • إعداد بروكسي HTTP أو HTTPS مستقل لكل حساب فطلبات ATF.
  • لوحة Textual للأتمتة المباشرة ولوحة منفصلة للقراءة فقط خاصة بالإحصائيات.
  • عمليات سحب متسلسلة مع التحقق من الرصيد، وحل CAPTCHA بالصور، وتدوير البروكسي، وعرض سجل السحوبات.
  • معرّفات طلبات مستقرة، وإعادات محاولة مضبوطة، وإيقاف سلس، وتصفية القيم الحساسة من السجلات.

المتطلبات

وجد هاد المتطلبات قبل تثبيت المشروع:

  • Node.js بالإصدار 22.5 أو أحدث.
  • Telegram API ID وAPI hash ديالك من https://my.telegram.org/apps.
  • على الأقل ملف جلسة Telethon SQLite نشيط واحد كيسالي بـ .session.
  • Python 3 إلا بغيتي تستعمل لوحة Textual أو أداة Turnstile المحلية.
تحذير أمني: ما تشاركش أبداً Telegram API hash ديالك، أو ملفات جلسات Telethon، أو بيانات اعتماد البروكسي، أو .env، أو wallets-accounts.json. ملف المحافظ فيه العبارات التذكيرية والمفاتيح الخاصة مكتوبة بوضوح، وكتعطي تحكم كامل فكل محفظة مخزنة فيه.

تثبيت البوت وإعداده

1. تثبيت تبعيات Node.js

حل PowerShell فالجذر ديال المشروع وثبّت الحزم:

npm install
Copy-Item .env.example .env

2. إضافة بيانات اعتماد Telegram API

عدّل .env ودخل بيانات الاعتماد اللي عطاك تطبيق Telegram ديالك:

TELEGRAM_API_ID=12345678
TELEGRAM_API_HASH=your_api_hash

خاص هاد البيانات تكون ديالك. ما تديرش ملف البيئة المكتمل فإدارة الإصدارات.

3. إضافة جلسات Telethon

حط جميع ملفات جلسات SQLite النشيطة فمجلد session. اسم الملف كيولي هو اسم الحساب اللي كيبان عند البوت.

session/
├── account1.session
├── account2.session
└── account3.session

كيتم فحص المجلد فكل دورة. قواعد بيانات الجلسات كتتحل للقراءة فقط، والولوج لنفس جلسة الحساب كيدوز فطابور باش ما توقعش عمليات متزامنة متعارضة.

4. تثبيت لوحة Textual اختيارياً

الخيار الرئيسي ديال الأتمتة يقدر يبيّن لوحة Textual بألوان كحلية وبنفسجية ومرجانية. ثبّت تبعيات Python ديالها مرة وحدة:

python -m pip install -r requirements-textual.txt

إلا كان Python مثبت فمسار غير عادي، عيّن ATF_PYTHON للمسار الكامل ديال python.exe.

تشغيل البوت

بدا القائمة التفاعلية بهاد الأمر:

npm start

القائمة كتوفّر مسارات العمل التالية:

[1] تشغيل BOT
[2] تسجيل الحسابات بكود الإحالة
[3] تبديل محفظة TON
[4] فحص إحصائيات الحساب
[5] سحب ATF
[0] خروج

تشغيل الأتمتة الرئيسية

اختار الخيار 1 باش تبدا عمال Node.js مع لوحة Textual. اللوحة كتبيّن أسماء مستخدمي Telegram، والمستويات، وATF المستخرج، وممتلكات ATF، والمكافآت المعلقة، وحالة المحفظة، وحالة التعدين، والمطالبات بالمهام، والعد التنازلي للمهام، ونتائج الإحالات، وتفاصيل Team Wallet، والاتصالات، وملخصات الدورات.

من بين أدوات التحكم المفيدة فاللوحة:

  • q: يوقف الخدمة بشكل سلس ويخرج.
  • p: يوقف العمال مؤقتاً أو يعاود تشغيلهم.
  • r: يحدّث إحصائيات جميع الحسابات بالتوازي.
  • c: يفرّغ لوحة السجل.
  • PgUp وPgDn: كيتنقل فالسجلات.
  • g وShift+G: كيمشي لبداية السجل أو لنهايتو.

اللوحة كتحدّث حالة الحسابات تلقائياً حسب dashboard_refresh_interval_minutes، والقيمة الافتراضية ديالو هي 10 دقايق. باش تشغلها مباشرة، استعمل:

npm run dashboard

باش تستعمل سجلات التيرمينال العادية بلا Textual، شغّل:

npm run start:run

هاد الأمر هو حتى نقطة الدخول المناسبة للجدولة والعمليات غير التفاعلية.

كيفاش كيخدم إعداد محفظة TON

من بعد ما كيدخل الحساب، كيتحقق البوت من حقلي خادم ATF wallet_address وwallet_verified. إلا ما كانت حتى محفظة موثقة، كيتبع هاد التسلسل:

  1. كيصايب محفظة TON v4r2 ديال الشبكة الرئيسية.
  2. كيخزّن العنوان ديالها، والعبارة السرية المكوّنة من 24 كلمة، والمفتاح الخاص ديالها مباشرة فـ wallets-accounts.json.
  3. كيطلب الحمولة الرسمية ديال TON Proof من ATF.
  4. كيوقّع الإثبات ديال نطاق ATF WebApp.
  5. كيسيفط الإثبات لـ sync_wallet.
  6. كيكمّل للسؤال الأمني والتعدين غير من بعد ما كتنجح عملية التحقق.

سجل المحفظة كيتكتب قبل ما يبدا التحقق. وبالتالي، الرد المؤقت busy ولا الحساب المؤجل ما كيخليش المحفظة الجديدة تضيع.

إلى رجّع ATF الرد busy ولا رد مخزّن/مزال عليه التكرار، والمحفظة باقية ما متحقّقاش، العملية الرئيسية كتعيد المحاولة مرة وحدة من بعد wallet_busy_retry_seconds، اللي القيمة الافتراضية ديالو هي 15 ثانية. إلا بقى الحساب مشغول، كيتنقل لخدمة ديال المحافظ باش تقدر العملية الرئيسية تكمل.

حتى لـ wallet_worker_concurrency ديال مهام المحافظ كيخدمو بالتوازي، والقيمة الافتراضية هي 10. الحسابات الزايدة كيدخلو لطابور FIFO. غير خدمة وحدة ديال المحفظة، نشيطة ولا فـ الطابور، مسموح بها لكل جلسة.

المحفظة اللي كتتصايب هي عنوان محفظة حقيقي، ولكن ما كتتنشرش فالسلسلة حتى كتستعمل فمعاملة على السلسلة. خزّن wallets-accounts.json بأمان ودير ليه نسخة احتياطية بعناية. أي واحد عندو هاد الملف يقدر يتحكم فالمحافظ.

السجلات القديمة اللي فيها encrypted_secrets كيتحوّلو للصيغة النصية العادية ملي البوت كيفتحهم أول مرة. كلمة المرور القديمة WALLET_KEYSTORE_PASSWORD مطلوبة غير فهاد التحويل.

إعداد التسجيل بالإحالة

زيد كود الإحالة فـ config.json ملي بغيتي الخيار 2 يسجّل الحسابات الجديدة:

{
  "referral_code": "610911604"
}

لكل جلسة ما تعالجتش من قبل بهاد الكود، البوت كينادي على Telegram messages.StartBot، كيفتح WebView بنفس معامل البداية، وكيسيفط ref_code أثناء تسجيل الدخول لـ ATF. النتيجة الناجحة كتتسجّل على شكل hash فـ .state/referrals.json، وهادشي كيمنع تكرار نفس عملية StartBot فكل دورة.

وضع الإحالة كيتكلف غير بالتسجيل بالإحالة. إنشاء المحافظ وتخزينها كيبقاو جزء من الأتمتة الرئيسية تحت الخيار 1. الحسابات الموجودة غالباً ما تقدرش تبدّل المُحيل اللي تسجّل من قبل عند السيرفر.

شغّل تسجيل الإحالة مباشرة بلا القائمة التفاعلية بهاد الأمر:

npm run register-referral

استعمال MultiBot مع Turnstile

إلى توصّل حساب جديد بتحدي Cloudflare Turnstile، البوت يقدر يجيب site_key الرسمي من ATF ويطلب token من MultiBot. زيد مفتاح API ديالو لـ .env:

MULTIBOT_API_KEY=your_api_key

بروكسيات الحسابات ما كيتسيفطوش لـ MultiBot افتراضياً. إلى كان الحل خاصو يستعمل نفس عنوان IP ديال البروكسي، فعّل:

MULTIBOT_USE_ACCOUNT_PROXY=1
تفعيل هاد الإعداد كيسيفط عنوان بروكسي الحساب وبيانات الدخول ديالو لـ MultiBot. خذ بعين الاعتبار هاد الإفشاء قبل ما تستعمل الخيار.

تشغيل محلّل Turnstile المحلي

المحلّل المحلي المرفق كيربط غير مع 127.0.0.1:8000. فـ Windows، نصّب Python 3 ووجد المحلّل من جذر المشروع:

py -3 -m venv local-solver\.venv
local-solver\.venv\Scripts\python.exe -m pip install -r local-solver\requirements.txt
local-solver\.venv\Scripts\python.exe -m camoufox fetch
cd local-solver
.venv\Scripts\python.exe api_server.py --yes

خلي داك الطرفية محلولة. فطرفية أخرى، شغّل البوت، اختار الخيار 2، ومن بعد اختار المحلّل المحلي. للتشغيل بلا تفاعل، دير الإعدادات التالية:

TURNSTILE_SOLVER=local
LOCAL_TURNSTILE_SOLVER_URL=http://127.0.0.1:8000

تطبيق إعدادات خاصة بكل حساب

نسخ account-overrides.example.json لـ account-overrides.json ملي كتحتاج جلسات معيّنة لإعدادات مختلفة. مثال:

{
  "account1.session": {
    "enabled": true,
    "proxy": "http://username:password@127.0.0.1:8080",
    "ready_task_ids": ["telegram_join"]
  }
}
  • enabled كيفعّل الجلسة ولا كيوقّفها.
  • proxy كيحدّد بروكسي HTTP ولا HTTPS لطلبات ATF. اتصال Telegram MTProto كيبقى مباشر.
  • ready_task_ids كيحدّد المهام اللي كتدار مرة وحدة، واللي تكملات فعلاً يدوياً، ودابا يقدر البوت يطالب بها.

ملف الإعدادات الخاصة، والبروكسيات، وملف البيئة، والذاكرة المؤقتة، والحالة، وملفات الجلسات كاملين متجاهلين من طرف Git.

إعداد المهام الديناميكية

ATF ما كيوفّرش endpoint ديال لائحة المهام. عوض ذلك، الواجهة الأمامية ديالو كتضمّن tasksConfig كـ JavaScript مضمّن فـ index.html. البوت كينزّل داك الصفحة وكيحلّل شجرة الصياغة المجردة ديالها بـ Acorn، بلا ما ينفّذ الكود. كيستخرج غير معرّفات المهام، والعناوين، والمكافآت، والروابط، وفترات الانتظار، والمدد الدنيا، وحالة المراجعة اليدوية.

إلى ما قدرش يتحمّل الصفحة، البوت كيستعمل آخر cache. وإلى ما كانت لا الواجهة الأمامية لا cache متوفرة، المطالبة بالمهام كتتعطّل فداك الدورة بلا ما يستعمل fallback ثابت.

حدّد وضع المهام فـ config.json بواحد من هاد القيم:

  • off: ما يقراش المهام وما يعالجهاش.
  • report: يعرض المهام المتوفرة بلا ما يبداها ولا يطالب بها.
  • claim_ready: يسجّل نقرات الروابط بـ start_task، ويبدا المهام المؤهلة، وينتظر مدة minSeconds ديال كل مهمة بالتوازي، ويطالب بالمهام ملي تولّي واجدة.

المهام اللي مذكورين فـ ready_task_ids كيدخلو لطابور المطالبة بلا ما يعاودو يتشغلو. من بعد تسجيل الدخول الأولي بالتتابع، كل حساب كياخد عامل مهام مستقل. العامل كيبقى ناعس حتى تسالي مدة الانتظار ديال داك الحساب، كيعيد تحميل حالة السيرفر، كيعالج المهام الجاهزة، وكيبرمج التشغيل الجاي انطلاقاً من آخر جواب.

إلا ما قدراتش مهمة جاهزة تبدا ولا تْطالب، المحاولات المعاودة كيتحكمو فيها task_ready_retry_seconds، والقيمة الافتراضية ديالو هي 60 ثانية. هاد الشي كيمنع حلقة إعادة المحاولة السريعة. الإعداد loop_interval_hours كيتطبق غير على دورات المطالبة بالتعدين، وماشي على جدولة المهام.

بدّل محفظة TON بأمان

اختار الخيار 3، ولا شغّل npm run replace-wallets من طرفية تفاعلية، باش تسكاني السيشنات على المحافظ اللي يمكن تحتاج التبديل. الحسابات اللي فيها من قبل mnemonic ومفتاح خاص صالحين فـ wallets-accounts.json كيتخطاو.

بالنسبة للمحافظ الموثقة اللي ما فيهاش الأسرار محلياً، البوت ما يقدرش يعرف واش المحفظة جاية من تثبيت قديم للبوت وضاعت النسخة الاحتياطية ديالو، ولا من محفظة خارجية. لذلك كيبين اسم المستخدم والعنوان مخبي جزئياً وكيطلب التأكيد لكل حساب:

  • دخل y باش تبدّل المحفظة.
  • ضغط على Enter ولا n باش تتخطاها.
  • دخل q باش تلغي الفحص اللي باقي.

من بعد الموافقة، المحفظة الجديدة والـ mnemonic كيتحفظو قبل ما يتحدّث ATF بشكل ذري عبر sync_wallet وTON Proof. الأصول الموجودة فالسلسلة فالمحفظة القديمة ما كيتنقلوش. التبديلات اللي مشغولة كيتخزنو بحالة replacement_pending وكيعاودو يتجربو من طرف حتى خمسة ديال العمال من بعد الفحص. التبديلات اللي تقطعات يمكن تكملها بتشغيل الخيار 3 مرة أخرى.

دير تدقيق لإحصائيات الحسابات

الخيار 4، ولا npm run stats، كيفتح لوحة تدقيق للقراءة فقط. كيدير تسجيل دخول جديد، كينادي على sync_wallet، وكيقرا get_withdraw_history. التزامن كيتحكم فيه stats_worker_concurrency وكيوقف عند خمسة ديال العمال.

لوحة التحكم كتعرض أسماء المستخدمين، عناوين المحافظ، رصيد ATF، الأرصدة المستخرجة، حالة الحظر، نقطة المخاطر، حالة الشراء المؤهل من DEX، السحوبات المعلقة، آخر حالة للسحب، وFRAUD MASK من masked_auto_fraud. حالات السحب كتشمل NONE وPENDING وAPPROVED وKYC/VERIFY وFAILED وUNAVAILABLE. حالة KYC وقناع الاحتيال إشارتان منفصلتان.

ضغط على r باش تعاود التدقيق، ولا q باش تخرج.

سحب ATF

الخيار 5 كيعالج الحسابات بالتتابع وكيطلب تأكيد واحد قبل البداية، حيث السيرفر كيفرض 70 ATF على كل طلب سحب.

لكل حساب، البوت كيدير:

  1. كيسجل الدخول بسيشن جديدة وكيقرا mined_balance وpending_reward.
  2. كيطالب بأي مكافأة معلقة.
  3. كيسجل الدخول مرة أخرى باش يحدّث الرصيد المستخرج.
  4. كيتخطى الحساب إلا كان الرصيد ديالو أقل من 500 ATF ولا المحفظة ديالو ما موثّقاش.
  5. كيقرّب كامل الرصيد المستخرج المؤهل للأسفل لأربع خانات عشرية.
  6. كيحل CAPTCHA بالصورة وكيبعث طلب السحب.
  7. كيقرا سجل السحوبات وكيبلغ على آخر حالة متاحة.

زيد مفتاح 2Captcha فـ .env لسولفر ImageToTextTask:

TWOCAPTCHA_API_KEY=your_api_key

البوت كيطبق التذبذب الرسمي ديال الواجهة الأمامية، من 1.2 حتى لجوج ثواني، قبل الإرسال. الأجوبة الفاشلة ولا المرفوضة ديال CAPTCHA كتخلي البوت يطلب تحدي جديد، حتى للحد الأقل بين withdraw_captcha_max_attempts، والحد الأقصى ديالو هو ثلاثة، وattempts_left ديال السيرفر.

جواب retry_after_seconds، ولا قفل السحب، ولا استنفاد محاولات السيرفر كيوقف إعادة المحاولات لهاد الحساب. شغّل السحب مباشرة بهاد الأمر:

npm run withdraw

استعمل البروكسيات للسحوبات

إلا كان proxy.txt ولا proxies.txt فيه بروكسيات، وضع السحب كينشئ مجموعة فريدة للدفعة كاملة. كل بروكسي يمكن يتختار غير مرة وحدة، حتى إلا فشل، وما كيتعاودش يتخصص لحساب آخر فهاد الدفعة.

خطأ فالشبكة أثناء تسجيل الدخول، أو المطالبة بالمكافأة، أو تحديث الرصيد، أو جلب CAPTCHA، أو الإرسال، أو جلب السجل، كينقل الحساب للبروكسي الصحي التالي اللي ما تستعملش. ملي كتكون مجموعة بروكسيات موجودة، السحب ما كيرجعش بصمت لعنوان IP المباشر. معرّفات طلب المطالبة والسحب كيبقاو كيف ما هما أثناء التبديل باش ينقص خطر تكرار العمليات.

وفّر على الأقل بروكسي فريد واحد لكل حساب، وزيد بروكسيات إضافية لإعادة المحاولات. إلا سالات المجموعة، الحساب الحالي كيفشل والمعالجة كتكمل بالحساب اللي من بعد.

نصائح متقدمة للموثوقية والأمان

  • خلي wallets-accounts.json خارج الأماكن المشتركة ولا المتزامنة، إلا كان التخزين محمي بشكل مناسب.
  • دير نسخة احتياطية آمنة لأسرار المحافظ قبل تبديل المحافظ ولا نقل التثبيت.
  • استعمل ready_task_ids غير للمهام اللي تكملات فعلاً يدوياً.
  • تذكّر أن بروكسي الحساب كيأثر على طلبات ATF عبر HTTP، وماشي على اتصال Telegram MTProto المباشر.
  • كوّن عدد كافي من بروكسيات السحب المختلفة، حيث البروكسيات المستعملة والفاشلة ما كيتعاودوش يستعملو داخل نفس الدفعة.
  • استعمل Ctrl+C للإغلاق بشكل سلس. البوت كينظف الاتصالات وما كيبداش حساب آخر من بعد ما يتوصل بإشارة الإغلاق.
  • راجع الملخص الخاص بكل حساب، اللي كيفرّق بين النتائج success وpartial وfailed.

المشروع كيحدّ من الوجهات ديال API وWebApp باستعمال allowed_hosts وكيطلب HTTPS. ما كيتبعش تحويلات HTTP أوتوماتيكياً. الردود HTTP 401 و403 ما كيتعاودوش، بينما الردود HTTP 429 و5xx كتستعمل التراجع الأُسّي مع إضافة عشوائية.

معرّفات الطلبات كتبقى ثابتة فالمحاولات المتكررة، باش يقدر السيرفر يتعامل مع الإجراءات المكررة بشكل idempotent. ردود الأعمال بحال فترات الانتظار وalready claimed ما كتعتبرش أعطال فالشبكة. البروكسيات اللي كتفشل بشكل متكرر أثناء تسجيل الدخول عبر ATF كيتحطّو مؤقتاً فالعزل، والبوت ما كيتحوّلش بصمت للـIP المباشر.

رموز الجلسات، وبيانات التهيئة، والهاشات، وكلمات سر البروكسيات كيتحيدو من السجلات. معرّفات الأجهزة الثابتة كتتخزن لكل معرّف Telegram فـ.state/device-ids.json. البوت حتى هو كيعيد تحميل config.json، والجلسات، والبروكسيات، وتجاوزات الحسابات فكل دورة.

ملي التعدين كيحتاج سؤال أمني، العمليات الحسابية الأساسية المعروفة كيتحلّو أوتوماتيكياً. الصيغ المجهولة كترجع للإدخال اليدوي فالتيرمينال.

التحقق من التثبيت

شغّل فحوصات واختبارات المشروع من بعد الإعداد أو تغييرات الإعدادات:

npm run check
npm test

الخلاصة

ATF Bot Automation v2 كيجمع بين المصادقة الجديدة عبر Telegram WebView، وأتمتة ATF متعددة الحسابات، والتحقق من محافظ TON، والمهام الديناميكية، والإحالات، وتدقيق الحسابات، والسحوبات المراقَبة. بدا بجلسات Telethon صالحة وبيانات اعتماد Telegram محمية، وتحقق من سير العمل الرئيسي باستعمال عدد قليل من الحسابات، واعتبر wallets-accounts.json سراً عالي القيمة حيث إنه كيحتوي على الولوج المباشر لكل محفظة تم إنشاؤها.