Перевод текста на русский язык:
Центр
CatCode — это милый универсальный специальный код, который продолжает дух CQ-кодов.
CatCode представляет собой строку специального формата с определёнными правилами: [CAT:xxx,param=value,param=value,]
, где:
[
и заканчивается ]
;:
;=
;CatCode2 уже доступен! Скорее переходите на 👉CatCode2, чтобы ознакомиться, попробовать, поставить лайк и внести свой вклад!
CatCode будет использоваться в качестве специального кода для отправки сообщений в рамках фреймворка simpler-robot (версия 2.x simple-robot-core). Он заменит ранее использовавшиеся CQ-коды.
Конечно, CatCode также является форматом сообщения, и в некоторой степени его можно рассматривать как JSON или другой формат сообщения, но я не думаю, что он будет более полезным.
Однако если вам нравится CatCode, вы можете использовать его!
Чтобы избежать путаницы, в тексте CatCode не должно быть следующих символов: [
, ]
, &
, табуляции и перевода строки. Кроме того, в CatCode нельзя использовать запятую ,
и знак равенства =
.
Поэтому правила экранирования CatCode следующие:
&
-> &
[
-> [
]
-> ]
,
-> ,
=
-> =
\n
->
\r
->
\t
-> 	
В этой библиотеке есть множество инструментов для анализа и упаковки CatCode.
Все инструменты начинаются с Cat (или содержат его), например, CatDecoder, CatCodeUtil и т. д., а все классы, связанные с упаковкой CatCode, начинаются с Neko (или содержат это слово). Например, Neko, Nyanko (FastNeko), MapNeko.
Существует несколько типов классов для упаковки CatCode: Neko (консервативная кошка, параметры которой нельзя изменить), MutableNeko (изменчивая кошка, которая может динамически изменять параметры, но не основана на строковых операциях), EmptyNeko (буддийская кошка, статический экземпляр с пустыми параметрами), а также соответствующие NoraNeko (дикая кошка, CatCode с большим типом, отличным от CAT, но соответствующий правилам дикой кошки).
Инструменты CatCode в основном основаны на строковых операциях, что снижает использование ресурсов и потери при анализе и упаковке, а также повышает эффективность (особенно при использовании неизменяемой кошки).
Любой код, соответствующий правилу [TYPE:type,param=value,param=value,]
, можно считать CatCode, даже если TYPE не CAT.
Этот тип «дикой кошки» называется WildcatCode (WildcatCode), и его можно анализировать с помощью инструмента WildcatCodeUtil. В качестве упаковки используется класс NoraNeko.
※ Версия доступна по значку версии выше.
<dependency>
<groupId>love.forte</groupId>
<artifactId>catcode</artifactId>
<version>${version}</version>
</dependency>
Будет реализована через Kotlin Multiplatform и предоставлена в виде библиотеки JavaScript, а затем выпущена в виде релиза на GitHub, Maven и npm (ожидается).
Предварительный просмотр: CatCode-multiplatform
Будет реализован через Kotlin Multiplatform, предоставит файлы заголовков .h
и соответствующие файлы .dll
(Windows), .so
(Linux).
Предварительный просмотр: CatCode-multiplatform
Вы можете реализовать стандарт CatCode самостоятельно.
Адрес документации: https://www.yuque.com/simpler-robot/catcode
Документация находится в разработке.
Есть несколько часто используемых типов CatCode, у которых есть стандартные параметры.
Тип text является базовым и представляет собой текст без CatCode. У него только один параметр text, представляющий текстовое содержимое.
Причина существования text заключается в том, что иногда требуется представить текстовый контент как экземпляр Neko.
at — очень распространённый тип, представляющий @ определённого человека. У него есть два общих параметра: code и all.
code представляет идентификатор пользователя, которому адресован at, это строка или число.
Например: [CAT:at,code=1149159218]
.
all указывает, является ли этот CAT @ всем, имеет логический тип.
Например: [CAT:at,all=true]
.
Обычно существует только один из параметров code и all.
image представляет изображение. У этого типа есть несколько общих параметров: id, file, url и flash.
id обычно представляет идентификатор изображения на сервере.
file обычно представляет путь к файлу изображения или может использоваться вместо id.
url представляет сетевой путь изображения.
flash имеет логический тип и указывает, является ли изображение снимком экрана или временным изображением.
Например: [CAT:image,id=1,file=1.jpg,flash=true]
Как правило, существуют file и url, или хотя бы один из них, а id определяется наличием значения id.
voice представляет речь. Его параметры аналогичны параметрам image.
face — ещё один распространённый тип, но он может поддерживаться не всеми платформами. Тем не менее он широко используется. Он имеет один параметр id, представляющий эмоджи.
Например: [CAT:face,id=1]
Контент представляет собой краткое описание ссылки для обмена.
URL представляет ссылку для обмена.
Image представляет обложку ссылки для обмена.
При этом параметр URL является обязательным.
Например: [CAT:share,url=www.baidu.com,title=«Байду» вам в помощь,content=«Байду» вам в помощь]
// Получаем экземпляр утилиты.
final CatCodeUtil catUtil = CatCodeUtil.INSTANCE;
// Создаём код Cat — строку
// Например, создаём строку типа: [CAT:at,code=123456,name=forte,age=12]
// 1. StringCodeBuilder
final CodeBuilder<String> stringBuilder = catUtil.getStringCodeBuilder("at");
String catCode1 = stringBuilder
.key("code").value(123456)
.key("name").value("forte")
.key("age").value(12)
.build();
System.out.println(catCode1);
// Создаем код Cat — Neko
// Например, создаем код типа Neko: [CAT:image,file=1.jpg,dis=true]
// 2. NekoBuilder
final CodeBuilder<Neko> nekoBuilder = catUtil.getNekoBuilder("image");
Neko catCode2 = nekoBuilder
.key("file").value("1.jpg")
.key("dis").value(true)
.build();
System.out.println(catCode2);
// NekoObjects содержит доступные значения, которые являются постоянными без параметров, например, at целиком.
final Neko alAll = NekoObjects.getNekoAtAll();
final String at = CatCodeUtil.toCat("at", "qq=123");
Neko : ねこ (нэко), что означает «кот».
NoraNeko : のらねこ (нора нэко), что означает «дикий кот».
В будущем планируется выпустить универсальную библиотеку, совместимую со всеми платформами, которая будет работать с кодами Cat на JVM/JS/Native. С переносом кода на разные платформы проблем нет, выполнение тестов на native также не вызывает особых трудностей, но я не знаю, как опубликовать его, поэтому... поговорим об этом позже.
см. LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )