1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ForteScarlet-simple-robot-core

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
update.md 40 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 20:19 edce13c

Версия обновления записи

now(1.17.+ или 1.16.4+)

  • Реализован параметр orNull для @Depend. Если orNull = true, то при отсутствии значения будет вставлено null (по умолчанию ошибка сохраняется).
  • NicknameAble и RemarkAble интегрированы в код, связанный с codeAble.
  • Изменён GroupAddRequest, добавлены некоторые доступные атрибуты.

1.16.3-BETA

  • В процесс загрузки ресурсов добавлены дополнительные отладочные журналы.
  • Английский язык начинается с заглавной буквы.

1.16.3

  • Обновлён модуль cqCodeUtils до версии 1.6.1.

  • Попытка оптимизации проблемы совместимости версий JDK, вызванной javax.annotation.Resource.

  • Изменение способа вычисления ключа ограничителя потока.

  • Исправлена ошибка, из-за которой ограничитель потока не мог классифицировать ограничение по коду.

  • Добавлен некоторый код для реализации будущих функций.

  • Добавлено отслеживание событий удаления друзей: FriendDelete и соответствующая аннотация: @Listen(MsgGetTypes.friendDelete) и @OnFriendDelete.

  • Удалены лишние и устаревшие элементы.

1.16.2

  • Модуль cqCodeUtils обновлён до версии 1.6.0 для решения проблемы, связанной с приёмом at для всех, которая могла вызвать ошибку.

1.16.1

  • Модуль cqCodeUtils обновлен до версии 1.5.1-1.15 для устранения ошибки, связанной с его удалением.

1.16.0

  • quartz обновлён до версии 2.3.2.
  • Интегрирован модуль cqCodeUtils, теперь рекомендуется использовать KQCodeUtils вместо оригинальной CQCodeUtil (всё ещё можно использовать, но больше не поддерживается).
  • Для @Filter(at = true) были внесены специальные изменения, теперь при at = true текст сообщения автоматически удаляет at из CQ-кода.
  • Исправлено получение динамических параметров в @Filter.
  • Добавлена аннотация @Async(...), которая помечает асинхронные функции. Она применяется к функциям прослушивания для обозначения асинхронного выполнения. Асинхронное выполнение управляется инициализированным пулом потоков.
  • Добавлена аннотация @Limit(...), которая отмечает функции прослушивания, которые могут быть активированы в течение определённого периода времени. Например, @Limit(5) означает, что функция может быть активирована только один раз в течение 5 секунд. Эта функция основана на ограничителе потока для функций прослушивания.
  • Оптимизирован параметр at в аннотации @Filter, теперь он автоматически удаляет at из текста сообщения при выполнении сопоставления.
  • Реализовано сопоставление параметров аннотаций, теперь шаблоны прослушивания аннотаций (например, @OnPrivate(...)) предоставляют те же параметры (@Listen(...)), что и (например, sort, name), используя @OnPrivate(sort = 500) в качестве примера, эквивалентного @Listen(value = MsgGetTypes.privateMsg, sort = 500).
  • Пользователи также могут настраивать наследование аннотаций и сопоставление параметров, а также получать их через AnnotationUtils.getAnnotation(...).

1.15.2

  • Исправлена логическая ошибка в классе реализации botManager.
  • Улучшена система интернационализации.

1.15.1

  • Исправлена проблема, когда если @Filter не был последним параметром, заключённым в {{...}}, возникало исключение.

1.15.0

  • Изменено определение интерфейса для добавления методов получения псевдонимов и заметок для некоторых интерфейсов (например, групповые сообщения). Псевдонимы и заметки контролируются тремя интерфейсами: NicknameAble, RemarkAble и NickOrRemark, которые можно использовать в пользовательских фильтрах для различных суждений.
  • В Configuration добавлены следующие методы: putValue(String, Object), getValue(String), clearValue() и getValueEntrySet(), что позволяет сохранять любую настраиваемую информацию в Configuration.
  • Класс HttpClientHelper добавил статический метод clear() для очистки всех сохранённых шаблонов http.
  • Слушатели фильтров больше не являются статическими.
  • Завершено создание механизма закрытия, теперь вы можете закрыть текущий сервис с помощью экземпляра приложения компонента или метода run, возвращающего экземпляр контекста, и запустить новый экземпляр приложения для повторного запуска. Однако обычно не рекомендуется часто закрывать и запускать сервис.

