Skip to main content

Life-Hack #8: Многоязычный бот

Данный Life-Hack позволит вам создать многоязычный бот со сменой языка понажатию START.

Life-Hack - предполагает использование имеющегося функционала не очевидными и достаточно хитроумными способами, создавая в своём боте функции не заложенные разработчиками конструктора изначально.

В данном разделе мы публикуем различные варианты и готовые решения того, что может быть создано с использованием возможностей, уже имеющихся в конструкторе @MenuBuilderBot. При создании подобных руководств предполагается, что вы, в той или иной степени, уже знакомы с основными функциями конструктора и базовыми механизмами работы с ним. Если в процессе изучения представленного материала ваших базовых знаний окажется не достаточно, советуем изучить основы прежде чем продолжать.

 

Приобретение функционала

 

Весь функционал приобретается В ВАШЕМ БОТЕ, для этого перейдите в свой бот:
☞ 🔐Админ | 🧩Расширения

ВАЖНО: Приобретение функционала для бота доступно только Создателю (хозяину) бота. Админы покупать функционал - НЕ МОГУТ!

 

Вам понадобится:

1. Переменные - 1 штука
☞ 🔐Админ | 🧩Расширения | 📂Переменные

2. Action-ы - 4 штуки
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

3. (Не обязательно) Пакет Токенов Функций
☞ 🔐Админ | 🧩Расширения | 📂Action-ы

4. Условия для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

5. Макросы и выражения для кнопок
☞ 🔐Админ | 🧩Расширения | 📂Кнопки

6. Создание своих кнопок навигации
☞ 🔐Админ | 🧩Расширения | 📂Кастомизация

 

❖ Создание двуязычного меню


Как это работает

В главном меню создаются две кнопки с языками, каждая из которых, при нажатии, присваивает переменной своё число. Число присваиваемое кнопкой является идентификатором выбранного языка. В боте будет скрыта Системная Навигация, а команды кнопок самодельной навигации содержа в себе макрос с идентификатором выбранного языка, будут перемещать пользователя внутри соответствующих меню. Смена языка происходит по нажатию START.

1. Создаём переменные

Переменная (Числовая) - Переходим в вашем боте:
☞ 🔐Админ | 🗄Переменные | 📙Времени | ➕Создать Переменную
Имя переменной: lng, (можете использовать свое).

2. Создаём кнопки языков

Для демонстрации подхода, кнопки меню для разных языков мы создадим в ручную. Когда последовательность создания и механизм их работы станут вам понятны, создавать лучше одну ветку полностью и затем копировать ее при помощи функции копирования (описано ниже).

 

2.1 Английская ветка меню

В Главном Меню переходим в «Редактор Кнопок» и создаем кнопку для английской ветки меню с командой и Action-ом:

● Название: English
● Команда: /home0
Опция команды: Переход по Команде
● Pre-Action: Чисел
Переменная: lng
Тип операции: Задать Значение
Значение: 0
Условие: {lng != 0}

Перейдя в «Редактор Постов» добавляем кнопке сообщение:
● Сообщение кнопки: "This is English menu".

 

2.2 Русская ветка меню

В Главном Меню переходим в «Редактор Кнопок» и создаем кнопку для русской ветки меню с командой и Action-ом:

● Название: Русский
● Команда: /home1
Опция команды: Переход по Команде
● Pre-Action: Чисел
Переменная: lng
Тип операции: Задать Значение
Значение: 1
Условие: {lng != 1}

Перейдя в «Редактор Постов» добавляем кнопке сообщение:
● Сообщение кнопки: "Это Русское меню".

 

3. Создаем навигацию

3.1 Отключение системной навигации

Прежде чем создавать свою собственную навигацию нам необходимо отключить системные кнопки навигации.
Для отключения переходим:
☞ 🔐Админ | 🎚Кастомизация Бота | Скрыть Навигацию

3.1.1 Настройка копирования (не обязательно)

Не выходя из админки (если вышли то зайдите снова) переходим в настройки и включаем копирование кнопок.
Если у вас отсутствуют «Дополнительные Токены Функций» (с возобновляемыми токенами эта функция не работает), то данную настройку можно не включать.

3.2 Навигация в Английском меню

