Всем привет! В первой части своего повествования я рассказал об опыте создания при помощи ChatGPT чат-бота, который теперь является моим верным и надежным ассистентом в быту и работе.
В этой статье я подробнее объясню и наглядно продемонстрирую каждую из его текущих возможностей, а также поделюсь дальнейшими планами по совершенствованию сетевого мультитула.
Немного общей информации о чат-боте NetCalc
STEP LOGIC NetCalc – это telegram-бот с функцией продвинутого калькулятора IP-сетей и набором полезных сетевых инструментов. Он умеет выполнять любые вычислительные операции с IP-адресами и/или сетями, включает в себя множество инструментов для проведения сетевой диагностики, а также позволяет генерировать готовые конфигурации для настройки различного сетевого оборудования.
UPD: В какой-то момент я решил сделать из названия аббревиатуру и попросил ChatGPT придумать расшифровку, отражающую суть бота. И так, встречайте N.E.T.C.A.L.C - Network Engineer Toolkit to Calculate Addresses and Load Configurations.
Меню чат-бота и основные кнопки
Меню позволяет запустить бота, вывести главное меню NetCalc, 1 из 3 его наборов различных инструментов, отменить текущую задачу.
![](https://habrastorage.org/getpro/habr/upload_files/b83/0c7/978/b830c79784466a658c9b033504aeb5d9.png)
Те же задачи выполняет и клавиатура главного меню, доступная при вводе команды /start.
![](https://habrastorage.org/getpro/habr/upload_files/b22/bd8/38a/b22bd838a28a9cb8db65fe21b16fdcf6.png)
Теперь подробнее о кнопках главного меню.
Всего telegram-бот содержит 3 основных категории инструментов:
![](https://habrastorage.org/getpro/habr/upload_files/c5a/479/8d0/c5a4798d04cd5940e2e2fdb4187b6fa2.png)
Рассмотрим более детально каждую из них.
Сетевой IP-калькулятор
Сетевой IP-калькулятор состоит из 7 функций.
![](https://habrastorage.org/getpro/habr/upload_files/330/a1e/203/330a1e2031292baeb01fd7595e4465df.png)
Инфо об IP и его сети (+RNG) повторяет функционал онлайн и мобильных IP-калькуляторов. Чат-бот запрашивает ввод IP-адреса с маской и в ответ выдает полную информацию о его сети и адресах в ней.
Бот предлагает на выбор 3 кнопки с вводом частных сетей и 1 кнопку с рандомизируемым значением (для проверки работы бота or just for fun).
![](https://habrastorage.org/getpro/habr/upload_files/91c/859/cf2/91c859cf2070d7faf136cc9552ab63a2.png)
Ответ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/fd1/6c4/dfc/fd16c4dfc84c9070a8a7c30e76f59b9f.png)
2. Дробление сетей на подсети запрашивает ввод исходной сети с маской, в ответ выдает список масок, на сети с которыми можно разбить исходную сеть, а также указывает количество каждой такой подсети, что умещается в исходную.
Бот предлагает на выбор 3 кнопки с вводом частных сетей и 1 кнопку с полной сетью, включающей в себя все адреса 0.0.0.0/0
![](https://habrastorage.org/getpro/habr/upload_files/651/a33/548/651a3354824a04b4250b3508adbf155c.png)
Если выбрать сеть 0.0.0.0/0, то в ответ появится клавиатура с 32 кнопками (по количеству подсетей с различными масками в ней).
В целях сохранения быстродействия и исключения флуда огромным количеством текста от бота, я ограничил вывод подсетей 4096 строчками.
В оффлайн-версии калькулятора для командной строки я не вводил это ограничение, так как данный инструмент доступен только локально и заём его ресурсов выводом миллиарда строк не повлияет на других пользователей, чего не скажешь об общедоступной версии telegram-бота.
Визуально недоступные позиции я отделил от доступных с помощью эмодзи ❌. Оставил же я их для возможности узнать количество таких подсетей без их вывода.
![](https://habrastorage.org/getpro/habr/upload_files/1ce/6d5/1ff/1ce6d51ffece1419bc22f483c14c3ed7.png)
Ответ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/b97/930/b70/b97930b706cfe4503fe386c5ab16767d.png)
3. Исключение подсетей из 1 заданной сначала запрашивает ввод исходной сети с маской.
Бот предлагает на выбор ввести своё значение или нажать 1 кнопку с полной сетью, включающей в себя все адреса 0.0.0.0/0.
![](https://habrastorage.org/getpro/habr/upload_files/4f5/b49/b31/4f5b49b312228ddc50961c8054762aa9.png)
Далее бот предлагает выбрать с помощью кнопок количество исключаемых подсетей от 1 до 10 или ввести свое количество.
![](https://habrastorage.org/getpro/habr/upload_files/e5b/b37/e1a/e5bb37e1ab71b5a1d5ce140864590cb8.png)
На следующем этапе бот для всего заданного количества подсетей поочередно запрашивает ввести их IP-адрес с префиксом сети.
![](https://habrastorage.org/getpro/habr/upload_files/584/252/958/58425295834710d96e621d8dcf37b182.png)
![](https://habrastorage.org/getpro/habr/upload_files/644/5d1/105/6445d1105f458e301c2f074209814e2a.png)
Ответ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/f33/846/2c9/f338462c9c2200e811ea754904952307.png)
4. Суммаризация подсетей в 1 (+RNG) сначала запрашивает количество суммируемых подсетей.
Бот предлагает на выбор кнопки от 1 до 10 или ввести своё количество.
![](https://habrastorage.org/getpro/habr/upload_files/ce8/e12/4bd/ce8e124bd51d9356ab794d15422d38e9.png)
Далее запрашивает ввести подсеть или предлагает в качестве примера кнопку со случайным адресом сети для всего заданного количества подсетей и находит их суперсет (общую сеть, включающую в себе все выбранные подсети).
![](https://habrastorage.org/getpro/habr/upload_files/2ff/467/c34/2ff467c348b0f3aee39579079e42f4f7.png)
Ответ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/ac9/303/3e9/ac93033e9ef0856dedc7a28d4a0116b6.png)
Примечание: очевидно, что если заданные подсети будут находиться слишком далеко друг от друга, например 1.1.1.0/24 и 254.254.0.0/16, то ближайшей общей подсетью для них будет 0.0.0.0/0. Вычисление подобного суперсета вряд ли имеет полезное применение, поэтому следует искать суперсет более менее близких друг с другом подсетей.
5. Тиражирование подсетей от начальной сначала запрашивает стартовый IP-адрес. От него будут высчитываться и выводиться списком все следующие подсети с выбранными параметрами.
Бот предлагает на выбор кнопки с частными подсетями в качестве примера или ввести свое значение.
![](https://habrastorage.org/getpro/habr/upload_files/f42/55f/204/f4255f204e70b8b1bc5318b88e6bf849.png)
Далее запрашивает количество хостов, которое должно быть в желаемой сети, с кнопками-примерами или вводом собственного.
![](https://habrastorage.org/getpro/habr/upload_files/a2a/437/dc0/a2a437dc0c5b9bcd67a3bda2277fd931.png)
Потом бот предлагает ввести количество таких подсетей, которые он после выведет списком на экран.
![](https://habrastorage.org/getpro/habr/upload_files/0f7/597/b4e/0f7597b4e3fb4b7bc5824bcff13e8a6c.png)
Ответ выглядит так:
![](https://habrastorage.org/getpro/habr/upload_files/397/f78/65f/397f7865f7b5560ed77bc0816c4f7bf8.png)
6. Объединение смежных сетей в списке тоже выполняет функцию “сложения”. Но в отличие от прошлой, которая находила суперсет для всех указанных подсетей, эта функция принимает на вход список подсетей и “складывает” только те сети, которые стыкуются друг с другом или пересекаются, то есть позволяют объединить их без “захвата” новых IP-адресов, как это происходило при составлении суперсета.
В ответ мы получим укороченный список из подсетей, которые дальше уже невозможно объединить.
Можно подавать на вход как список целиком в 1 сообщении, так и несколькими, а по завершении прислать в ответ символ ❗️, после чего будет выдан ответ. Также для удобства я добавил на кнопку с примером подсетей алгоритм, увеличивающий 3-ий октет на 1 с каждым сообщением, чтобы можно было быстро проверить работу функции.
![](https://habrastorage.org/getpro/habr/upload_files/34e/07f/11e/34e07f11e09b5301be39ca741ca32fa8.png)
7. Скачать оффлайн-калькулятор. Впоследствии я добавил возможность скачивания ранней оффлайн-версии сетевого калькулятора в telegram-бота. Так как бот присылает исполняемый файл не ссылкой, а сообщением, я ограничил функцию 3-мя скачиваниями в день для пресечения злоупотребления функцией и, как следствие, увеличением трафика и уменьшением ширины канала моего сервера. На выбор доступны заранее скомпилированные пакеты для популярных ОС и архитектур – исполняемый EXE-файл для Windows x86 и бинарные файлы arm64 и amd64 для Linux.
![](https://habrastorage.org/getpro/habr/upload_files/f06/368/fa7/f06368fa752152577afd89007c46ea0c.png)
Сетевой мульти-инструмент
Меню сетевого мульти-инструмента состоит из 11 функций.
![](https://habrastorage.org/getpro/habr/upload_files/963/249/959/963249959fbd6a2ef97fb6d2bdf9bb3a.png)
1. Узнать страну и ASN по IP (+RNG) в ответ на присланный IP-адрес присылает информацию о стране, ASN и название организации, к который принадлежит IP.
![](https://habrastorage.org/getpro/habr/upload_files/bbe/131/a3e/bbe131a3e9eacaf0cff73530bf3f6a66.png)
2. Whois (доменная регистрация) в ответ на присланное доменное имя присылает информацию о регистраторе, дате начала и конца регистрации домена, используемых резолверах имен, названии организации регистратора и его стране.
![](https://habrastorage.org/getpro/habr/upload_files/885/498/4a4/8854984a426af20dc6740a3698e50e26.png)
3. NSLookup (резолв DNS) сначала предлагает выбрать DNS-сервер, с помощью которого будет производиться разрешение интересующего доменного имени.
Затем бот запрашивает список доменных имен и в ответ присылает IP-адреса, в которые выбранный DNS-сервер разрешает эти имена.
![](https://habrastorage.org/getpro/habr/upload_files/2d5/115/8a8/2d51158a80b229ed10eafdcf42db3454.png)
4. Узнать свой IP-адрес выводит список в виде кнопок с популярными сервисами определения IP. При нажатии на кнопки во встроенном в Telegram браузере открывается информация с IP-адресом пользователя. Данную функцию пришлось реализовать с помощью явного перехода пользователем по ссылке, потому что API Telegram, как выяснилось, не позволяет узнать и вывести IP взаимодействующего с ним пользователя.
![](https://habrastorage.org/getpro/habr/upload_files/d8e/de3/853/d8ede38531bc44fa637f558a107d74fc.png)
5. Проверка открытых TCP-портов сначала запрашивает IP-адрес или доменное имя, чьи порты необходимо проверить.
Далее функция выводит клавиатуру с наиболее часто встречающимися портами или предлагает ввести свой. В ответ на сообщение с портом бот присылает результат проверки (открыт или закрыт) и тут же запрашивает ввод нового порта.
![](https://habrastorage.org/getpro/habr/upload_files/fd8/c22/f3f/fd8c22f3ff9667be385f88978b9423c9.png)
6. Поиск доменов приложения присылает список всех принадлежащих приложению доменов. Реализована функция с помощью веб-скрапинга (вызов nodejs + puppeteer из командной строки без GUI для эмуляции открытия страницы в браузере) сервиса https://www.netify.ai/ (Так как API платный, а веб-версия бесплатна – было решено брать значения из html. Но через обычный запрос с помощью curl я получал страницу, в которой вместо доменов отображались заглушки от динамически подгружаемых значений, которые подтягиваются через JS при открытии страницы в браузере). Разобраться в матчасти и придумать как реализовать алгоритм – как всегда помог ChatGPT.
![](https://habrastorage.org/getpro/habr/upload_files/48f/943/6e4/48f9436e4d4c1aa2e3d5532b8f2fd4e6.png)
7. Поиск поддоменов сайта присылает все найденные поддомены. Функция реализована с помощью API-запросов к сервису https://securitytrails.com/ и ограничена 6 запросами в день с целью контроля за расходом доступного бесплатного лимита. Для того, чтобы обойти ограничение в 50 запросов на 1 аккаунт, я завел несколько бесплатных аккаунтов, в каждом из которых сгенерировал API-ключ, добавив в бота их перебор по кругу до тех пор, пока не закончатся все рабочие ключи. Сейчас ищу бесплатную альтернативу данному сервису без ограничений. Буду рад идеям и предложениям в комментариях.
![](https://habrastorage.org/getpro/habr/upload_files/c6e/d65/c9f/c6ed65c9fc3c010fdd30d0329aad2498.png)
8. Скачать SSL-сертификаты сайта присылает всю цепочку SSL-сертификатов сайта в формате crt (включая его корневой и промежуточный CA), а также основную информацию из полей сертификатов в виде текста.
![](https://habrastorage.org/getpro/habr/upload_files/286/f3c/867/286f3c86766eb345a8fc0267b9609088.png)
9. Узнать вендора по MAC (+RNG) определяет и присылает название производителя. Функция реализована через поиск по обновляемой на github базе mac-адресов. Имеется кнопка со случайными mac-адресами для быстрой проверки данной функции.
![](https://habrastorage.org/getpro/habr/upload_files/640/0ae/71c/6400ae71c62151ec77131816e660dbc6.png)
10. Reverse DNS Lookup запрашивает IP-адрес, а в ответ присылает найденный Reverse DNS (PTR-запись).
![](https://habrastorage.org/getpro/habr/upload_files/f3e/250/df9/f3e250df9b985a04300d492d3fb69fe4.png)
11. Тест Email на AV/AS/AP сначала предлагает выбрать тип тестового сообщения, которое содержит 1 из 3 строк, имитирующих спам /вирус / фишинг.
Затем просит ввести почту получателя и отправляет на него сообщение выбранного типа.
![](https://habrastorage.org/getpro/habr/upload_files/a51/5fd/9f8/a515fd9f857f620ac07898e8b3e1c98a.png)
Далее бот предлагает пользователю проверить почту. Если сообщения дошли, значит почтовый шлюз их пропустил, и защита не настроена.
![](https://habrastorage.org/getpro/habr/upload_files/4b2/6bf/6f7/4b26bf6f735c33a59bb489e967e24230.png)
Конфигуратор сетевого оборудования
Конфигуратор сетевого оборудования состоит из 4 функций.
![](https://habrastorage.org/getpro/habr/upload_files/6e9/ee1/727/6e9ee1727675ee41328b1f3f5667408e.png)
1. Конфигуратор FW FortiGate сначала предлагает выбрать тип объектов (IP или FQDN), с которыми планируется составить copy-paste строку конфигурации для оборудования FortiGate.
Если пользователь выбирает IP, то бот просит ввести построчно или списком все необходимые IP-адреса. После этого необходимо отправить в сообщении ❗️, потом ввести имя для группы. В ответ получаем готовый файл с текстовой copy-paste конфигурацией.
![](https://habrastorage.org/getpro/habr/upload_files/da6/86e/86c/da686e86c09d20b3aa27de115427c143.png)
Пример получаемого конфигурационного файла:
config firewall address
edit "1.1.1.1/32"
set type ipmask
set allow-routing enable
set subnet 1.1.1.1 255.255.255.255
next
end
config firewall address
edit "1.1.1.2/32"
set type ipmask
set allow-routing enable
set subnet 1.1.1.2 255.255.255.255
next
end
config firewall addrgrp
edit "IMPORTED-IP-GROUP"
append member "1.1.1.1/32" "1.1.1.2/32"
set allow-routing enable
next
end
Если же выбран FQDN, то необходимо ввести построчно или списком доменные имена, а после этого отправить ❗️. Бот запрашивает, нужно ли включить в список поддомены “www” или сразу все домены по wildcard-маске *, имя для группы, а в ответ присылает готовый файл с текстовой copy-paste конфигурацией.
![](https://habrastorage.org/getpro/habr/upload_files/dfb/e72/15d/dfbe7215d4d049086bb017d0755cb351.png)
Пример получаемого конфигурационного файла:
config firewall address
edit "site2.ru"
set type fqdn
set allow-routing enable
set fqdn "site2.ru"
next
edit "*.site2.ru"
set type fqdn
set allow-routing enable
set fqdn "*.site2.ru"
next
end
config firewall address
edit "site1.ru"
set type fqdn
set allow-routing enable
set fqdn "site1.ru"
next
edit "*.site1.ru"
set type fqdn
set allow-routing enable
set fqdn "*.site1.ru"
next
end
config firewall addrgrp
edit "IMPORTED-FQDN-GROUP"
append member "site2.ru" "*.site2.ru" "site1.ru" "*.site1.ru"
set allow-routing enable
next
end
2. Конфигуратор FW Cisco (IP) сначала предлагает выбрать тип объектов (IP или FQDN), с которыми планируется составить copy-paste строку конфигурации для оборудования Cisco.
При выборе IP бот просит ввести построчно или списком все необходимые IP-адреса, а затем прислать в сообщении знак ❗️. После введения имени для группы в ответ приходит готовый файл с текстовой copy-paste конфигурацией.
![](https://habrastorage.org/getpro/habr/upload_files/93c/9c1/dbf/93c9c1dbf7de6d72e4af760d525d76ce.png)
Ниже привожу пример получившейся конфигурации:
conf t
object network "1.1.1.1"
subnet 1.1.1.1 255.255.255.255
exit
exit
conf t
object network "1.1.1.2"
subnet 1.1.1.2 255.255.255.255
exit
exit
conf t
object-group network "IMPORTED-IP-GROUP"
network-object object "1.1.1.1"
network-object object "1.1.1.2"
exit
exit
Если выбран FQDN, то бот просит ввести построчно или списком все необходимые доменные имена, для завершения ожидает присланный в сообщении знак ❗️, потом запрашивает имя для группы и в ответ присылает готовый файл с текстовой copy-paste конфигурацией.
![](https://habrastorage.org/getpro/habr/upload_files/27a/b6d/441/27ab6d441149bd4a7641a99e51b841ac.png)
Ниже привожу пример получившейся конфигурации:
conf t
object network "site2.ru"
fqdn "site2.ru"
exit
exit
conf t
object network "site1.ru"
fqdn "site1.ru"
exit
exit
conf t
object-group network "IMPORTED-FQDN-GROUP"
network-object object "site2.ru"
network-object object "site1.ru"
exit
exit
3. Конфигуратор FW Континент 4 состоит из 2 разделов:
Конвертация только сетевых объектов, таких как IP-адреса/FQDN из FortiGate/Cisco ASA в формат Континент 4 для импорта через CSV/XML-файл
Конвертация правил МЭ/NAT и всех связанных с ними сетевых объектов и сервисов из FortiGate/Cisco ASA/Check Point/Континент 3 в формат Континент 4 для импорта через JSON-файл
![](https://habrastorage.org/getpro/habr/upload_files/42f/7c9/46b/42f7c946b143205b23aa18844db4e4f5.png)
Только IP/FQDN-объекты через CSV/XML
Функция сначала запрашивает выбрать тип объектов файла конфигурации – FortiGate или Cisco. Далее необходимо загрузить файл конфигурации и определить, каким образом обрабатывать дубли и проводить сортировку.
В планах добавить поддержку большего числа вендоров. Напишите, пожалуйста, в комментариях для каких вендоров стоит написать парсеры и добавить в бота?
По причине ухода зарубежных вендоров с рынка РФ я пока оставил только конвертацию конфигураций оборудования западных вендоров в конфигурацию для отечественных, но, возможно, стоит написать функции конвертации в других вендоров, например из Cisco в FortiGate и наоборот? Или добавить больше конвертируемых настроек?
Пример получившегося CSV-файла для импорта объектов FortiGate в Континент 4 приведен ниже:
![](https://habrastorage.org/getpro/habr/upload_files/12d/fd8/ba2/12dfd8ba2138301fbaa88e2d1196637f.png)
![](https://habrastorage.org/getpro/habr/upload_files/04e/969/004/04e9690046c3979992ca8166d49aac6d.png)
Пример получившегося CSV-файла для импорта объектов Cisco ASA в Континент 4 приведен ниже:
![](https://habrastorage.org/getpro/habr/upload_files/57f/db2/fdf/57fdb2fdf5c43cd6fde3d81b5ed866a4.png)
![](https://habrastorage.org/getpro/habr/upload_files/5a9/5c4/85c/5a95c485c41a47db499667c01df98656.png)
МЭ/NAT и IP/FQDN-объекты через JSON
Функция использует готовый инструментарий из официального репозитория разработчиков «Кода Безопасности» https://github.com/itseccode/c4_tools и позволяет подавать на вход конфигурационные файл различных производителей, проводить парсинг и конвертацию строк в формат, поддерживаемый оборудованием Континент 4.
![](https://habrastorage.org/getpro/habr/upload_files/32b/a97/8f1/32ba978f1a64271c7ee3f0e7c54d2c2f.png)
Пример конвертации конфига из Cisco ASA в Континент 4:
![](https://habrastorage.org/getpro/habr/upload_files/d0f/69f/473/d0f69f473b66f55b1c3c12f8902674d6.png)
Пример конвертации конфига из FortiGate в Континент 4:
![](https://habrastorage.org/getpro/habr/upload_files/189/154/a11/189154a11e6cc15a449bb8959889680e.png)
Пример конвертации конфига из нового формата Check Point в Континент 4:
![](https://habrastorage.org/getpro/habr/upload_files/c3f/5d0/e6c/c3f5d0e6c7b4c62fc6d1ad9519a7b8df.png)
Пример конвертации конфига из Континент 3.9 в Континент 4:
![](https://habrastorage.org/getpro/habr/upload_files/865/352/44d/86535244d6eb37556e3d940b2cbc3f16.png)
Пример конвертации конфига из старого формата Check Point в Континент 4:
![](https://habrastorage.org/getpro/habr/upload_files/275/157/51c/27515751ce4934f17383c30a25f2eb29.png)
4. Конфигуратор FW Linux (iptables) позволяет вывести подсказки по тому, как разрешить прохождение всего трафика или команды для вывода на экран существующих правил iptables, а также в интерактивном режиме написать нужное правило.
Рассмотрим эту функцию на примере:
![](https://habrastorage.org/getpro/habr/upload_files/5f9/d28/cae/5f9d28caea2619f525470b966bf73f5b.png)
Сначала бот спрашивает, в начало или конец списка добавить новое правило, а затем просит выбрать цепочку iptables и входящий интерфейс.
В зависимости от выбранных значений, некоторые интерактивные опросы могут быть пропущены как ненужные. Например, при выборе цепочки PREROUTING недоступен выбор исходящего интерфейса.
После этого необходимо определиться с протоколом, исходящим IP и портом, IP и портом назначения.
Далее бот просит выбрать конечное действие с выбранным трафиком
В некоторых случаях, после выбора действия бот запрашивает уточняющие вопросы, например, при выборе действия REDIRECT необходимо указать порт для перенаправления на него трафика.
Ниже представлен весь диалог целиком и полученное в результате правило:
![](https://habrastorage.org/getpro/habr/upload_files/d22/511/480/d22511480e2a25c1a71a1198a7d7cc0d.png)
Бонус
Недавно в боте появился новый бонусный раздел, в котором я буду публиковать свои или другие понравившиеся мне полезные проекты (в основном - telegram-боты). Рекомендую тоже обратить на них внимание.
А так же, попробуйте найти ещё 1 скрытую команду, которой нет в меню бота ;)
Планы на будущее (TO DO)
Перебраться из Notepad++ в IDE типа PyCharm.
Очистить код от мусора и оптимизировать функции.
Сделать все функции асинхронными. Сейчас некоторые выполняются не моментально, а занимают какое-то время. При большом количестве одновременных запросов от разных пользователей может скопиться очередь и длительность ожидания станет заметно некомфортной.
Разбить 1 скрипт на несколько раздельных: основную функцию и вспомогательные в разных файлах-модулях, чтобы вызывать вспомогательные только по мере необходимости и экономить вычислительные ресурсы сервера.
Хранить все переменные в отдельных файлах или в БД в зашифрованном виде. Хранение присылаемых конфигов не ведется – они удаляются сразу после обработки и выдачи результата в чат.
Расширить список поддерживаемых вендоров сетевого оборудования в разделе «Конфигуратор сетевого оборудования» и набор поддерживаемых настроек при конвертации. Как минимум нужны сервисы и группы сервисов, потом можно переходить к парсерам FW и NAT-правил.
Добавить генератор строки инициализации Континент 3 (как дань памяти ныне почившему функционалу) https://kdemon.github.io/pages/kstrcfg.html.
Добавить больше разнообразных полезных сетевых инструментов (конвертация документов, OCR, crontab guru https://crontab.guru/, I OR l https://iorl.info/).
Настроить возможность пересылать боту сообщения и задать автоматическое выполнение определенных задач по формату текста в пересылаемом сообщении, чтобы быстрее получать ответ без навигации по меню и явного выбора необходимого пункта.
Исправить и оптимизировать устаревший код, который пишет ChatGPT под актуальные версии модулей и библиотек, а также современные требования безопасности.
Сделать бота опенсорсным, перенести код на Github для сохранения версионности, а также для возможности коллективной работы и контрибуции и провести интеграцию ChatGPT с Github репозиторием бота.
Настроить отказоустойчивость хост-серверов и автоматизировать перевод тестовых версий в продакшн по расписанию.
Возможно, добавить монетизацию в виде plus-подписки для возможности использования платных сервисов и API. Сейчас я использую счетчики (лимиты) использования тех функций, в сервисах которых есть ограничения по количеству запросов в бесплатной версии. Также я настроил лимиты на отправку спам-писем с моего домена для каждого пользователя для противодействия злонамеренному использованию и избежания попадания домена в спам-листы. В планах оптимизировать эту функцию для снижения подобных рисков.
Приветствуются предложения и критика в комментариях. Если у вас есть идеи, какие полезные функции стоит добавить в бота, или вы знаете, как реализовать ту или иную функцию эффективнее – не проходите мимо. Я буду рад услышать профессиональное мнение, исправить свои ошибки и оптимизировать алгоритм.
Комментарии (6)
chelaxian Автор
07.12.2023 17:15ставь + если понравилась расшифровка аббревиатуры от chatgpt:
N.E.T.C.A.L.C - Network Engineer Toolkit to Calculate Addresses and Load Configurations
PavelKuptsov
07.12.2023 17:15Представляю какой там АД в кодовой базе, которая написана видимо наполовину через чатgpt ... Ну и судя по планам на будущее, мне кажется мои догадки близки к истине ????.
В остальном бот интересный, развития вам в дальнейшем ????chelaxian Автор
07.12.2023 17:15Всё верно :) Это главная причина, по которой я не тороплюсь с публикацией кода. Стыдно такое показывать ???? Пока главное, что работает, а как… лучше даже не спрашивать) Выложу как причешу. Спасибо за напутствие!
chelaxian Автор
ставь + если нашел секретную команду в боте