Создание языков программирования для 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). Для полноценного мини-языка определяются:
- Лексика — список ключевых слов и операторов.
- Грамматика — правила построения фраз (формально, в нотации EBNF).
- Семантика — что означает каждая конструкция и как она исполняется.
Бот выступает интерпретатором: получает строку от пользователя, строит синтаксическое дерево и выполняет соответствующие действия через 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иaiogramDocumentation - ФЗ № 149-ФЗ «Об информации, информационных технологиях и о защите информации»