1.14.1

  • Изменено значение по умолчанию для параметра resource в @SimpleRobotApplication с /simple-robot-conf.properties на simple-robot-conf.properties.
  • Исправлена ошибка сортировки в listenerManager.

1.14.0

  • Изменены правила переопределения конфигурации: теперь это порядок приоритета: параметры запуска > файл конфигурации > аннотация.

  • В классе конфигурации добавлены параметры запуска, связанные с запуском.

  • Параметры запуска используются для добавления параметров в конфигурацию с помощью --xxx.

  • Добавлен параметр конфигурации simbot.profiles.active (или совместимый с spring: spring.profiles.active), который позволяет загружать дополнительные файлы конфигурации. Это похоже на Spring. Например, если ваш файл конфигурации — conf.properties, и вы указали simbot.profiles.active=dev,test, то помимо текущего файла конфигурации будут загружены файлы conf-dev.properties и conf-test.properties. Последующие загруженные параметры конфигурации переопределяют исходные параметры конфигурации. Вы можете комбинировать параметры запуска --simbot.profiles.active= для достижения различных конфигураций среды, таких как порт по умолчанию 8080 в сети и порт 8877 на локальном компьютере.

  • Добавлены некоторые регулярные выражения для сопоставления типов ключевых слов: FIND, TRIM_FIND, RE_CQCODE_FIND, RE_CQCODE_TRIM_FIND, FIND_0, TRIM_FIND_0 и RE_CQCODE_FIND_0. В конце FIND используется регулярное выражение find(0) для сопоставления.

  • Все регулярные выражения, связанные с KeywordMatchType (например, REGEX, FIND и т. д.), поддерживают динамическое извлечение параметров. Синтаксис извлечения динамических параметров: {{имя[,регулярное выражение]}}, где имя — это имя извлекаемого динамического параметра, а регулярное выражение — это регулярное выражение для сопоставления. Например:

@Beans
public class Test{
    /** Слушайте сообщение «номер равен (\\d+)» и извлеките \\d+ как номер параметра */
    @Listen(MsgGetTypes.privateMsg)
    @Filter("номер равен {{номер,\\d+}}")
    public void test1(PrivateMsg msg, MsgSender sender, @FilterValue("номер") Long number){
        sender.SENDER.sendPrivateMsg(msg, "Ваш номер: " + number);
    }
    // ...
}

Здесь @Filter по умолчанию использует регулярное выражение REGEX, поэтому можно использовать динамические параметры, а затем добавить @FilterValue («номер») Long number в метод параметра. Здесь @Filter значение «номер» является номером параметра в @Filter, а регулярное выражение сопоставления номера — \d+. А @Filter фактически становится «номер равен (\d+)». Регулярное выражение в синтаксисе извлечения можно опустить, чтобы оно стало {{имя}}, и регулярное выражение по умолчанию станет .+. Если вы хотите использовать обычную строку, используйте обратную косую черту для экранирования.

  • Добавлены аннотации шаблонов:

    • @OnDiscuss
    • @OnFriendAdd
    • @OnFriendAddRequest
    • @OnGroup
    • @OnGroupAddRequest
    • @OnGroupAdminChange
    • @OnGroupBan
    • @OnGroupFileUpload
    • @OnGroupMemberIncrease
    • @OnGroupMemberReduce
    • @OnGroupMsgDelete
    • @OnPrivate
    • @OnPrivateMsgDelete Они представляют соответствующие типы мониторинга, такие как @OnPrivate, что эквивалентно @Listen(MsgGetTypes.privateMsg).
  • Resource совместим с аннотацией, где name и type в аннотации соответствуют value и type в @Depend.

  • ListenerManager предоставляет открытый метод getListenerMethods(), который можно внедрить в этот класс и использовать для получения всех экземпляров функций прослушивания, комбинируя некоторые пользовательские аннотации для создания динамических меню на основе функций прослушивания. IOUtils заменить на hutool-core:

  • ListenerManager — использовать новый компактный map;
  • исправить ошибку в botManager, которая могла приводить к невозможности получения информации;
  • SimpleRobotContext реализовать интерфейс Closeable.

