Brikster / Chatty

Bukkit-compatible chat management system
MIT License
91 stars 50 forks source link

[Suggestion] Chat-bot #101

Open SSKirillSS opened 4 years ago

SSKirillSS commented 4 years ago

Вероятно, это самое глобальное предложение от меня за последнее время. В конкурирующем плагине (ChatManager от H1DD3NxN1NJA) есть такая фишка, как чат-бот - примитивная система, детектящая заранее заданные в конфиге фразы в чате и отвечающая на них пользователям в чате. Фишка нереально крутая и имеет массу применений, однако, в самом ChatManager`е она имеет массу недоработок. Потому предлагаю её сюда в следующем виде, который, как по мне, будет более универсальным и адаптированным непосредственно под Chatty. Пример конфигурации:

prefix: '&6[&eЧат-бот&6]&e: &r' //Префикс бота, вставляемый перед каждым его ответом
cooldown: 5 //Время в секундах, которое бот будет игнорировать вопросы одного и того же игрока после его последнего ответа (Для избежания спама)
global_cooldown: false //Дополнение для cooldown. Значение true означает, что таймер времени перезарядки будет общим для всех игроков, а не для каждого отдельно
triggers: //Перечень ивентов, которые обрабатываются ботом
    join:
        //См. пример в death
    quit:
        //См. пример в death
    death:
        permission: 'chatty.bot.example.death' //Право, которое должно быть у игрока, чтобы бот среагировал на ивент
        answer: | //Ответ бота с поддержкой разделения на несколько строк. При желании можно прикрутить JSON и PAPI
            'Объясните уже кто-нибудь {player}, что вовсе не обязательно обнимать каждый встречный кактус!'
        channel: 'global' //Название канала, в который будет отправляться ответ бота. Для локальных чатов центральной точкой берется позиция игрока, которому дается ответ. Префикс канала чата при этом, естественно, не отображать
        commands: //Список команд, выполняемых при ответе пользователю
            - '[console] say Meow' //Доступные варианты - [console] (для выполнения из консоли), [player] (для выполнения от имени игрока)
questions:
    'question_1': //Название вопроса
        permission: 'chatty.bot.example' //Право, которое должно быть у игрока, чтобы бот среагировал на сообщение
        message: //Перечень слов, которые должны находиться в сообщении игрока. Поддерживает регулярные выражения, т.е. в данном случае бот должен среагировать как на "КАК создать ПРИВАТ", так и на "КАК заПРИВАТить территорию?"
            - 'как'
            - 'приват'
        count: 2 //Дополнение для triggers, обозначающее минимальное количество слов из списка, которое должно быть в сообщении игрока для ответа бота
        answer: | //Ответ бота с поддержкой разделения на несколько строк. При желании можно прикрутить JSON и PAPI
            '{player}, не знаешь как заприватить территорию? - Воспользуйся этим руководством:'
            'google.com'
        channel: 'global' //Название канала, в который будет отправляться ответ бота. Для локальных чатов центральной точкой берется позиция игрока, которому дается ответ. Префикс канала чата при этом, естественно, не отображать
        commands: //Список команд, выполняемых при ответе пользователю
            - '[console] eco take {player} 100' //Доступные варианты - [console] (для выполнения из консоли), [player] (для выполнения от имени игрока)

Вроде как всё учёл. Жду ответа :D

levarar commented 4 years ago

классная идейка

tlgnkl commented 3 years ago

Очень поддерживаю. Хотелось бы так же видеть возможность создавать голосования с выбором. Пример такого может стать выбор ночи или дня. Каждый игрок с разрешением x (для каждого можно создать свое разрешение) может организовать голосовалку (раз в x тик). Игроки с правом x увидят ее, а после игроки с правом x проголосуют