عاجلاً أم آجلاً ، في حياة مطور برامج telegram bot ، هناك فهم واضح بأن
كل شيء ضروري بشكل
مميت لإنشاء قوائم أكثر أو أقل مكتملة للروبوتات.
منذ:
أ) أنها مريحة
ب) مريحة للتخصيص *
لا أحد ، بالطبع ، ألغى "/ الفريق" ، ولكن لا يزال
جوهر المهمة
للوهلة الأولى - المهمة بسيطة ، ولكن لا يهم.
المشكلة كلها في
API نفسها
، أي في كائن التحديث .
مزيد من التفاصيل: باستخدام طريقة getUpdate - يمكنك الحصول على كائن Update ، إنه منطقي! لذلك ، يحتوي هذا الكائن على الكثير من الأشياء المفيدة ، بما في ذلك معلومات حول الرسالة ، ولكن حول آخر واحد فقط. هذا هو الصيد
استنادًا إلى ما سبق ، يتبع الاستنتاج غير الممتع - معالجة الطلبات من جانب webhook ، دون تخزين بيانات إضافية ، لا تتألق بالنسبة لنا ...
حسنا ، نحن نغسل أنفسنا ونبدأ العمل.
كتابة كود التعلم
في ممارستها ، خاصة بالنسبة لهذه المهمة ، تم تطوير فئة صغيرة.
NEW! الآن على
جيثب )
إذا لم تتمكن من الانتظار ، فيمكنك الانتقال إلى المستودع على الفور ، فهناك رحلة.
سوف تستمر
يقوم الفصل بإنشاء
طلب طلبحول البنية: يتم التنقل في القائمة عن طريق إنشاء طلب لطلب . يمكنك إنشائه في المكان المناسب ، وعند اتصال المستخدم التالي ، بام ، وهو في "القائمة".
أوافق ، المفهوم ، بعد ذلك ، لم يصبح مفهومًا ... سأحاول التوضيح. لفهم ، تحتاج إلى الانتقال إلى مستوى معين من التجريد ، أي تخيل أن بنية الروبوت بالكامل تتكون من قوائم مختلفة ، حيث يقوم المستخدم بالتبديل (يمكنك رسم تشابه مع نشاط android). عندما يتم تنشيط الروبوت ، يكون المستخدم في "القائمة الأولية" ، والتي يمكن أن يذهب منها ، على سبيل المثال ، في "الإعدادات" ، "المعلومات" ، إلخ.

وهكذا ، يتغير هيكل الروبوت قليلاً ، باختصار:
أولاً ، تحقق من وجود الطلب:
نعم) قم بتشغيل معالج الطلب
لا) نبقى في "القائمة الأولية" ، نحن نتحقق من استجابة المستخدم بالأوامر المتاحة.
* هذه نسخة مبسطة للغاية ، ولهذا السبب يقرع الشريط. مع الأمثلة سوف تصبح أسهل.
دعنا نستمر ..؟
لنبدأ التثبيت. سوف نستخدم برنامج
compser لتثبيته (قم بإنشاء "composer.json" ، ثم انسخ الأسطر الموجودة أدناه ، اقرأ المزيد في off.docs)
{ "require" : { "s0d3s/tg-long-req": ">=1" } }
والاتصال
include_once('path/to/autoload.php'); use TgLongReq\TgLongReq;
أو الاتصال يدويًا (تنزيل إلى مجلد المشروع)
include_once('TgLongReq.php'); use TgLongReq\TgLongReq;
إنشاء كائن function SOMTH($tg_res, $long_req_obj, $tab_key){ echo "EveryForEveryone"; return; } $BOT_FUNC_ASSO_TAB = arrray("ECHO_SOMETHING" => "SOMTH");
تقديم طلب ، والتحقق من توافره وبدء المعالجة $tgreq -> ReqCreate('SOMTH');
المخفية والحصول على بيانات الوقتتوفير:
$tgreq -> SaveToTemp('HiHabr');
الاستعادة:
$tgreq -> GetFromTemp(false);
وظيفة النتيجةتجدر الإشارة إلى أن كل [باستثناء GetFromTemp () و GetError () و ReqCheck () والمنشئ] ، تقوم بإرجاع صفيف:
بقكل وظيفة [باستثناء GetFromTemp () و GetError () و ReqCheck () والمنشئ] تحدد خطأ في حالة الفشل ، والتي يمكن التحقق منها باستخدام:
$error_arr = $tgreq -> GetError();
كل تجمعوا ، اذهب!
سنفترض أنك على دراية تامة بتدوين روبوتات التلغراف ، إن لم يكن -٪
article ٪ ، اقرأ العنصر "
كتابة رمز bot " - أول رابط في Google حول موضوع ما ، يمكنك البحث عن نفسك ، والشيء الرئيسي هو معرفة كيفية إنشاء روبوت في tg نفسه ، والتهيئة له إلى الخادم الخاص بك. إذا كان هذا مثيرًا للاهتمام ، فسنكتب مقالًا حول كيفية تكوين خط بحث إلكتروني للعمل مع خادم محلي (~ جديد! حل لتجاوز "المشكلة" مع https).
سوف ندرك هذا المثال. نقسم المساحة إلى ملفين "botmain.php" (القائمة الرئيسية والمعالجة) و "varfunc.php" (طلب وظائف المعالجة). لسهولة المثال ، سوف نستخدم
telegram-bot-sdk (مشروع مصمم جيدًا ومناسب للمشاريع الصغيرة ، وذلك بفضل المنشئ ؛).
بشكل عام ،
سرد :
composer.json { "require" : { "irazasyed/telegram-bot-sdk": ">=3", "s0d3s/tg-long-req": ">=1", "php":">=7.1" } }
بعد ذلك ، في مجلد المشروع ، افتح وحدة التحكم و ...
>composer install ...
محدث : في إطار حبر ، يصبح الكود المصدري غير قابل للقراءة ، دون تحرير عالمي. لهذا السبب ، إذا كنت مهتمًا بالأمثلة ، أقترح عليك التبديل إلى جيثب.
الأصل |
نسخة مبسطة .
استنتاج
في النهاية ، لا أستطيع إلا أن أقول إن هذا ليس هو الحل الوحيد الممكن لهذه المشكلة ، ولكن من وجهة نظر المثالية بالنسبة لي هو المفضل.