Международный журнал прикладных и фундаментальных исследованийrae.ru
Научный журнал

Международный журнал прикладных и фундаментальных исследований

ISSN 1996-3955ИФ РИНЦ = 0,556

Архитектура и программная реализация Telegram-бота для автоматизации математических вычислений

Ильясова А.К. 1, Яголичев А.В. 1
1Федеральное государственное бюджетное образовательное учреждение высшего образования «Астраханский государственный технический университет»

Введение

В современном мире представлен большой выбор приложений и веб-ресурсов, предназначенных для автоматизации решения широкого спектра математических задач различной сложности. Однако актуальной проблемой остается существование ограниченного количества сервисов, способных использовать интегрированный подход для комплексного их решения. Анализ существующих математических онлайн-приложений показал, что многие такие платформы предоставляют расширенные возможности только платно или не поддерживают интерфейс на русском языке. Создание Telegram-бота, способного решать широкий спектр математических задач, является актуальным и перспективным направлением в сфере образовательных технологий. Такой инструмент может стать персональным помощником для студентов, инженеров, научных работников и всех, кто сталкивается с вычислениями в своей деятельности. Он позволит оперативно получать результаты, экономить время на поиск и использование разрозненных онлайн-сервисов и программных пакетов, а также повысить эффективность решения. А.И. Абрамова в своей статье «Использование Telegram-бота в образовательном процессе вуза» [1] отмечает, что подобный подход обладает значительными преимуществами и облегчает процесс обучения студентов. Аналогичное мнение выражено в статье Б.С. Горячкина, Д.А. Галичия, В.С. Цапия, В.В. Бурашникова, Т.Ю. Крутова «Эффективность использования чат-ботов в образовательном процессе» [2]. Авторы подчеркивают, что при грамотной разработке бота, включающей добавление необходимых студентам функций, определение стиля общения бота, обеспечение использования только проверенных сервисов и библиотек, можно создать эффективного и полезного помощника для студентов.

Функционал предлагаемого приложения включает в себя решения алгебраических уравнений, вычисление производных и интегралов, построение графиков функций, выполнение матричных операций, решение задач линейной алгебры и статистического анализа данных [3–5]. Важным аспектом является возможность обработки математических выражений, вводимых пользователем в естественной форме, что значительно упрощает взаимодействие с ботом.

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

Целью исследования является разработка многофункционального Telegram-бота для автоматизации решения широкого спектра математических задач.

Задачи исследования:

− проанализировать и выбрать библиотеки Node.js и Python для реализации Telegram-бота;

− реализовать основные математические функции, включая решение уравнений, вычисление производных и интегралов;

− разработать удобный пользовательский интерфейс с поясняющими сообщениями;

− обеспечить вывод решений в формате LaTeX и интеграцию Python-библиотек для генерации изображений;

− организовать взаимодействие компонентов через WebSocket.

Материалы и методы исследования

Реализация Telegram-бота осуществляется с использованием языков программирования JavaScript и Python, что обусловлено необходимостью интеграции инструментов для символьных вычислений, генерации графических представлений и обеспечения взаимодействия с пользователем. [6, 7]. Основная логика работы бота реализована на платформе Node.js, где посредством менеджера пакетов npm были установлены и использованы следующие библиотеки: Node.js Telegram Bot API, path, fs, Nerdamer, Algebrite, Math.js [8, 9]. Библиотека Node.js Telegram Bot API обеспечивает обработку запросов и взаимодействие с Telegram API, path и fs используются для работы с файловой системой, а Nerdamer, Algebrite и Math.js – для выполнения символьных и численных математических вычислений различной сложности [10, 11].

Для генерации изображений с решениями в формате LaTeX применяются библиотеки Python: Matplotlib, SymPy и re. Matplotlib и SymPy обеспечивают построение и визуализацию математических выражений, а библиотека re используется для обработки и валидации входных данных с помощью регулярных выражений.

Взаимодействие между компонентами, реализованными на JavaScript и Python, организовано с использованием технологии WebSocket. Для этого в Python-скрипте, отвечающем за создание изображений, были задействованы библиотеки asyncio и websockets, а на стороне Node.js – библиотека ws [12].