1.13.0:

  • изменить механизм загрузки перехвата сообщений;

  • тип журнала зависимости изменить на debug;

  • добавить реализацию интерфейса Closeable в центр зависимостей, чтобы при выполнении close все объекты, реализующие интерфейс Closeable, были закрыты и удалены из списка одноэлементных объектов;

  • для ListenContext добавить статический метод getLocal(), который будет сохранять текущий контекст в ThreadLocal при срабатывании функции прослушивания и очищать его после завершения всех функций прослушивания;

  • добавить функцию прослушивания Intercept с использованием метода ListenIntercept и аннотации @Beans, функция возвращает true для пропуска сообщения, false — для блокировки;

  • создать класс ListenInterceptContext для использования в функции ListenIntercept, предоставляющий доступ к большому количеству параметров в методах ListenMethod;

  • в MsgSender добавить метод reply() для быстрого ответа, который проверяет тип аргумента MsgGet и генерирует исключение, если это не PrivateMsg, GroupMsg или DiscussMsg;

  • включить экспериментальную функцию runAuto().

1.12.1 (beta):

  • добавить параметр конфигурации simbot.core.checkBot со значением по умолчанию true, который перед запуском функции прослушивания проверяет, зарегистрирован ли бот, и блокирует сообщение, если бот не зарегистрирован;
  • оптимизировать HttpClientAble;
  • переместить класс констант com.forte.qqrobot.PriorityConstant в com.forte.qqrobot.constant.PriorityConstant;
  • исправить проблему с регистрацией в default BotManager, когда регистрация с учётной записью приводила к сбою проверки;
  • внести изменения в процесс инициализации некоторых bean-компонентов;
  • изменить конфигурацию default BotManager;
  • устранить потенциальную проблему взаимоблокировки в центре зависимостей;
  • возможно, внести изменения в реализацию ConfigProperties, что может привести к несовместимости.

1.12.0 (beta):

  • улучшить фабрику зависимостей и устранить некоторые скрытые проблемы;

  • добавить два параметра в аннотацию @Beans: init() по умолчанию false и priority() по умолчанию Integer.MAX_VALUE, которые определяют, выполняется ли инициализация после создания bean-компонента и его приоритет;

  • ввести концепцию приоритета для @Beans. При получении bean-компонента через тип, если существует несколько экземпляров этого типа, выбирается компонент с наивысшим приоритетом (в порядке возрастания, то есть с наименьшим числовым значением). Например, для интерфейса TestInterface с двумя реализациями Test1 и Test2, где @Beans имеет приоритет 1 и 2 соответственно, при получении TestInterface будет выбран Test1;

  • если существует несколько компонентов с наивысшим приоритетом, будет выдано исключение. По умолчанию приоритет равен Integer.MAX_VALUE;

  • сделать BotInfo наследуемым от интерфейса Closeable;

  • создать класс PriorityConstant для определения основных констант;

  • изменить возвращаемое значение метода registerBot в BotManager на botInfo после успешной регистрации;

  • добавить конфигурацию setClassLoader в базовый класс конфигурации для настройки загрузчика классов, используемого в таких местах, как сканирование пакетов. По умолчанию используется загрузчик классов текущего потока;

  • заменить внутренний экземпляр BotManagerImpl по умолчанию на автоматически загружаемый модуль, имеющий самый низкий приоритет;

  • внедрить ConfigProperties в качестве компонента по умолчанию, который можно использовать для предоставления дополнительных настроек модулям при использовании конфигурационных файлов. Рекомендуется использовать префикс simbot для всех конфигураций;

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

  • добавлен метод getMethod() в SenderContext, родительский класс трёх методов отправки, для поддержки получения экземпляра текущего метода перехвата;

  • три метода отправки больше не будут перехватывать методы объекта по умолчанию (например, метод toString(), если только компонент не переопределил этот метод).

  • значительно перестроена внутренняя структура. Теперь при запуске, если нет зарегистрированной информации о ботах, не будет автоматически регистрироваться адрес по умолчанию. Вместо этого будет выдаваться предупреждение.

1.11.4:

  • добавлены модули (module) для загрузки языков в системе;
  • исправлена проблема с невозможностью использования ListenContext при прослушивании. Добавлен метод put() с тем же назначением, что и get().

1.11.3:

  • устранена проблема с двойным экранированием в CQAppendList;
  • устранено исключение индекса за пределами границ в CQCodeUtil при получении CQ кода;
  • по умолчанию установлен режим «运势» для группового доступа.

