Создание команд

Материал из Catware Wiki
Перейти к навигации Перейти к поиску

Перед созданием команд убедитесь, что они соответствуют требованиям Catware:

- команда действительно имеет применение

- команда выполняется как можно быстрее

- команда не использует запрещённых методов

Проверили? Поехали дальше.

Создание конфигурации команды

Примерная конфигурация команды выглядит так:

{

"author": "catwared",

"mode": "=",

"deps": "None",

"identificator": "test",

"command_ru": "тест",

"description": "Тестовая команда",

"testing": false,

"hide": false,

"restricted": false,

"disabled": false

}

Поле "author": в него вы вписываете свои данные (никнейм, способ связаться)

Поле "mode": способ реагирования на команду:

Режим использования Описание
= Команда не требует аргументов, либо они опциональны
start Команда ОБЯЗАТЕЛЬНО требует аргумента
pic Команда требует приложенной картинки

Поле deps не нужно, т.к пока что не добавили поддержку/замену

Поле "identificator": идентификатор вашей команды

Поле "command_ru": название (триггер) команды. Не должно содержать пробелов

Поле "description": описание вашей команды.

Флаги:

testing hide restricted disabled
Значение факта команды для тестеров Скрытие команды Команда потенциально оскорбительна? Команда отключена?

Теперь перейдём к выебонам возможностям написания под CatABMS

CatENV

Начнём пожалуй с CatENV - набор определений (методов), сильно упрощающий написание кода.

Название метода Передаваемые аргументы Возможный ответ от функции Что это?
dvn integer 148.0 KB Функция для словестной записи размера данных
allchatrules нет Правила: текст Возвращает правила беседы, где задействован метод во время выполнения команды
setTester id пользователя нет Устанавливает пользователю значение тестера Catpy и сообщает пользователю об этом
unsetTester id пользователя нет Лишает пользователя значения тестера Catpy и сообщает ему об этом.
testerinfo id пользователя {'id': 597100871, 'tester': True, 'reports': 0, 'report_list': [], 'first_invite': 1624988382, 'last_invite': 1624988382, 'status': 'Бета-тестировщик catpy'} Информация о тестировщике в формате JSON
isTester id пользователя True/False Является ли пользователь тестировщиком
ssorg lat, long (int) Возвращаемые значения:

- Рассвет (0)

- Закат (1)

- Астрономический полдень (2)

- Длительность светового дня (3)

- Начало человеческого рассвета (4)

- Конец человеческого заката (5)

- Начало морского рассвета (6)

- Конец морского заката (7)

- Начало астрономического рассвета (8)

- Конец астрономического заката (9)

- Отклонение от UTC (10)

Ума не приложу, зачем нужно большинство этих данных, но пусть будет))

Все данные возвращаются в массиве по порядку в формате unixtime по местному времени

globalid conversation_message_id (int) message_id Не шарю, вроде от этого смски можно группой сносить
regproc Любой текст Нет Создаёт редактируемое сообщение
editmessage Любой текст Нет Редактирует сообщение, созданное методом regproc()
weekday int от 1 до 7 Возвращает день недели по числу Хуй знает зачем это и где используется
chatadmins peer_id (int) Возвращает список ID админов чата Крутая же фича
clrlink URL Возвращает сокращённую ссылку Тож пиздатая фичя((
isgroup user_id Возвращает значение (True/False) факта того группа это или нет Ну, хз зачем блять нахуй это надо сука
cordstooffset lat, lon (int) Возвращает смещение по геокоординатам (не помню чё там в жсоне, да и неибу, спросите у катвиерда/зиги) cords to offset
readabledate unixtime (int) Возвращает читаемую дату юникстайм в дату
rid нет Бинд для быстрой генерации random_id для ВКонтакте, возвращаает рандомное число лень просто вводить каждый раз рандд. ранддинт чёто там...
strike Любой текст Любой текст Фишка юникода
HostToIp URL 123.123.123.123 Получение IP из домена
percent сколько всего, сколько из "всего" 53.0 Получение процента
getid короткое имя ВКонтакте 131236782 Получение цифрового ID пользователя
getmention user_id [id123123123|Имя Фамилия] Получение упоминания пользователя
getname user_id Имя Фамилия Получение имени пользователя по ID
convertjson strинговый жсон жсоновый жсон Тупо бинд для json.loads
translate text, lang Переведённый текст Переводчик (коды языков смотреть в документации googletrans python))))
Voice /path/to/ogg Нет Записывает голосовое сообщение
PlusWrite текст, путь/к/файлу Нет Дозапись в файл
Get URL Полученный текст GET-запрос
InstallPackage название пакета в PIP Нет Устанавливает pip пакетик йойойойо
ReadFF путь/к/файлу Содержимое файла Читает файл и возвращает его содержимое
CallSystem команда в Linux Shell Выхлоп команды Вызов шела
Run путь/к/файлу Зависит от кода Хз зачем эта хуйня
RunThread id потока, def, (args,) Нет Тоже не ебу, но это поток, да
convertint 19834273847 229563 дня 8 часов 30 минут 47 секунд Словестная запись количества секунд
Download URL, /path/to/download Нет Скачивание файла
similar первая строка, вторая строка True/False Сравнение строк на схожесть
TextToBits строка 1000101010101010101000101010100101 бинарное кодирование короч да понели Двоичное кодирование
TextFromBits 10010111010001010 ебаные строка Двоичное декодирование
Reverse строка акортс Реверсирование текста
RandomLetter нет Рандомная латинская буква Рандомная буква
writeTo text, /path/to/file нет Запись в файл
message текст нет Отправка сообщения в текущий диалог
mta текст нет Отправка сообщения всем администраторам котопая
picture URL, текст нет Отправка изображения по URL
picturedata /path/to/image, текст нет Отправка изображения по пути к файлу
resize_image /путь/к/входному/изображению, /путь/к/выхлопу, (ширина, высота) нет Изменение размера изображения