Алгоритм работы компонентов реализован следующим образом: после получения команды от пользователя и выполнения соответствующих вычислений на стороне Node.js, данные задачи и полученный результат передаются на Python-сервер посредством WebSocket. В Python-скрипте эти данные преобразуются в изображение, которое сохраняется на сервере. После завершения процесса генерации изображения Python-сервер отправляет уведомление о готовности файла, и Node.js-скрипт пересылает полученное изображение пользователю в Telegram, обеспечивает автоматизацию процесса и наглядное представление результатов вычислений, существенно повышая удобство использования разрабатываемого программного продукта [13].

Взаимодействие с Telegram-ботом реализуется посредством интуитивно понятного интерфейса, предусматривающего выбор одной из основных функциональных возможностей: решение алгебраических уравнений степеней I–III, вычисление производных функций, определенных и неопределенных интегралов, упрощение алгебраических выражений, построение графиков, выполнение матричных операций, а также решение задач линейной алгебры и статистического анализа данных. Для каждой из указанных задач предусмотрен пошаговый ввод исходных данных с последующей генерацией результатов в текстовом и графическом форматах. Такой подход обеспечивает широкую доступность сервиса для пользователей с различным уровнем подготовленности и способствует повышению эффективности выполнения математических вычислений [14, 15].

Результаты исследования и их обсуждение

Фрагмент части кода с описанием.

Решение кубических уравнений

function thirdDegree(a, b, c, d) {

if (isNaN(+a) || isNaN(+b) || isNaN(+c) || isNaN(+d)) {

return "Неправильный ввод данных";

} else {

const p = (3 * a * c – b ** 2) / 3 * a ** 2;

const q = (2 * b ** 3 9 * a * b * c + 27 * a ** 2 * d) / 27 * a ** 3;

const Q = (p / 3) ** 3 + (q / 2) ** 2;

const alpha = math.cbrt(math.sum(-q / 2, math.sqrt(Q)));

const beta = math.cbrt(math.subtract(-q / 2, math.sqrt(Q)));

const y1 = math.sum(alpha, beta);

const y2 = math.sum(math.divide(math.multiply(-1, y1), 2), math.multiply(math.sqrt(3), math.multiply(math.divide(math.subtract(alpha, beta), 2), math.complex(0, 1))));

const y3 = math.subtract(math.divide(math.multiply(-1, y1), 2), math.multiply(math.sqrt(3), math.multiply(math.divide(math.subtract(alpha, beta), 2), math.complex(0, 1))));

let x1, x2, x3;

if (Q < 0) {

x1 = y1.re – b / (3 * a);

x2 = y2.re – b / (3 * a);

x3 = y3.re – b / (3 * a);

} else if (Q.toFixed(5) == 0) {

x1 = y1 – b / (3 * a);

x2 = y2.re – b / (3 * a);

x3 = y3.re – b / (3 * a);

} else {

x1 = y1 – b / (3 * a);

x2 = math.subtract(y2, math.divide(b, math.multiply(3, a))).toString();

x3 = math.subtract(y3, math.divide(b, math.multiply(3, a))).toString();

}

const answer = [x1, x2, x3];

for (let i = 0; i < answer.length; i++) {

if (typeof answer[i] === "string") {

const number = answer[i].slice(0, answer[i].length – 1);

if (number.includes(".") && number.split(".").pop().length >= 5 && (number.split(".").pop().includes("99999") || number.split(".").pop().includes("00000"))) {

answer[i] = math.round(+number) + "i";

}

} else {

const stringRoot = String(answer[i]);

const fixedStringRoot = String(answer[i].toFixed(5));

if (stringRoot.includes(".") && stringRoot.split(".").pop().length >= 5 && (fixedStringRoot.split(".").pop().includes("99999") || fixedStringRoot.split(".").pop().includes("00000"))) {

answer[i] = math.round(answer[i]);

}

}

}

return answer;

}

}

