Создание команд: различия между версиями

Материал из Catware Wiki
Перейти к навигации Перейти к поиску
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:
<div style="background:black;width:100%;text-align:center">
Перед созданием команд убедитесь, что они соответствуют требованиям Catware:
<h1 style="font-size:150px"><span style="color:#359cfc">#нет</span><span style="color:yellow">войне</span></h1>
 
<span style="font-size:40px;color:white">Фонд Catware против войны на Украине</span>
- команда действительно имеет применение
</div>
 
- команда выполняется как можно быстрее
 
- команда не использует запрещённых методов
 
Проверили? Поехали дальше.
 
== Создание конфигурации команды ==
Примерная конфигурация команды выглядит так:
 
<code>{</code>
 
<code>"author": "catwared",</code>
 
<code>"mode": "=",</code>
 
<code>"deps": "None",</code>
 
<code>"identificator": "test",</code>
 
<code>"command_ru": "тест",</code>
 
<code>"description": "Тестовая команда",</code>
 
<code>"testing": false,</code>
 
<code>"hide": false,</code>
 
<code>"restricted": false,</code>
 
<code>"disabled": false</code>
 
<code>}</code>
 
Поле "author": в него вы вписываете свои данные (никнейм, способ связаться)
 
Поле "mode": способ реагирования на команду:
{| class="wikitable"
|+
!Режим использования
!Описание
|-
|=
|Команда не требует аргументов, либо они опциональны
|-
|start
|Команда '''ОБЯЗАТЕЛЬНО''' требует аргумента
|-
|pic
|Команда требует приложенной картинки
|}
'''Поле deps не нужно, т.к пока что не добавили поддержку/замену'''
 
Поле "identificator": идентификатор вашей команды
 
Поле "command_ru": название (триггер) команды. '''Не должно содержать пробелов'''
 
Поле "description": описание вашей команды.
 
Флаги:
{| class="wikitable"
|+
!testing
!hide
!restricted
!disabled
|-
|Значение факта команды для тестеров
|Скрытие команды
|Команда потенциально оскорбительна?
|Команда отключена?
|}
Теперь перейдём к <s>выебонам</s> возможностям написания под CatABMS
 
== CatENV ==
Начнём пожалуй с CatENV - набор определений (методов), сильно упрощающий написание кода.
{| class="wikitable"
|+
!Название метода
!Передаваемые аргументы
!Возможный ответ от функции
!Что это?
|-
|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
|Любой текст
|<s>Любой текст</s>
|Фишка юникода
|-
|HostToIp
|URL
|123.123.123.123
|Получение IP из домена
|-
|percent
|сколько всего, сколько из "всего"
|53.0
|Получение процента
|-
|getid
|короткое имя ВКонтакте
|131236782
|Получение цифрового ID пользователя
|-
|getmention
|user_id
|<nowiki>[id123123123|Имя Фамилия]</nowiki>
|Получение упоминания пользователя
|-
|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:
{| class="wikitable"
|+
!Название метода
!Входные данные
!Выходные данные
!Принадлежит библиотеке
|-
|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, сервисы) ==
{| class="wikitable"
|+
!Переменная
!Примерное значение
!Принадлежность к
!Описание
|-
|osname
|GNU/Linux
|Загрузчик
|Семейство ОС на сервере
|-
|admins
|123,123,123,123,123
|Конфигурация системы
|Список ID вконтакте админов бота
|-
|botname
|CatPy Stable
|Конфигурация системы
|Имя бота
|-
|version
|0.9_53
|Конфигурация системы
|Версия бота
|-
|abms_name
|<nowiki>CatABMS | Catware Advanced Bot Manipulation System</nowiki>
|Конфигурация системы
|Название управляющей системы
|-
|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. Хочу, чтобы после выполнения моей команды, юзер что то написал и файл из той папки активировался ЧИСТО У ТОГО ЮЗЕРА. Окей.
 
Делаем ебало:
 
<code>message("Привет! Что бы ты хотел пожелать админам?")</code>
 
Инициируем выполнение цепочки:
 
<code>setparam(user_id, "stage", "mychainfile")</code>
 
В файле цепочки, пишем код после инпута юзера:
 
<code>mta(f"Привет, админы. Пользователь {getmention(user_id)} желает всем вам {textic_2}!")</code>
 
И также в файле цепочки даём сигнал, что выполнение цепочки требуется прекратить:
 
<code>setparam(user_id, "stage", "default")</code>
 
== Пример кода команды (кстати) ==
Конфигурация команды пусть будет:
 
<code>{</code>
 
<code>"author": "Catpy Programmist <catpyproger@mail.ru>",</code>  
 
<code>"mode": "=",</code>
 
<code>"deps": "None",</code>  
 
<code>"identificator": "ping",</code>  
 
<code>"command_ru": "пинг",</code>  
 
<code>"description": "Пинг бота",</code>
 
<code>"testing": false,</code>
 
<code>"hide": true,</code>
 
<code>"restricted": false,</code>
 
<code>"disabled": false</code>
 
<code>}</code>
 
И код команды:
 
<code>message("Понг!")</code>
 
== Введение в CFAT или файлы catABMS ==
Просто приведём таблицу:
{| class="wikitable"
|+
!Папка
!Что хранится (описание)
|-
|chains
|Файлы цепочек
|-
|chats
|БД чатов
|-
|commands
|Файлы с командами
|-
|configs
|Файлы с конфигурацией бота
|-
|corerc
|Файлы CoreRC
|-
|exf
|Файлы CatShell
|-
|experimental
|Тестируемые, предрелизные команды
|-
|lib
|Файлы с библиотеками
|-
|services
|Файлы Catware Autostart
|-
|users
|Данные пользователей (база данных)
|}

Версия от 21:29, 15 марта 2022

Перед созданием команд убедитесь, что они соответствуют требованиям 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 Данные пользователей (база данных)