1.11.2:

  • исправление ошибок в CQCode и CQCodeAble, связанных с групповыми кодами;
  • добавление реализации CQCodeAble и GroupCodeAble в некоторые интерфейсы.

1.11.1:

  • возврат к исходному режиму внутреннего кода в части ListenerManager.

1.11.0:

  • добавление двух методов в BotManager: BotInfo logOutBot(String code) и public void refreshBot(String code), для удаления и обновления информации о ботах;
  • предоставление метода equals по умолчанию в BotInfoImpl;
  • изменение механизма фабрики зависимостей, теперь получение зависимостей вызовет исключение вместо возврата null;
  • изменение логики загрузки функций прослушивания, теперь функции загружаются при запуске;
  • добавление метода получения DependCenter в возвращаемом значении BaseContext в методе run.

1.10.7:

  • исключения, вызванные кодом состояния HTTP 300 и выше, будут выброшены, а не перехвачены;
  • добавлена обработка исключений до версии 1.11.x. Соответствующая документация: https://www.kancloud.cn/forte-scarlet/simple-coolq-doc/1614982;
  • параметр MsgIntercept в MsgIntercept содержит параметр MsgGetContext, который включает параметр ListenContext;
  • наследование ListenContext от BaseContext.

1.10.6:

  • устранение проблемы с искажением китайских символов при выводе на консоль в системах с кодировкой, отличной от UTF-8;
  • простое изменение логики в некоторых частях кода.

1.10.5:

  • оптимизация обработки Cookie в стандартном HttpClient;
  • добавление базовой реализации API для группового доступа;
  • создание класса BaseAPITemplate для предоставления общего шаблона API;
  • добавление базового API для группового доступа к информации об учётных записях;
  • новый метод getLangMessage для получения сообщения об исключении в классе исключений;
  • обновление содержания журнала при проверке версии;
  • модификация AnnotationUtils для адаптации к другим ситуациям;
  • устранение проблемы, из-за которой все экземпляры исключений в QQLog были нулевыми;
  • использование зеркала Alibaba Cloud Maven для проверки версий.

1.10.4:

  • замена EmptyInputStream на внутренний класс вместо использования класса httpcore для предотвращения возможных конфликтов версий.

1.10.3:

  • исправление ошибки в CQCodeUtil, связанной с получением CQ кодов, и отказ от использования регулярных выражений.

1.10.2:

  • снижение уровня соответствия параметров CQ кодов;
  • регистрация функции определения at;
  • подготовка к будущему коду.

1.10.1:

  • исправление проблемы, вызванной изменением механизма фильтрации @Filter, которая приводила к тому, что перечисления, созданные фабрикой KeywordMatchTypeFactory, становились непригодными для использования.

