حصل نموذج إنشاء البوت في تطبيق BotFather الصغير على حقل اسم ثانٍ. هذا الحقل اختياري، ويتم التحقق منه عبر طريقة منفصلة، ويُرسل إلى الخادم مع باقي بيانات الطلب. تُجرى هذه التعديلات حاليًا على أحد أربعة أجنحة توزيع في النظام.

الكود المُضاف للتحقق من الاسم الثاني في ملف botfather.js
القطعة نفسها: التحقق من الاسم الثاني عبر طريقة منفصلة، بنفس التلميحات المستخدمة في الحقل الأول.

ما الذي تغير في الكود

يُعد botfather.js نسخة الويب من BotFather، وهي تطبيق صغير يُستخدم لإنشاء رمز (توكن) للبوت، وتحديد أوامره وملفه الشخصي. وقد زُيدت عليه 46 سطرًا جديدًا.

يُسمى الحقل الجديد additional_username، ويُضبط علامة حالته عند تحميل الصفحة على "صالح" — أي أن الحقل الفارغ لا يُعيق عملية التسجيل. كما تم إضافة مؤقت تأخير خاص به: كل تغيير في الحقل يُفعّل عملية التحقق بعد 400 مللي ثانية، بينما عند مغادرة الحقل تُجرى التحقق فورًا دون انتظار.

يتم إرسال طلب التحقق إلى الخادم عبر طريقة تُسمى checkBotAdditionalUsername، ويتم تحليل الرد إلى ثلاث حالات: "جاري التحقق"، "متاح"، أو خطأ. لا يتم تجميع رسالة الخطأ على العميل، بل تُطبع كما وردت من الخادم. لا يُعطل إرسال النموذج إلا إذا كان الاسم غير فارغ وفشل في التحقق، كما تم إضافة معلمة إضافية إلى طريقة createBot لتمرير هذا الاسم.

لم يُضاف أي سطر جديد في واجهة المستخدم لهذا الحقل: تُستخدم نفس المفاتيح للتحذيرات التي تُستخدم في الحقل الأول.

من الكود لا يتضح ما إذا كان يجب دفع ثمن هذا الاسم الثاني. التلميحات التي تظهر له هي نفسها التي تظهر للاسم الأول المجاني — "جاري التحقق" و"متاح"، ولا يوجد أي ذكر لـ Fragment أو النجوم أو عملية شراء في الملف. لكن إن كانت هناك تكلفة، فهي تُخزن على الخادم فقط: العميل يسأل فقط إن كان الاسم متاحًا، ثم يعرض الرد كما هو.

لماذا لا يُعد هذا ميزة جديدة

يعرف بروتوكول تيليجرام منذ فترة طويلة إمكانية تخصيص أكثر من اسم لحساب واحد. في هيكل واجهة برمجة التطبيقات (API) يوجد نوع من الأسماء مُعدّ لتمييزه بعلامتين: "قابل للتعديل" و"نشط"، وهو ما يُستخدم في الأسماء التذكارية التي تُباع على Fragment، وكذلك في الأسماء الإضافية للقنوات.

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

السبب وراء هذه الميزة غير مذكور في الكود: لا يوجد وصف للحقل، ولا تلميحات، ولا شرط لعرضه. كل هذه العناصر تُولد من قبل الخادم عبر واجهة HTML، وهي مُغلقة بحماية تسجيل الدخول الخاصة بالتطبيق الصغير.

لماذا لا يزال أحد لا يراها

يُوزع محتوى تيليجرام الثابت من عدة أجنحة، وهذه الأجنحة غير متماسكة: فهي فروع مختلفة، وليس نسخًا متطابقة. الاسم الثاني موجود حاليًا فقط على أحد هذه الأجنحة — حيث يبلغ حجم الملف 95,172 بايت. أما التطبيق الصغير العامل الذي يُفتح من داخل تيليجرام، فيأخذ ملفه من webappinternal.telegram.org، حيث لا يزال يحتوي على النسخة القديمة بحجم 93,463 بايت: نموذج إنشاء البوت يحتوي على ثلاث حقول فقط — اسم البوت، الوصف، واسم المستخدم.

في الكود العامل، الطريقة ليست جديدة: فبالفعل يُستدعى من شاشة إضافة اسم لبوت جاهز، ويُرسل معه رقم البوت. لكن الخادم العامل لا ينفذ هذه الطريقة. عند إرسال رقم البوت الخاص، يُعيد الخادم رسالة "Method not found"، كما لو كانت طريقة مُخترعة، بينما بدون رقم يُعيد "Unauthorized". لا توجد حتى الآن أي جزء خادم مُعدّ لدعم الاسم الثاني سواء عند إنشاء البوت أو عند التعامل مع بوت جاهز.

لا يمكن رؤية الحقل نفسه حاليًا: تُعطي أجنحة التوزيع الملفات لأي أحد، لكن أي عنوان لنموذج التسجيل مُغلق بحماية تسجيل الدخول للتطبيق الصغير، ويُعيد رمز 403. لا توجد صفحة عامة مفتوحة لـ BotFather على الويب، ولا توجد أزرار لتشغيل التطبيق على صفحة البوت في t.me.

في المراسلة مع @BotFather نفسه، لا يزال النموذج يطلب اسمًا واحدًا فقط.