/triggers_guide@Dim_ov_Bot
Для работы с тригерами есть следующие команды (все они работают только в личке. И на данный момент только в личке ограниченного круга лиц):
- /my_triggers - Вызывается без аргументов и возвращает список активных триггеров, созданных тобой. Список во внутреннем формате (потому что мой создатель ленивый), но это вполне себе человекочитаемый JSON, так что разобраться можно.
- /delete_all_triggers - Ты насоздавал(-а) сотню триггеров, за которые тебе теперь стыдно? Твои триггеры слишком примитивны и оскорбляют какую-то высокодуховную личность? Ты что-то нажал(-а) и все сломалось? Не беда! Как видишь, мы позаботились и о таких, как ты. Используй эту команду (тоже без параметров), чтобы удалить все свои триггеры.
- /delete_trigger - Тебе стыдно лишь за несколько триггеров? Высокодуховную личность оскорбляет только один из твоих триггеров, а остальные личность считает забавными? Ты что-то нажал(-а), и сломалось не всё? Что ж, тебе повезло! В этом случае можно не жечь все дотла, а воздействовать точечно. Вызови эту команду с id нужного триггера и он будет удален. Например: /delete_trigger 0123456789abcdef01234567
- /create_trigger - Вот и добрались до самого интересного. Создание триггера. Для этого нужно вызвать данную команду и после неё разместить JSON объект, структура которого описана ниже. Могут возникнуть вопросы и замечания, такие как "Почему так сложно-то?", "Это совершенно неинтуитивно! Стив Джобс бы не одобрил!", "Я сюда деградировать зашел, а не ваши джейсоны решать!", "Обколются своими регэкспами и джейсонят друг друга в личку! Наркоманы!" и многие другие. Этому есть сразу 2 причины. Во-первых - гибкость! Вы получаете невероятную мощь прямо в свои руки! Ведь эта система позволяет точно воссоздать такие легендарные триггеры, как ээх, чаепитие и даже милая жопа! Во-вторых - см. описание команды /my_triggers.
Итак, пример команды:
/create_trigger
{
"replace_regex": "\\d{1,2}(:\\d{1,2})+",
"replace_with": "",
"trigger_regex": ":[3з]",
"responses": [
{
"type": 2,
"payload": "https://cs7.pikabu.ru/post_img/2018/08/21/7/153485074413661463.png",
"probability": 1.0
},
{
"type": 4,
"payload": "qwert",
"probability": 5.0
}
],
"comment": "Жопа"
}
Поля replace_regex и replace_with используются для препроцесинга. Перед проверкой основного тригера производится замена всех вхождений регулярки replace_regex на значение, указанное в поле replace_with. Работают подстановки вроде \1. Чаще всего это не нужно и можно эти 2 поля не указывать. Но иногда может быть полезным, как в данном примере с жопой, для исключения ложных срабатываний на время или счет спортивных матчей.
Поле trigger_regex - непосредственно регулярка, при матчинге которой сработает триггер.
Текст сообщения перед обработкой переводится в нижний регистр, так что в регулярках можно не париться о разных регистрах. Для отладки регулярок можно использовать сервис https://regex101.com/. Он немного криво работает с кириллицей, но в целом очень удобно.
Поле comment может осдержать произвольный комментарий. Он нигде не используется, но можно там писать заметки для себя.
Поле responses содержит массив с, собственно, ответами. Каждый ответ содержит обязательное поле type - тип ответа.
Поддерживаются следующие:
1 - ничего не отвечать, игнор (используется, например, в триггере на чаепитие)
2 - фото
3 - стикер
4 - текст
5 - документ (гифка)
Поле payload обязательно для всех типов, кроме 1. Для текста оно должно содержать текст сообщения, для стикера и фото - ссылку на изображение. ВНИМАНИЕ: для стикеров изображение болжно быть только в формате webp.
Поле probability указывает относительную веротяность того или иного ответа. В примере выше ответ qwert будет даваться примерно в 5 раз чаще, чем картинка. Если не указывать данное поле, то все ответы будут выбираться с равной вероятностью.