Функция thirdDegree реализует алгоритм для вычисления всех корней кубического уравнения. Входные параметры – коэффициенты уравнения проверяются на корректность: если хотя бы один из них не является числом, функция сообщает о неправильном вводе данных. Основная часть алгоритма основана на методе Кардано, который позволяет аналитически находить корни кубического уравнения. Сначала вычисляются параметры, выражающие уравнение в депрессированном виде, а также дискриминант, определяющий тип корней (действительные или комплексные). Проверяется его знак, и на этом основании вычисляются корни уравнения (выполняется обратная замена). Если величина имеет отрицательный знак, то все три корня являются действительными, а значит, достаточно будет взять только действительную часть переменных (в таком случае мнимая часть будет равна нулю). Если равна нулю, то имеем дело с повторяющимися действительными корнями. Важно отметить, что из-за погрешности может оказаться не непосредственно нулем, а крайне близким к нему числом, поэтому в условии проверяется на соответствие нулю только целая часть числа и первые пять знаков после запятой. Если величина больше нуля, то в результате получаем один вещественный корень и два сопряженных комплексных корня. По этой причине в вычислении их значений используются функции из библиотеки Math.js. В конце остается лишь округлить числа, имеющие в десятичной записи большое количество чисел 0 или 9.

Для решения квадратных уравнений написана функция secondDegree, использующая формулу дискриминанта.

function secondDegree(a, b, c) {

if (isNaN(+a) || isNaN(+b) || isNaN(+c)) {

return "Неправильный ввод данных";

} else {

const d = b ** 2 4 * a * c;

if (d > 0) {

if (Math.sqrt(d) % 1 === 0) {

return [`${(-b – Math.sqrt(d)) / 2 * a}`, `${(-b + Math.sqrt(d)) / 2 * a}`];

} else {

return [Algebrite.run(`(${-b} – sqrt(${d}))/2*${a}`), Algebrite.run(`(${-b} + sqrt(${d}))/2*${a}`)];

}

} else if (d === 0) {

const x = -b / 2 * a;

return [x];

} else {

if (Math.sqrt(d) % 1 === 0) {

return [`${(-b – Math.sqrt(-d)) / 2 * a}i`, `${(-b + Math.sqrt(-d)) / 2 * a}i`];

} else {

return [Algebrite.run(`(${-b} – sqrt(${-d}))/2*${a}*i`), Algebrite.run(`(${-b} + sqrt(${-d}))/2*${a}*i`)];

}

}

}

}

Также осуществляется проверка возможности извлечения корня из дискриминанта. В случаях, когда извлечение корня невозможно, применяется функция упрощения выражения из библиотеки Algebrite.

Разработанный бот функционирует на персональном сервере, его идентификатор – @UniversalMathBot. Полученные результаты подтверждают эффективность предложенного подхода и демонстрируют перспективность дальнейшего развития интеллектуальных образовательных сервисов на основе мессенджер-платформ.

Заключение

В ходе проведенного исследования была реализована программная архитектура многофункционального бота, предназначенного для автоматизации решения широкого спектра математических задач. Разработанный бот сочетает в себе современные алгоритмы символьных и численных вычислений, интуитивно понятный интерфейс и возможность визуализации решений в формате LaTeX. Интеграция технологий Node.js и Python, а также использование WebSocket для межъязыкового взаимодействия обеспечили гибкость и расширяемость программного продукта.

В перспективе планируется расширение функционала бота за счет внедрения модулей машинного обучения для распознавания рукописных формул и интеллектуального анализа ошибок пользователей. Особое внимание будет уделено обеспечению безопасности данных и масштабируемости системы для поддержки большого количества одновременных пользователей. Кроме того, планируется интеграция с внешними образовательными платформами и создание API для сторонних разработчиков, что позволит использовать бота в различных учебных и исследовательских проектах. Таким образом, реализованный Telegram-бот может стать эффективным инструментом поддержки обучения и самообразования в области математики, способствуя развитию цифровых образовательных технологий.


Конфликт интересов
Авторы заявляют об отсутствии конфликта интересов.

Библиографическая ссылка

Ильясова А.К., Яголичев А.В. АРХИТЕКТУРА И ПРОГРАММНАЯ РЕАЛИЗАЦИЯ TELEGRAM-БОТА ДЛЯ АВТОМАТИЗАЦИИ МАТЕМАТИЧЕСКИХ ВЫЧИСЛЕНИЙ // Международный журнал прикладных и фундаментальных исследований. 2025. № 11. С. 34-38;
URL: https://www.applied-research.ru/article/view?id=13770 (дата обращения: 23.08.2026).
DOI: https://doi.org/10.17513/mjpfi.13770