Анонимный участник
CatABMS: различия между версиями
м
Откат правок Megejot408 (обсуждение) к версии Catweird
imported>Megejot408 (Содержимое страницы заменено на «<div style="background:black;width:100%;text-align:center"> <h1 style="font-size:150px"><span style="color:#359cfc">#нет</span><...») |
imported>Catweird м (Откат правок Megejot408 (обсуждение) к версии Catweird) |
||
Строка 1: | Строка 1: | ||
CatABMS (Catware Advanced Bot Manipulating System, Расширенная Система Управления Ботами Catware) - разработанный Catware, и до сих пор не вышедший в свет (почти) синхронный фреймворк для создания ботов для социальной сети ВКонтакте. Имеет несколько ответвлений. | |||
== Структура системы == | |||
Система выполнена в стандарте CFHS - Catware File Hierarhy System, аналог для FHS: | |||
chains - файлы CatABMS Chains | |||
chats - БД чатов | |||
commands - исполняемые файлы и конфиги команд | |||
configs - конфигурационные файлы CatABMS | |||
corerc - Файлы CoreRC (Core Running Commands), выполняющиеся при получении сообщения. | |||
exf - исполняемые файлы CatShell | |||
json - модифицируемые системой конфигурационные файлы | |||
lib - библиотеки, необходимые для работы ядра или иных компонентов системы | |||
modules - конфигурационные файлы системы модулей | |||
services - исполняемые файлы Catware Autostart, выполняющиеся при старте бота | |||
tmp - временные файлы, которые удаляются CoreRC-модулем CSM (Catware Space Manager). | |||
users - БД пользователей | |||
catenv.py - файл с взаимосвязанными DEFами, необходимыми для работы системы - фактически API системы. | |||
core.py - ядро, обрабатывающее входящие сообщения | |||
faststart.py - загрузчик системы | |||
== Структура: Загрузчик == | |||
Идёт начальная загрузка модулей: sys, os, psutil. | |||
Далее идёт загрузка CatENV. Файл загружается в память, выполняется и удаляется. | |||
Активируется система автономности: установщик модулей, который за вас установит и импортирует все модули, следуюя логике сетов модулей. Сет модулей состоит из: | |||
# Списка модулей, которые необходимо установить через PIP | |||
# Строк, которые необходимо выполнить через exec, наподобии import ... | |||
# Скрипт иницилизации модулей, которые требуют обозначения их обьекта | |||
Если какой-то из модулей импортировать не удалось, то идёт переустановка всего сета модулей. | |||
Всего их 3: | |||
# base-system (Базовые пакеты, которые даже устанавливать не надо) | |||
# media (В основном, это модули, работающие с API/парсеры некоторых сервисов) | |||
# network (В основном, это те, что коим-то боком работают с сетевым стеком.) | |||
Затем идёт загрузка конфигурационных файлов, в которых содержится полустатическая информация - токен, ID группы, название бота и другая косметическая/не очень информация. | |||
Выполняются функции CatENV - getreportban, getban, getmuted, gettroll. | |||
Определяется операционная система, исходя из значения os.name. | |||
Далее идёт подготовка к запуску ядра. | |||
Система авторизуется во ВКонтакте, бесконечно дёргая при этом метод авторизации, пока не получится залогиниться во ВКонтакте. | |||
Когда залогиниться наконец получается, то управление косвенно передаётся ядру: при нажатии Ctrl+C ядро выгружается из памяти и активируется CatShell - оболочка командой строки, работающая с EXF-файлами (CatShell EXecutable Files) | |||
По команде exit, ядро вновь начинает свою загрузку. | |||
Когда управление передаётся ядру: | |||
== Структура: Ядро == | |||
Когда управление передано ядру, оно занимается загрузкой библиотек: | |||
# detectfull, чтобы при обработке картинок качество не шакалилось | |||
# surrogate-manager, ныне не рабочая библиотека | |||
# CUMv2 - Catware User Manager второй версии. Работает с БД пользователей и чатов. | |||
# generrorcode - генератор индивидуальных кодов ошибок | |||
Далее, идёт загрузка команд из папки, обозначенной в папке ядра, в которой содержатся папки, содержащие .py и .json-файлы, первый является исполняемым исходником, а второй выполняет функцию конфига, который можно подсмотреть в [[Создание команд|этой статье]]. | |||
Затем загружаются CoreRC файлы, и выполняется Catware Autostart | |||
Далее начинается бесконечный цикл ядра, поскольку ядро сделано очень криво и крашится каждые 5 минут. | |||
Начинается оно с очистки лишних переменных компонентом Catware MemGun. | |||
Если установлен необходимый параметр, то ядро запускается в безопасном режиме: отвечает только администраторам бота. | |||
Сообщается всем администраторам о запуске бота: сообщается IP сервера, операционная система и хостнейм. | |||
Ядро начинает слушать LongPoll-сервера ВКонтакте на события. | |||
Если получен обьект нового/отредактированного сообщения, полученного НЕ ОТ ГРУППБОТА, то начинается разбор текста сообщения. Если же оно пустое/некорректное, то на событие ставится метка о невыполнении, дабы освободить ядро от лишних нагрузок. | |||
Если же обьект события полностью корректен, то получается следующая информация: | |||
- ID пользователя | |||
- Время получения обьекта события | |||
- Обьект получателя | |||
- Переданная команда | |||
- Переданные параметры | |||
- Переданные флаги | |||
- ID чата, если получено в беседе | |||
Также проверяется, находится ли пользователь в тролльлисте, если есть, то он начинает троллиться текстом, который ему указал администратор, если нет, то обработка продолжается: | |||
# Начинается проверка на наличие переданной команды в списке команд | |||
# Запускаются модули CoreRC | |||
# Проверка на реплаи: если обнаружен реплай и не передан параметр, то текст из реплайнутого сообщения будет использоваться как параметр | |||
# Проверка вложений в сообщении | |||
# Проверка на значение выполняемого идентификатора цепочки | |||
# Если всё соответствует ПЕРВОМУ случаю, то выполняется команда | |||
# Если обнаружен ВТОРОЙ случай (команда из списка потенциально оскорбительных команд), проверяется согласие пользователя на то, чтобы выполнить эту команду, если же пакет подключен - она выполняется. | |||
# Если обнаружен ТРЕТИЙ случай (команда для тестеров), проверяется наличие метки тестера у пользователя, если она имеется - команда запускается, если нет - пользователь получает соответствующее уведомление и приглашается в программу бета-тестирования | |||
# Если же команда при выполнении крашнулась, то багрепорт отправляется админам в нём сообщается вызванная команда, полный Traceback, ID диалога, идентификатор команды, время вызова команды, код ошибки, а пользователю остаётся видеть сообщение об ошибке. | |||
# Если обнаружена ошибка, связанная с правами администрирования в том или ином чате, но у бота нет админки в беседе, отправляется соответствующее сообщение | |||
# Если обнаружен ЧЕТВЁРТЫЙ СЛУЧАЙ, то задействуется модуль цепочки, указанный у юзера в параметре stage. | |||
# Если обнаружен ПЯТЫЙ случай (выход из цепочки), параметр stage попросту обнуляется. | |||
# Если же пользователь обнаружен в забаненых, то ничего не выполняется, а пользователь посылается нахуй. | |||
Далее идёт проверка других типов событий: | |||
# GROUP_LEAVE = отписавшемуся пользователю пишется в Л/С требование обьяснить своё действие, в целях улучшения бота. | |||
# GROUP_JOIN = благодарность за подписку в Л/С. | |||
# MESSAGE_REPLY = логирование и подсчёт отправленных сообщений | |||
# WALL_POST_NEW = в беседу группы отправляется новая запись на стене бота. | |||
# Также идёт проверка нагрузки на оперативную память, если занято больше 90% - сообщается об этом админам. | |||
# Очистка памяти инструментом MemGun (Memory Gun) | |||
-- Продолжение следует -- |