CatLib

CatENV - это не всё. Сборка Catpy может также предложить вам набор библиотек CatLib:

Название метода Входные данные Выходные данные Принадлежит библиотеке
decipher закодированные в catcipher данные результат декодирования Catware Cipher
cipher строка к примеру, test -> 1@€§£@1#1@&1 Catware Cipher
getparam user_id, "названиепараметра" Содержимое параметра CUMv2 (Catware User Manager)
setparam user_id, "названиепараметра", "значение" Success или Error CUMv2
generrorcode Любая строка Генерируемый код ошибки, к примеру член члееен -> 6676676676 generrorcode
rhyme слово (str) ["олово", "говно", "хуйло", "давно", "дерьмо"] Rhymes generator
searchpic слова для поиска картинок [url1, url2, url3, url4] kalbot's ImgSearch
sget url выхлоп запроса SmartGet (представляется браузером)
transliterate текст text mlebd's transliterate

Переменные ядра и окружения системы (CoreRC, сервисы)

Переменная Примерное значение Принадлежность к Описание
osname GNU/Linux Загрузчик Семейство ОС на сервере
admins 123,123,123,123,123 Конфигурация системы Список ID вконтакте админов бота
botname CatPy Stable Конфигурация системы Имя бота
version 0.9_53 Конфигурация системы Версия бота
abms_name CatABMS | Catware Advanced Bot Manipulation System Конфигурация системы Название управляющей системы
codename Chernobyl 35y Anniversary Конфигурация системы Codename (кодовое имя выпуска)
releasedate 26.04.2021 Конфигурация системы Дата выпуска
user_id 458828641 Ядро id пользователя
peer_id 200000чётотамсколькоцифр0072 Ядро Peer ID
chat_id 72 Ядро ID чата
textic_2 /кот команды Ядро Полный текст сообщения
replytext я хуй знает Ядро Текст сообщения, на которое ответил пользователь
cmd команды Ядро Имя (триггер) использованной команды
parameter -лист Ядро Переданные параметры
argv_picture https://чётотам/чётотам.jpg Ядро URL приложенной картинки
using True/False Ядро Необходимость реагирования на команду (обработчик-оптимизатор)
serverspeed 941472 Сервис Баллы производительности системы

Введение в сервисы catABMS

Сервисы (Catware Autostart) - тупо файлы, выполняющиеся при загрузке системы и обеспечивающие работу каких либо системных аспектов, команд и так далее.

Тоже самое, но с coreRC

Core Run Commands - тупо файлы, выполняющиеся при запуске команды

Введение в CatLib

Тупо файлы с дэф-ами, чтобы не костылить в катенве. Знайте своё место блять!

Введение в catABMS Chains

Тупа новенькая фича. Итак, приступим:

Есть папка с файлами на питоне - chains. Хочу, чтобы после выполнения моей команды, юзер что то написал и файл из той папки активировался ЧИСТО У ТОГО ЮЗЕРА. Окей.

Делаем ебало:

message("Привет! Что бы ты хотел пожелать админам?")

Инициируем выполнение цепочки:

setparam(user_id, "stage", "mychainfile")

В файле цепочки, пишем код после инпута юзера:

mta(f"Привет, админы. Пользователь {getmention(user_id)} желает всем вам {textic_2}!")

И также в файле цепочки даём сигнал, что выполнение цепочки требуется прекратить:

setparam(user_id, "stage", "default")

Пример кода команды (кстати)

Конфигурация команды пусть будет:

{

"author": "Catpy Programmist <catpyproger@mail.ru>",

"mode": "=",

"deps": "None",

"identificator": "ping",

"command_ru": "пинг",

"description": "Пинг бота",

"testing": false,

"hide": true,

"restricted": false,

"disabled": false

}

И код команды:

message("Понг!")