1.10.0:

  • изменение SENDER, добавление нового интерфейса sendGroupNotice для отправки групповых уведомлений;
  • начиная с этой версии, SENDER sendPrivateMsg, sendGroupMsg и sendDiscussMsg возвращают строку, представляющую идентификатор сообщения, для реализации возможности отмены собственных сообщений. Обычно, если возвращаемая строка равна нулю, это означает, что исходное возвращаемое значение было ложным. Если ваш sender при отправке сообщения перехватывается почтовым перехватчиком, то по умолчанию возвращаемое значение может быть пустой строкой, а не null.
  1. В стартере измените соглашения, ориентированные на компоненты, разделите конфигурации «запуск компонента», «запуск службы компонента» и т. д.

  2. Объедините опции, подобные «без запуска службы», в ядро, предоставьте параметр конфигурации core.enableServer для определения необходимости запуска компонента службы, по умолчанию — true (включить).

  3. Благодаря изменению механизма запуска компонентов вы можете реализовать пользовательское получение сообщений и более эффективную обработку с помощью этих двух объектов. Например, вы устанавливаете конфигурацию core.enableServer = false, чтобы предотвратить запуск внутренних серверов компонентов (большинство из них недостаточно эффективны), а затем используете «преобразователь функций прослушивания строк» и «исполнитель функций прослушивания» для распределения задач через внешние сервисы (например, общие springboot + tomcat веб-сервисы или высокопроизводительные nio сервисы на основе netty).

  4. Логика обработки прослушивателя изменяется: когда принимается сообщение от незарегистрированного бота, сообщение не обрабатывается и создаётся журнал ошибок.

  5. Добавьте параметр ListenContext (контекст прослушивания) к интерфейсу Filterable.

  6. Измените параметр @Filter (аннотация объекта) на класс Filter (объект данных с тем же именем).

  7. Добавьте текст ошибки в языковой файл.

  8. Исправьте ошибку, связанную с невозможностью связать текущий контекст прослушивания со значением текущего прослушивающего устройства.

  9. Просто измените внутреннюю структуру ListenContext.

  10. Изменённое внутреннее правило соответствия для параметра value @Filter теоретически немного повысит эффективность.

  11. Создайте интерфейс HttpClientAble для реализации настраиваемых HTTP-запросов, чтобы пользователи могли отказаться от использования внутреннего HttpClientUtil. Если он не реализован, ядро предоставит реализацию по умолчанию, аналогичную исходной HttpClientUtil.

  12. Создайте класс HttpClientHelper для использования интерфейса HttpClientAble, используя метод registerClient для регистрации.

  13. Добавьте аннотацию @HttpTemplate для автоматической регистрации реализации класса интерфейса HttpClientAble в классе HttpClientHelper.

  14. Настройте ограничения для родительского стартера BaseApplication для дочерних классов, реализуя разделение запуска служб и получения информации, позволяя ядру контролировать запуск служб.

  15. Настройте метод run родительского стартера BaseApplication, чтобы он имел возвращаемое значение, и перенесите исходное значение, которое можно получить через объект экземпляра приложения, в SimpleRobotContext для получения.

  16. Предоставьте возвращаемое значение метода run запуска как SimpleRobotContext (или его особый подкласс для компонента) и предоставьте некоторые полезные функции, такие как:

    • три основных отправителя;
    • BotManager;
    • функция преобразования строки прослушивающей функции в объект MsgGet;
    • исполнитель прослушивающих функций;
    • DependCenter (центр зависимостей).
  17. Добавьте три параметра к аннотации @Filter: String[] bot(), KeywordMatchType botMatchType() и MostType mostBotType(). Эти параметры похожи на фильтрацию по групповому номеру и номеру QQ и используются для фильтрации «текущего получателя сообщения BOT». Если полученное значение ThisCode равно null, оно будет пропущено.

  18. Измените стратегию сопоставления аннотаций @Filter: если текущее сообщение является «носителем группового номера», но полученный групповой номер равен null, оно будет автоматически пропущено (ранее не пропускалось).

  19. Измените стратегию сопоставления аннотаций @Filter: если текущим сообщением является «номер QQ», но полученное значение номера QQ равно null, оно будет автоматически пропущено (раньше не пропускалось).

  20. Текущий порядок фильтрации по умолчанию: бот → группа → код → слово → пользовательский.

  21. Измените правила сопоставления параметров аннотации @SimpleRobotApplication в пути ресурсов, если они не могут быть получены, попробуйте использовать их в качестве пути к файлу.

1.8.1

  1. Измените параметры по умолчанию для пула потоков:
    • коэффициент блокировки по умолчанию равен 0;
    • количество ядер по умолчанию составляет половину оптимального количества потоков процессора;
    • максимальное количество потоков по умолчанию в два раза превышает количество ядер + 1.
  2. Добавьте два метода в класс CoreSystem для обнаружения текущей версии ядра и получения текущей версии, добавив текущую версию ядра в SystemProperties.
  3. Добавьте элемент конфигурации core.checkVersion, который является логическим типом и определяет, есть ли обновляемая версия, которая может быть непосредственно заменена, по умолчанию true.
  4. Добавьте интерфейс getHeadUrl (получение изображения группы) по умолчанию к классам GroupInfo и GroupList Group.
  5. Оптимизируйте логику преобразования аннотаций и конфигураций запуска, чтобы она поддерживала аннотации на любом классе, реализующем интерфейс Application, получая экземпляр и выполняя его. Порядок конфигурации: код конфигурации → перекрытие → конфигурация аннотации → перекрытие → файловая конфигурация.
  6. Исправлена ошибка AtDetection после версии 1.8.x.

