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

Содержимое страницы заменено на «<div style="background:black;width:100%;text-align:center"> <h1 style="font-size:150px"><span style="color:#359cfc">#нет</span><...»
imported>Catweird
Нет описания правки
imported>Megejot408
(Содержимое страницы заменено на «<div style="background:black;width:100%;text-align:center"> <h1 style="font-size:150px"><span style="color:#359cfc">#нет</span><...»)
Строка 1: Строка 1:
Перед созданием команд убедитесь, что они соответствуют требованиям Catware:
<div style="background:black;width:100%;text-align:center">
 
<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
|Данные пользователей (база данных)
|}
Анонимный участник