Открыть сервисСервис

Создание языков программирования для Telegram-ботов

Создание своего языка в Telegram — это разработка пользовательского формата общения или программирования, предназначенного для использования внутри мессенджера Telegram: от собственного эмодзи-алфавита и шифров до полноценных мини-языков для описания команд ботам и мини-приложений (Mini Apps). Практика реализуется средствами Telegram Bot API, платформой TDLib, инструментами MarkdownV2 и HTML-разметки, а также пользовательскими ботами и каналами.

Основные направления

Под «своим языком» в контексте Telegram обычно понимают один из четырёх вариантов:

  • Код или шифр для общения — замена букв на символы, эмодзи или цифры, используемая в чатах для сокрытия смысла сообщений.
  • Формат разметки текста — применение встроенных в Telegram средств (MarkdownV2, HTML) для оформления сообщений ботами.
  • DSL для бота — мини-язык команд или сценариев, который пользователь вводит боту, а бот транслирует его в действия.
  • Язык программирования с интерфейсом в Telegram — полноценный интерпретатор, запущенный как бот, принимающий код и возвращающий результат.

Шифр на основе эмодзи

Самый простой вариант — построить биекцию между кириллицей (или латиницей) и набором эмодзи. Реализация сводится к таблице соответствий, которую можно хранить в словаре Python:

``python cipher = {"а": "🍎", "б": "🐻", "в": "🌪"} ``

Такой шифр легко интегрировать в бота: пользователь отправляет строку эмодзи, бот прогоняет её через обратный словарь и присылает расшифрованный текст. Точная биекция требует, чтобы число символов алфавита не превышало число доступных эмодзи; для русского языка это 33 буквы, что легко покрывается эмодзи-набором.

Мини-язык команд для бота

Практический способ создать «свой язык» — разработать формализованный синтаксис, который бот разбирает и исполняет. Простейший пример — язык задач:

`` создай заметку покупки: молоко, хлеб удали заметку 3 покажи все ``

Разбор такого языка выполняется посредством регулярных выражений или, при усложнении грамматики, парсер-комбинаторов (например, библиотеки pyparsing, lark в Python). Для полноценного мини-языка определяются:

  1. Лексика — список ключевых слов и операторов.
  2. Грамматика — правила построения фраз (формально, в нотации EBNF).
  3. Семантика — что означает каждая конструкция и как она исполняется.

Бот выступает интерпретатором: получает строку от пользователя, строит синтаксическое дерево и выполняет соответствующие действия через Bot API (отправка сообщений, работа с Inline-кнопками, хранение состояния в SQLite или Redis).

Язык программирования внутри Telegram

Более амбициозный проект — развернуть интерпретатор собственного языка как Telegram-бота. Архитектура включает:

  • Фронтенд — сам бот, принимающий сообщения с кодом.
  • Парсер — модуль, преобразующий исходный текст в AST.
  • Интерпретатор — обход AST с выполнением операций.
  • Песочница — изоляция выполнения пользовательского кода (ограничение времени, памяти, запрет сетевых вызовов).

Для хостинга подходит любой VPS с Python, Node.js или Go; библиотека python-telegram-bot или aiogram позволяет обрабатывать апдейты асинхронно. Ограничение на длину сообщения в Telegram (4096 символов для текста) диктует компактность синтаксиса; для длинных программ удобно принимать файлы .txt или использовать редактор кода внутри Mini App на HTML/JavaScript.

Оформление сообщений: MarkdownV2 и HTML

Telegram Bot API поддерживает два формата разметки:

ФорматВозможностиОсобенности
MarkdownV2Жирный, курсив, подчёркнутый, зачёркнутый, моноширинный, ссылки, спойлерыТребует экранирования _*[]()~
HTML<b>, <i>, <code>, <pre>, <a>, <span class="tg-spoiler">Экранирование &<>"

Эти разметки не являются «своим языком» в строгом смысле, но позволяют создавать собственные визуальные стили сообщений, включая цветные заголовки через <blockquote expandable> и <tg-emoji>.

TDLib и кастомные клиенты

Для создания собственного языка на уровне клиента (например, автоматической трансляции текста при отправке) используется TDLib — официальная библиотека Telegram, доступная для C++, Java, Kotlin, Swift и Python. Она позволяет написать приложение, которое перехватывает исходящие сообщения, применяет пользовательскую трансформацию и отправляет результат. Официальные клиенты Telegram такой возможности не предоставляют, поэтому обходной путь — бот или кастомный клиент.

Мини-приложения (Mini Apps)

Платформа Telegram Mini Apps (на WebApp API) даёт возможность встроить в чат полноценное веб-приложение. Это подходит для визуальных языков: пользователь открывает Mini App, собирает блочную конструкцию или пишет код в редакторе, а бот по вебхуку получает результат. Mini Apps поддерживают интеграцию с платежами, хранилищем localStorage и данными Telegram-аккаунта.

Правовые ограничения

Создание и распространение шифрованных каналов связи в России регулируется законодательством: использование средств криптозащиты для передачи информации подлежит лицензированию в соответствии с ФЗ «О государственном регулировании деятельности в области криптографической защиты информации». Частное использование эмодзи-шифров формально не подпадает под это определение, но создание ботов с шифрованием сообщений для массового применения может потребовать правового анализа.

Примеры реализации

  • Emoji-боты — десятки открытых проектов на GitHub, реализующих преобразование текст ↔ эмодзи.
  • Wolfram Alpha Bot — пример бота, принимающего выражения на формальном языке и возвращающего вычисления.
  • CodeRunner-боты — интерпретаторы Python, JavaScript и других языков, работающие через Telegram.
  • @replbot — запуск кода в чате с возможностью совместного редактирования.

Источники:

  • Telegram Bot API Documentation
  • Telegram Mini Apps Documentation
  • TDLib — Telegram Database Library
  • Python python-telegram-bot и aiogram Documentation
  • ФЗ № 149-ФЗ «Об информации, информационных технологиях и о защите информации»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru