Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Служебные скрипты [PtokaX] _ Бот-говорун -_-

Автор: Sephiroth_Lukaw 29.7.2008, 6:11

Название скрипта: Бог-Говорун(хотя, сложно его так назвать)
Версия API: API 1(первый скрипт) + API 2(второй скрипт)
By: NRJ
Описание скрипта: Просто отвечает на фразы из таблицы(Мгновенно).
[curUser] == Ник того - кто произнес фразу на которую отреагировал скрипт.

Код
--    Пример:
--
--    ["что заменяем"]={
--    "[curUser], вариант ответа 1.",
--    "вариант ответа 2.",
--    "вариант ответа 3.",
--    },
Так же, можно запретить боту реагировать на фразы юзеров с определенным ником.
Код
-- Таблица ников-исключений,чьи фразы бот не будет комментировать
TableName = {
["Sephiroth_Lukaw"] = 1,
}
Может кому-нибудь может показаться полезным.
Цитата(Пример)
[09:08] <Sephiroth_Lukaw> у кого есть такой-то фильм?
[09:08] <Bot> Sephiroth_Lukaw, Ctrl+S

P.S. Может, у кого-нибудь, есть более адекватный скрипт?
upd 12.03.2008. Переоформил топик.
upd 12.05.2008. Перевёл под API2.

 Govorun.lua ( 3.36 килобайт ) : 308
 Govorun_API2.lua ( 3.46 килобайт ) : 569
 

Автор: kylibyaka 7.8.2008, 21:56

Цитата(Sephiroth_Lukaw @ 29.7.2008, 6:11) *
Бот-Говорун(хотя так его называть даже язык не поворачивается), просто отвечает на фразы из таблицы(Мгновенно).
[curUser] == Ник того - кто произнес фразу на которую отреагировал скрипт.
Код
--    Пример:
--
--    ["что заменяем"]={
--    "[curUser], вариант ответа 1.",
--    "вариант ответа 2.",
--    "вариант ответа 3.",
--    },
Так же, можно запретить боту реагировать на фразы юзеров с определенным ником.
Код
-- Таблица ников-исключений,чьи фразы бот не будет комментировоть
TableName = {
}
Может кому-нибудь может показаться полезным...
API 1

P.S. Может у кого-нибудь есть более адекватный скрипт?

Есть вот держи болтуна http://mydc.ru/r/?http://hab-kylibyaka.at.ua/_fr/0/0833332.rar может подойдёт ) на 3.6 птоку .

Автор: vovansa 9.8.2008, 23:17

Хотелось бы что бы задержка по времени была (секунды 2-3) а то приедается )))))) когда мгновенно реагирует.

Автор: chicha 5.12.2008, 1:37

а под API 2 замутите?

Автор: Sephiroth_Lukaw 5.12.2008, 1:38

Ну, дык, он под API1.

Автор: chicha 5.12.2008, 1:40

я уже понял, мне бы под вторую

Автор: Sephiroth_Lukaw 5.12.2008, 4:56

Держите %-) Автозамена в текстовых редакторах рулит.
В первом посте, есстесно.

Автор: chicha 6.12.2008, 1:28

Всё работает, но хотел узнать куда и как ники ставить для исключения, и слова исключения можно бы прикрутить, чтоб проверку по ним не делал.
Например:

CODE
["Бот"]={
"[curUser], ща как укушу",
"Я белая и пушистая",
"Не дразните меня choler.gif",
},
реагирует на слово работа.

Автор: Sephiroth_Lukaw 7.12.2008, 12:21

Цитата
у меня такой есть, но я не могу вписать в него свой ник, что бы во мной не разговаривал. Я уже писал об этом http://mydc.ru/ipb.html?s=&showtopic=2...post&p=6035
Ок. В первом посте пример привёл. Извиняюсь, что сразу не показал. Насчёт слов исключений тоже.
P.S. Думаю, будет лучше, если кто-нибудь подправит описание темы с "API1 | Отвечает на фразы из таблицы", на "API1, API2 | Отвечает на фразы из таблицы" ^^"