После отключения системной, нам нужно создать собственную навигацию в каждом из разделов меню. Возвращаемся в Английское меню при включенном «Редакторе Кнопок». Для наглядности и демонстрации создания кастомной навигации, создадим Кнопки внутри английского меню.
● Название: Button 1
● Название: Button 2

Это будут кнопки "Главного Меню" для английской ветки вашего бота.

Внутри кнопки «Button 1» создаем подменю с двумя кнопками:
● Название: Button 1.1
● Название: Main Menu

Кнопка с названием «Main Menu» при нажатии должна переносить пользователя в Главное Меню - английской ветки. Добавляем ей Action команды:

● Pre-Action: Команд
Команда: /home%lng%

Как вы видите в команде присутствует макрос переменной языка (%lng%). При обработке команды на его место будет подставлено значение из этой переменной, которое соответствует выбранному пользователем языку.

Данный макрос использован для демонстрации подхода и облегчения копирования. Если вы не используете копирование в вашем Боте, то в команде можно использовать идентификатор языка напрямую. Поскольку данная кнопка нужна для навигации по английскому меню, то команда без макроса будет выглядеть так:
/home0
Ноль - "0" это значение числовой переменной по умолчанию и в нашем боте оно соответствует английскому языку.

Подменю для кнопки «Button2» создается аналогично при необходимости.

3.3 Навигация в Русском меню

Если вы подключали копирование в своём Боте то копируем созданную кнопку навигации Английского меню. И не выходя из редактора переходим в русское меню. Вставляем кнопку навигации внутри «Кнопка 1».

Меняем имя вставленной кнопки на: «Главное Меню». Action Команд при копировании остаётся тем же поскольку значение переменной %lng% у пользователя в Русской ветке меню, будет соответствовать Русскому языку.

Собственно, макрос переменной языка в команде и был использован для удобства копирования кнопок навигации.

Если же вы не использовали копирование то присвойте Action-у Команд, команду:
/home1
Что будет соответствовать Русскому меню.

 

❖ Переключение языков меню

 

Переключение кнопками по START

В описанном нами выше подходе к реализации двуязычного бота, для переключения языка пользователю нужно будет перезапустить бот командой START. Это перенесёт его в Системное «Главное Меню» в котором содержатся кнопки выбора языка.

У вас может быть своё видение дизайна интерфейса смены языка,поэтому опишем известные нам альтернативные способы.

 

Переключение командами в Главном Меню

Если вы не хотите показывать кнопки выбора языка после нажатия START, а например предпочитаете предоставить юзеру для этого сообщение с командами. То можно в "Сообщении для СТАРТ" указать команды которые вы присвоили кнопкам языков (в примере выше это /home0 и /home1) и позволить юзерам переходить в соответствующее меню - по нажатию команд.

 

Переключение инлайн кнопками

По понятным причинам, вам может не понравится внешний вид команд с цифрами вместо языков. В этом случае вы так же можете создать "Сообщении для СТАРТ" с  предложением выбора языка, однако вместо показав команд непосредственно в тексте сообщения вы можете использовать инлайн кнопки в режиме команд. Кнопкам можно задать юбое название, а команды при этом не будут видны.

 

Названия языков в командах

Если ни один из представленных выше способов вам не подходить и вам всё равно хочется переключать языки командами, в этом случае язык можно сохранять их в текстовой переменной - например в виде: "en" и "ru". В этом случае команды для переключения языков будут выглядеть лучше.

Использование текстовых переменных для такого рода механик, не самое рациональная идея с точки зрения оптимизации, однако решет вопрос внешнего вида команд выбора языка.

 

Отдельное меню настроек с переключением языков

Переключение языков в Главном Меню после нажатия START является необходимым для новых пользователей - поэтому полностью обойтись без него не получится. Однако, что бы не заставлять ваших пользователей перезапускать бот для смены языка (поиск такого способа переключения, в некоторых случаях, может вызывать затруднения) его можно и продублировать в каком-либо разделе меню вашего бота где юзер сможет легко его найти. Для этого в нужном разделе можно создать кнопку "Language" и поместить кнопки навигации с Action-ами команд для каждого языка, либо ссобщение с командами или инлайн кнопками как описано выше.