فرم ایجاد ربات در اپلیکیشن کوچک BotFather دارای یک فیلد دوم برای نام شد. این فیلد اختیاری است، به صورت جداگانه بررسی می‌شود و همراه با سایر اطلاعات فرم به سرور ارسال می‌شود. این تغییر هنوز فقط در یکی از چهار سرور آزمایشی (stand) قرار دارد.

کد اضافه شده برای بررسی نام دوم در فایل botfather.js
این بخش مهم: بررسی نام دوم به صورت جداگانه با همان پیشنهادهایی که برای نام اول وجود دارد.

تغییرات در کد

botfather.js این اپلیکیشن وبی است که در آن ربات‌ها توسط کاربران تولید می‌شوند و تاکنون توسط آن تکنولوژی‌هایی مانند توکن، دستورات و پروفایل تنظیم می‌شوند. در این فایل ۴۶ خط جدید اضافه شده است.

این فیلد به نام additional_username نامیده می‌شود و وضعیت آن در هنگام بارگذاری صفحه به «معتبر» تنظیم می‌شود، به این معنی که فیلد خالی مانع از ادامه فرآیند نمی‌شود. به این فیلد یک تایمر جداگانه نیز متصل شده است: تغییر در محتوای فیلد باعث ارسال بررسی به سرور پس از ۴۰۰ میلی‌ثانیه می‌شود، و خروج از فیلد فوراً باعث بررسی می‌شود تا انتظار نداشته باشیم.

بررسی نام دوم با استفاده از متد checkBotAdditionalUsername انجام می‌شود و پاسخ سرور به سه حالت تقسیم می‌شود: «در حال بررسی»، «آزاد» و خطایی. متن خطا از سمت سرور دریافت می‌شود و به صورت مستقیم نمایش داده می‌شود و در سمت کلاینت جمع‌آوری نمی‌شود. ارسال فرم تنها در صورتی متوقف می‌شود که نام وارد شده خالی نباشد و بررسی نشده باشد، و در متد createBot یک پارامتر جدید نیز اضافه شده است که شامل این نام دوم است.

هیچ خط جدیدی در رابط کاربری برای این فیلد اضافه نشده است: پیشنهادها و توضیحات از همان کلیدهایی استفاده می‌شوند که برای نام اول به کار رفته‌اند.

هزینه برای نام دوم در کد مشخص نیست. پیشنهادهای آن همانند نام اول، که رایگان است، است: «در حال بررسی» و «آزاد». در فایل هیچ کلمه‌ای درباره Fragment، ستاره‌ها یا خرید وجود ندارد. اگر هزینه‌ای وجود داشته باشد، این اطلاعات در سرور ذخیره می‌شود و کلاینت تنها درخواست می‌کند که آیا نام آزاد است یا خیر و پاسخ را به صورت مستقیم نمایش می‌دهد.

چرا این تغییر مکانیک جدیدی نیست

Telegram از اینکه یک حساب می‌تواند چندین نام داشته باشد، از سال‌ها پیش آگاه است. در ساختار API، نوعی نام با فلگ‌های «قابل ویرایش» و «فعال» وجود دارد — این ساختار برای نام‌های جمع‌آوری‌شده که در Fragment فروخته می‌شوند استفاده می‌شود و همینطور نام‌های اضافی کانال‌ها نیز به همین شکل هستند.

در اپلیکیشن کوچک BotFather، صفحه‌ای برای لیست ربات‌ها و اضافه کردن نام به ربات‌های آماده از قبل وجود داشت: یک صفحه جداگانه و متدی برای افزودن نام به رباتی که قبلاً ایجاد شده بود. تغییر جدید تنها این است که حالا می‌توان نام دوم را هم در همان لحظه ایجاد ربات وارد کرد، بدون اینکه نیاز باشد به صورت جداگانه برای آن برویم.

دلیل این تغییر در کد مشخص نیست. در فرم هیچ توضیحی برای این فیلد، هیچ پیشنهادی یا شرطی برای نمایش آن وجود ندارد: این بخش از فرم در قالبی است که توسط سرور ارسال می‌شود و این فایل به دلیل محدودیت‌های احراز هویت اپلیکیشن کوچک دسترسی ندارد.

چرا هنوز هیچ کس این فیلد را ندیده است

استاتیک Telegram از چندین سرور آزمایشی (stand) توزیع می‌شود و این سرورها هم‌زمان نیستند: اینها شاخه‌های مجزا هستند، نه کپی‌هایی از هم. نام دوم فقط در یکی از این سرورها وجود دارد — فایل در آن سرور ۹۵,۱۷۲ بایت حجم دارد. اپلیکیشن کاربردی BotFather که از طریق تلگرام باز می‌شود، فایل را از آدرس webappinternal.telegram.org دریافت می‌کند و در آنجا نسخه قدیمی‌تر با حجم ۹۳,۴۶۳ بایت وجود دارد: فرم ایجاد ربات در آن سه فیلد دارد — نام ربات، توضیحات و username.

در کد کاربردی، متد جدید نیست: این متد قبلاً توسط صفحه افزودن نام به ربات آماده فراخوانی می‌شد و همراه با شماره ربات ارسال می‌شد. اما سرور کاربردی این متد را اجرا نمی‌کند. با شماره ربات خود، پاسخ Method not found می‌دهد، همچون یک متد تصوری، و بدون شماره ربات، پاسخ Unauthorized می‌دهد. بخش سروری برای نام دوم ربات هم در هنگام ایجاد و هم در ربات‌های آماده وجود ندارد.

مشاهده خود فیلد هنوز در هیچ جایی ممکن نیست: فایل‌های سرور آزمایشی به هر کسی دسترسی دارند، اما هر آدرسی از فرم اصلی به دلیل محدودیت احراز هویت اپلیکیشن کوچک بسته است و پاسخ ۴۰۳ می‌دهد. صفحه بازیابی‌شده برای BotFather وجود ندارد و در صفحه ربات در t.me هیچ دکمه‌ای برای شروع اپلیکیشن وجود ندارد.

در مکالمه با @BotFather، فرم اطلاعات همچنان فقط یک نام را درخواست می‌کند.