Автор: chicha 7.12.2008, 17:28

CODE
["работа"]={},
["бот"]={
"Ну и что?",
},

Выходит ошибку и скрипт не работает Синтаксис S:\0.4.1.1\scripts\Govorun_API2.lua:140: bad argument #2 to 'random' (interval is empty)

Автор: Sephiroth_Lukaw 7.12.2008, 17:43

Ну, рассуж такие дела, в начале ChatArrival(или, после s,e,mess = string.find(data, "^%b<>%s(.*)$")) напиши

Код
        for i, Val in pairs(iscl) do
          if(string.find(data, Val)) then
          return false -- return 0 для API1
          end
        end
а перед таблицей trigs создай таблицу
Код
iscl = {
"Работа",
}
C учётом регистра будет.

Автор: chicha 7.12.2008, 18:21

Код
iscl = {
"Работа",
}
не работает, всё равно обращается к строке
Код
["бот"]={
    "[curUser], сам ты бот",    
                "Я живой как и ты",
    "ну и что?",
                },
, а ясли поставить запятую после
Код
iscl = {
"Работа",
},
то пристаёт к строке iscl

Автор: Sephiroth_Lukaw 7.12.2008, 19:02

Цитата
[21:04] <Sephiroth_Lukaw> Работа
[21:04] <Sephiroth_Lukaw> работа
[21:04] <Bot> Ну и что?
[21:04] <Sephiroth_Lukaw> раб
[21:04] <Sephiroth_Lukaw> бот
[21:04] <Bot> Ну и что?
[21:04] <Sephiroth_Lukaw> робот
[21:04] <Bot> Ну и что?
[21:04] <Sephiroth_Lukaw> Работа
[21:04] <Sephiroth_Lukaw> Работа


 Govorun_API2.lua ( 3.62 килобайт ) : 112
 

Автор: Strannik 21.1.2009, 0:29

Возможно сделать так чтоб бот мог вводить команды из других скриптов
типа : бот погода - посылалась команда !погода в чат и чтоб это работало
пытался так делать он команду отсылал в чат, но действия не просходило
погоду не показывало. как это можно исправит и в чем проблема.

Автор: Setuper 21.1.2009, 0:31

Никак. Команды могут отправлять только пользователи.

Автор: Perspect 21.1.2009, 1:27

Всё же как то можно, нужно только подумать...
Теоретически бот мог бы отправлять команды от имени того юзера, который например, в чате написал: Бот: анекдот.
Тема актульная и имеет спрос.

Автор: Sephiroth_Lukaw 21.1.2009, 1:55

То, что отправляет бот - в ChatArrival не идёт, т.е. его команды пройдут, а скрипты никак не отреагируют.
Как вариант, использовать другого - ВНЕШНЕГО бота.

Автор: Perspect 23.1.2009, 13:32

Как бы сделать, чтобы ответы "Говоруна" оставались бы в "Истории чата"? feel_good.gif

 История_чата_5.1.rar ( 1.93 килобайт ) : 44
 

Автор: _LorD_ 23.1.2009, 23:08

тут уже упоминалось о задержке, сорри за флуд, но как же все таки с задержкой 3-5 сек сделать???

Автор: Gangster-Toni 28.1.2009, 16:41

Спасибо отличный скрипт!

Автор: Smoll 25.2.2009, 12:56

А вазможно зделать так, что бы в ответе можно было писать с Enter-ром??? А то когда ставиш Энтер выкидывает ошибку. На 0.4.1.1

Автор: Wariner 25.2.2009, 16:08

для переноса строк используй \r\n

Автор: Smoll 25.2.2009, 19:01

Цитата(Wariner @ 25.2.2009, 16:08) *
для переноса строк используй \r\n


вот щя честно сказать это не проверил....... реально тупанул, но всеравно спасибо=)

