برقية - بوت | القائمة الكاملة

صورة

عاجلاً أم آجلاً ، في حياة مطور برامج 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 = new TgLongReq ( $usr_id, //(STR) -id  $BOT_FUNC_ASSO_TAB, //(ARRAY) $BOT_req_dir , //[OPT](STR) $tapi, //[OPT](ANY*) $result //[OPT](ANY**) ); // *  ,    $this->tg_api // **  ,      

تقديم طلب ، والتحقق من توافره وبدء المعالجة

 $tgreq -> ReqCreate('SOMTH');//  if($tgreq -> ReqCheck()){ // ,   ,       $tgreq -> ReqHand();// ,   } 

المخفية والحصول على بيانات الوقت

توفير:

 $tgreq -> SaveToTemp('HiHabr');//  ,    json- 

الاستعادة:

 $tgreq -> GetFromTemp(false);//  -    ,    // ,    SaveToTemp() 

وظيفة النتيجة

تجدر الإشارة إلى أن كل [باستثناء GetFromTemp () و GetError () و ReqCheck () والمنشئ] ، تقوم بإرجاع صفيف:

 /*$function_result = array( 'func_res' =>   'error' =>true,    'err_discript' => ,     ); */ 

بق

كل وظيفة [باستثناء GetFromTemp () و GetError () و ReqCheck () والمنشئ] تحدد خطأ في حالة الفشل ، والتي يمكن التحقق منها باستخدام:

 $error_arr = $tgreq -> GetError(); /*$error_arr = array( 'error' =>true,    'err_discript' => ,     ); */ 

كل تجمعوا ، اذهب!


سنفترض أنك على دراية تامة بتدوين روبوتات التلغراف ، إن لم يكن -٪ 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 ... 

محدث : في إطار حبر ، يصبح الكود المصدري غير قابل للقراءة ، دون تحرير عالمي. لهذا السبب ، إذا كنت مهتمًا بالأمثلة ، أقترح عليك التبديل إلى جيثب.

الأصل | نسخة مبسطة .

استنتاج


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

Source: https://habr.com/ru/post/ar459604/


All Articles