1.8.0

  1. Добавьте больше предустановок в перечисление KeywordMatchType: STARTS_WITH, TRIM_STARTS_WITH, RE_CQCODE_STARTS_WITH, RE_CQCODE_TRIM_STARTS__WITH, ENDS_WITH, TRIM_ENDS_WITH, RE_CQCODE_ENDS_WITH и RE_CQCODE_TRIM_ENDS_WITH. Они соответствуют startsWith и endsWith в четырёх случаях.
  2. Реализуйте поддержку нескольких учётных записей и измените конфигурацию и конфигурацию файлов, добавив некоторую информацию о конфигурации, связанную с несколькими учётными записями.
  3. Добавьте атрибут «core.bots» в конфигурацию файлов для регистрации нескольких учётных записей.
  4. Создайте класс BotManager для управления несколькими учётными записями.
  5. Создайте класс BotManagerImpl для реализации пользовательского BotManager, например, переключитесь на использование базы данных или redis для хранения данных бота, чтобы адаптироваться к распределённым системам и другим сложным архитектурам.
  6. Добавьте интерфейс PowerAble к типу GroupMsg для получения прав участника группы в группе.
  7. Создайте интерфейс Filterable для поддержки пользовательских правил фильтрации.
  8. Основываясь на Filterable, добавьте MostDIYType для сопоставления правил при наличии нескольких Filterable в аннотации @Filter.
  9. Добавьте аннотацию @DIYFilter для указания имени настраиваемого фильтра на основе Filterable (одновременно поддерживая @Beans).
  10. Добавьте два параметра в @Filter для использования настраиваемых фильтров.
  11. Добавьте две аннотации: @SimpleRobotApplication и @SimpleRobotConfiguration для поддержки запуска аннотаций, в основном отказавшись от ранней конфигурации кода.
  12. Добавьте типы cq: show, contact, rich и hb.
  13. Создайте класс BotRuntime, который можно статически получить после запуска.
  14. Исправлены следующие ошибки:
    • исправлена ошибка автоматического внедрения параметров построения экземпляра, зависящих от внедрения.

Примечание ①: эта версия ядра не совместима с предыдущими.

Примечание ②: функция нескольких учётных записей в настоящее время всё ещё находится в стадии тестирования. Если вы столкнётесь с ошибкой, пожалуйста, своевременно сообщите об этом.

1.7.0

  1. Интерфейс FriendList добавляет getAllFriends().

  2. Цвет предупреждения QQLog изменён на жёлтый.

  3. Добавлена конфигурация, связанная с локалью, в config.

  4. Параметр QQLogBack изменён.

  5. Несколько типов событий прослушивания добавлены в MsgGetType (но не обязательно полезны):

    • отмена группового сообщения;
    • отзыв личного сообщения.
  6. Простой способ изменить правило генерации идентификатора прослушивателя.

  7. Создан новый доступный класс SenderAPIManager, который планируется использовать для сбора всех API, существующих в отправителях, обычно используется для отладки.

  8. Префикс «simple.robot.conf» во всех конфигурациях был изменён на «core».

  9. Параметры инициализации пула потоков были оптимизированы, и был добавлен новый параметр пула потоков: коэффициент блокировки (blockingFactor).

  10. Класс BaseConfiguration больше не переопределяет метод toString.

  11. Был создан новый класс исключений RobotRunException.

  12. Открытый интерфейс добавлен в тип прослушивания MsgGet (почти все типы прослушивания):

    • setMsg используется для повторной установки содержимого сообщения msg;
    • getThisCode используется для получения «учетной записи, получающей это сообщение».
    • [предупреждение] Это сделает 1.7.x несовместимым с предыдущими версиями.
  13. Функции, которые будут добавлены в будущем в версии 1.7:

    • получение информации обо всех прослушивателях:
      • добавление аннотации @ListenerAPI;
    • создание класса сообщений прослушивателя ListenerInfo.

1.6.3

  1. По умолчанию измените значение сортировки аннотации @listen с 1 на 100.
  2. Исправлена проблема путаницы в уровнях журнала.
  3. Исправлена проблема, из-за которой почтовый перехватчик мог быть внедрён без аннотации @Beans.

1.6.2

Исправлена проблема невозможности чтения китайских символов в файле конфигурации.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ForteScarlet-simple-robot-core.git
git@api.gitlife.ru:oschina-mirror/ForteScarlet-simple-robot-core.git
oschina-mirror
ForteScarlet-simple-robot-core
ForteScarlet-simple-robot-core
master