Автор: Benvolyo 17.11.2009, 17:28

У меня с ним проблема. когда пытаюсь научить его ид описываю ему слов в таблицу он перестает на них реагировать.

Вот так подписывает это птока: Govorun_API2.lua:256: invalid pattern capture

Автор: Perspect 17.11.2009, 19:21

Хороший и НУЖНЫЙ скрипт, он меня спасает от новичков и идиотов.

Как бы объединить вопросы одной темы, заданные по-разному, в один блок?

["эт[ао] какой город"]={
"[curUser], а ты догадайся big_smile.gif",
"[curUser], красивый город, можно сказать столица big_smile.gif",
"[curUser], Крым, Симферополь :доволен:",
},

["я куда попал[а?7]"]={
"[curUser], а ты догадайся big_smile.gif",
"[curUser], красивый город, можно сказать столица big_smile.gif",
"[curUser], Крым, Симферополь :доволен:",
},

["хаб како[вг][ао] города[?7]"]={
"[curUser], а ты догадайся big_smile.gif",
"[curUser], красивый город, можно сказать столица big_smile.gif",
"[curUser], Крым, Симферополь :доволен:",

Объединить это нужно для экономии памяти. Много получается блоков, тематически схожих.

Автор: Alexey 18.11.2009, 17:05

Цитата(_LorD_ @ 23.1.2009, 23:08) *
тут уже упоминалось о задержке, сорри за флуд, но как же все таки с задержкой 3-5 сек сделать???

Может тебе уже и неактуально, но тут как раз переделывал для другого человека, делюсь:
 Govorun_amod_API2.lua ( 2.84 килобайт ) : 60

Задержка динамическая, зависит от длины фразы сказавшего и длины фразы бота.

UPD: Теперь реагирует на случайное слово фразы из числа имеющихся в словаре, а не на первое в списке.  Govorun_amod2_API2.lua ( 3.13 килобайт ) : 80

Автор: Noal 20.12.2009, 20:14

А есть подобный скрипт говоруна, но чтобы не сбивал команды.
К примеру /me пошел делать то.
Если в словарном запасе бота есть слово "пошел", он реагирует на него и сбивает тем самым команду пользователя.
Можно что-то сделать, чтобы этого не было?

Автор: Uncle_Dif 20.12.2009, 21:20

Цитата(Sephiroth_Lukaw @ 29.7.2008, 7:11) *
P.S. Может, у кого-нибудь, есть более адекватный скрипт?


Здесь, на форуме, есть бот БЛАНДИНКО.lua, он обучеемый, имеет задержку, какую поставишь сам, у меня работает стабильно.
http://mydc.ru/ipb.html?act=attach&type=post&id=2570

У меня этот скрипт не идет. Ошибку не пишет. Если он конфликтует с лонли, то что именно лонли блокирует?

Автор: Alexey 21.12.2009, 7:02

Цитата(Noal @ 20.12.2009, 20:14) *
А есть подобный скрипт говоруна, но чтобы не сбивал команды.
К примеру /me пошел делать то.
Если в словарном запасе бота есть слово "пошел", он реагирует на него и сбивает тем самым команду пользователя.
Можно что-то сделать, чтобы этого не было?

Выше выложил обновлённую версию, в ней удали два знака тире в начале 102 строки:
Код
--        if sMsg:find" [/!%+]%S+" then return end

Автор: Noal 21.12.2009, 15:17

Огромное спасибо, помогло big_smile.gif

Еще вопрос, как в твоем скрипте можно добавить функцию исключения слов, чтобы бот не реагировал на определенные фразы?

Автор: FallenAngel 21.12.2009, 19:41

Чуть выше Сева ведь описал как добавить слова исключения...

Автор: absent 7.2.2011, 1:28

если в апи1 можно сделать слово с пробелом например _бот_ -реагирует только на "бот" а не на слово "работа" то перекомпелированный в апи2 тупит и реагирует на все подряд