Введение в CFAT или файлы catABMS

Просто приведём таблицу:

Папка Что хранится (описание)
chains Файлы цепочек
chats БД чатов
commands Файлы с командами
configs Файлы с конфигурацией бота
corerc Файлы CoreRC
exf Файлы CatShell
experimental Тестируемые, предрелизные команды
lib Файлы с библиотеками
services Файлы Catware Autostart
users Данные пользователей (база данных)

История котопая

В этой статье будет описана история становления котопая как бота и будущего захватителя рынка ботов. Она без дат, но некоторые всё же будут.

Большой Взрыв (2018)

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

Из функций там был список команд, кликер, и триггеры по типу "амуде":

Пользователь: амуде

Бот: АМУДЕ НЕ ПАРАША

ПОБЕДА БУДЕТ НАША

АМУДЕ ПОТАНЦЕВАЛ

ВСЕХ ВЫЕБЕТ В АНАЛ

Вообщем, как и некоторые поймут - бот был вдохновлён также и Izzy Laif'ом.

Тогда он даже и не назывался "котопаем" -- он назывался "izzytop".

Потом появились вознаграждения за клики, множители счёта и прочие ебанские бонусы всего лишь для цифр, а также имущество, дающее некоторые техвозможности

В это время, к проекту присоединились Никита Полищук[страдает хуйнёй], Никита Худяков, Макс Мерзляков, и Василий Васильконов[страдает хуйнёй].

Большая {Проблема,Жопа}

Закончился пробный период смартбота:

- отвалилось usage в беседах

- отвалились некоторые функции

- сам бот умер.

Все пришлось делать заново.

РЕВОЛЮЦИЯ (2018-20 января 2019)

Бот больше не зависит от тарифов смартбота, а только от рук разработчиков (катвиерда, гены). Все фичи бота были перечёркнуты по причине катвиерд (а на то время izzytopd) был неразумной обьезьяной, неспособной написать helloworld в вк_апи.

Кое как он осилил с Васей Васильконовым запуск этого ведёрка (заставляние его отвечать) и пошло поехало.

История

- 1.0, бот умеет показывать список команд

- 1.1, бот умеет считать 1, 2, 3, 4...

- 1.7, бот научился слать картинки по URL.

- 2.2.6, теперь появились функции пизденья логотипа гугла (вроде, не помню)

- 2.3.7, добавлена конфигурация бота (техническое)

- 3.0, бот умеет искать по википедии

- 4.0, бот умеет переводить раскладку

- 5.5, добавлен яндекс переводчик

- 6.0, ???

- 7.0, добавлена куча хуйни ебаной и говна сраного.

- 7.1, пофикшен какой то жоский баг

- 7.2, (забыл об этом сказать, но) кривенько адаптирован под беседы. Выдавал баги, но работал.

РЕБРЕНДИНГ (лето 2019)

Бот переименован в Catpy и имеет новый счёт версий, намного более правильный.

0.1, 0.2 - более адаптирован в беседах

0.3 - имеет какие то текстовые функции, превращение в винительный падеж

0.4 - новый синтаксис команд и новые функции (дебильные)

0.5 - что то такое, я не помню что

0.6 - появление великого менеджера аккаунтов и бесед. суперстабильная вещь, безотказная как Автомат Калашникова

0.7 - ещё одна куча хуйни я не помню какой ПИЗДЕЦ

0.8 - сильно улучшен менеджер из 0.8. Имеет очень много сходств с Виндуз Висла (крутая но нестабильная)

0.9 - куча функций для обработки фотографий. Именно там завезли команду /кончил.

РЕФАКТОРИНГ (2020, новый год-лiто)

Аффффтор понял что он слишком много наговнокодил и решил всё разгрести. Все что было ранее = стало называться Catpy Legacy, а что после - Catpy NLT.

0.9_30 - бота по новой заставили отвечать, теперь команды разбиваются по модулям, новый синтаксис, прочее разбитие по файлам и новые технологии.

... тут могли быть билды с прочим пиздежом блаблабла что было добавлено бля бля бля.

0.9_42/50 - все команды из Legacy были успешно портированы, впереди остались только новые планы.


Тут припёрся Иван Загайнов и начал новую революцию, спасибо великому творцу


О хостингах:

С самого начала котопай был нестабилен как залупа, и хостился на ноуте админа.

Потом мы открыли для себя pythonanywhere, и там бот падал, но мы починили. Он стабильно падал каждые 3 дня.

В таком режиме мы хостились очень долго, (и сейчас хостимся, т.к бот начал активно разрабатываться)

Потом появился в нашей (недавно) Участник:Anton2319. Он нам дал место на своём хостинге, а потом и виртуалку

После же котопай съебал на таймвеб, где стабильно хостится и доныне.

БУДУЩЕЕ (это скорее затянется на 2021)

1.0 - пиздец как много улучшений.