Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

10 955 Posts in 6 330 Topics- by 1 216 Members - Latest Member: santini862

31 October 2020, 02:38
Select Language English | Russian ru | German
Main PageIRC Client KVIrc forumRussian talksСкриптинг (Moderator: runkoff)Антимат
Pages: 1 [2] 3
Print
Author Topic: Антимат  (Read 69645 times)
0 Members and 1 Guest are viewing this topic.
del
Новичок
*

Репутация: 1
Gender: Male
Posts: 37



View Profile WWW Email
« Reply #15 on: 29 August 2007, 20:54 »

Alexey, неее, такого пока не придумали, вроде ))
P.S. Скажу не по теме, но выйди в аську или проверь мыло )))
Logged
man
Новичок
*

Репутация: 2
Gender: Male
Posts: 21


View Profile
« Reply #16 on: 30 August 2007, 16:55 »

почему у вас не работает, чесно говоря незнаю, не раз мною проверено, кидает и банит, возможно будет некоректно работать в не той кодировке, ANSI - правильная кодировка.

а зачем нужен этот алгоритм, мат есть - есть бан (:
или если чего не понял, прошу описать подробнее
Logged
del
Новичок
*

Репутация: 1
Gender: Male
Posts: 37



View Profile WWW Email
« Reply #17 on: 31 August 2007, 11:34 »

Не знаю, что такое, но сколько не матерятся, скрипт не банит и не кикает (
Logged
Youpiter
Пользователь
**

Репутация: 4
Gender: Male
Posts: 57



View Profile
« Reply #18 on: 5 September 2007, 17:13 »

Del, действительно странно, сам только что проверил. Скрипт стопроцентно рабочий. Прекрасно банит.
1.Проверьте правильно ли указан канал, на котором он должен работать?
2.Может в ходе экспериментов у вас возникали критические ошибки и событие автомотически отключилось
Logged
Infinity
Новичок
*

Репутация: 2
Gender: Male
Posts: 11


Александр


View Profile
« Reply #19 on: 23 September 2007, 01:53 »

Приветик. Писал в события скрипт - не работает. А Куда именно его вписать?
Logged

"Всегда вперед и только ввысь!"
man
Новичок
*

Репутация: 2
Gender: Male
Posts: 21


View Profile
« Reply #20 on: 23 September 2007, 06:51 »

можно выполнить его в тестере, изменив местоположение базы и название канала
Logged
ddn
Новичок
*

Репутация: 0
Posts: 1


View Profile
« Reply #21 on: 12 October 2007, 03:53 »

можно выполнить его в тестере, изменив местоположение базы и название канала

При таком случае, после перезапуска квирка скрипт перестает работать(
Logged
Hadros
Новичок
*

Репутация: 7
Gender: Male
Posts: 32


250254035
View Profile
« Reply #22 on: 20 October 2007, 20:46 »

функция проверки строки на присутствие матерного слова (возвращает "ничто", если строка нормальная и найденную маску мата если такая найдена:
Code:
alias(BadWords::check)
{
%str=" "$str.lowcase($str.stripcolors($0))" "
foreach(%bwExtWord,%BadWordsExt) %str=$str.replace(%str,"",%bwExtWord)
%str=~tr/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/ёйцукенгшщзхъфывапролджэячсмитьбю/
%str=~tr/\,\.\!\#\%\^\&\*\(\)\-\=\\\_\+\|\`\~\[\]\{\}\;\'\:\"\,\.\/\<\>\?‚„…‰‹‘’“”•–—˜™›¤¦«¬°±µ·»/                                                        /
%str4=%str
%str4=~tr/1234567890\@\$\x0F/             /
%str4=" "$str.replace(%str4,""," ")" "
%str=~tr/\@\$ЉЂЃѓ†‡€ЊЌЋЏђљњќџЎўЈҐ§Ё©Є®ЇІіґё№єјЅѕї¶/аслбггttенkhuhлнkuууjгsесеriiiгеnеjssiп/
%str=~tr/69403/бячоз/
%str2=%str
%str2=~tr/69403yabсeghkmnoprtuxёй/бячозуавcеднкмпоргтихеи/
%str3=%str
%str3=$str.replace(%str3,"я","ya")
%str3=$str.replace(%str3,"ч","ch")
%str3=$str.replace(%str3,"ш","sh")
#%str3=$str.replace(%str3,"л","/\\")
%str3=$str.replace(%str3,"л","ji")
%str3=$str.replace(%str3,"л","jl")
%str3=~tr/abcdefghijklmnopqrstuvwxyz/абцдефгхииклмнопqрстуввxyз/
foreach(%bw,%BadWords) if ($str.match(%bw,%str2,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str3,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str4,e)) { %result=%bw;return %result; }
}
перед использованием надо загрузить из какого-нибудь файла список матерных слов. Например так:
Code:
%FileBWDict=$file.localdir()"BadWords.txt"; # Файл-словарь антимата
alias(BadWords::LoadDict)
{
if (!$file.exists(%FileBWDict)) file.write -l %FileBWDict " ывапывапывап$lf"
%BadWords=$file.readlines(%FileBWDict)
echo "$k(9)$b()Загружен словарь антимата %BadWords[]# записей$o()"
}
в словаре должны быть маски для проверяемой строки с указанием знаков ? и * там где нужно. Каждая маска в новой строке.
Так-же надо загрузить список исключений:
Code:
%FileBWExt=$file.localdir()"BWExt.txt"; # Файл-словарь исключений антимата
alias(BadWords::LoadExceptions)
{
if (!$file.exists(%FileBWExt)) file.write -l %FileBWExt "привет$lf"
%BadWordsExt=$file.readlines(%FileBWExt)
echo "$k(9)$b()Загружен словарь исключений антимата %BadWordsExt[]# записей$o()"
}
Чтобы проверить как это работает:
Code:
event(OnChannelMessage,тест на мат)
{
%t=$BadWords::check($3)
if (%t!=$nothing)
{
echo $k(9) $0 сматерился. Совпало %t
}
}
дальше качество вашего антимата будет зависеть только от того, как вы составите списки плохих и хороших слов
Logged

Eru shitteiru ka shinigami wa ringo shika tabenai
alexzulu
Постоялец
***

Репутация: 34
Posts: 211



View Profile Email
« Reply #23 on: 14 November 2007, 20:12 »

Code:
event(OnChannelMessage,censor)
{
%a = $file.read($file.localdir/config/scripts/word)
%Words[] = $str.split(&,%a)
%b =  $file.read($file.localdir/config/scripts/reasons)
%reasons[] = $str.split(&,%b)
%i = 0
foreach(%x,%reasons)
{
%i++
}
%i = $rand(%i)
if($isMeOp == "1")
{
%msg[] = $str.split(" ",$3-)
foreach(%z,%msg)
{
foreach(%y,%Words)
{
if(%z == %y)
{
kick $0 %reasons[%i]
return
}
}
}
}
}

вот простейше тупейший вариант. берёт слова для проверки из word и из reasons причину кика случайную. работает нормально. но без предупреждений и подобного. сразу в кик.Smiley
Logged

Network: freenode. Channels: #kvirc and #kvirc-ru
Bird_Feniks
Новичок
*

Репутация: 0
Gender: Male
Posts: 6



View Profile WWW
« Reply #24 on: 7 March 2008, 19:44 »

функция проверки строки на присутствие матерного слова (возвращает "ничто", если строка нормальная и найденную маску мата если такая найдена:
Code:
alias(BadWords::check)
{
%str=" "$str.lowcase($str.stripcolors($0))" "
foreach(%bwExtWord,%BadWordsExt) %str=$str.replace(%str,"",%bwExtWord)
%str=~tr/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/ёйцукенгшщзхъфывапролджэячсмитьбю/
%str=~tr/\,\.\!\#\%\^\&\*\(\)\-\=\\\_\+\|\`\~\[\]\{\}\;\'\:\"\,\.\/\<\>\?‚„…‰‹‘’“”•–—˜™›¤¦«¬°±µ·»/                                                        /
%str4=%str
%str4=~tr/1234567890\@\$\x0F/             /
%str4=" "$str.replace(%str4,""," ")" "
%str=~tr/\@\$ЉЂЃѓ†‡€ЊЌЋЏђљњќџЎўЈҐ§Ё©Є®ЇІіґё№єјЅѕї¶/аслбггttенkhuhлнkuууjгsесеriiiгеnеjssiп/
%str=~tr/69403/бячоз/
%str2=%str
%str2=~tr/69403yabсeghkmnoprtuxёй/бячозуавcеднкмпоргтихеи/
%str3=%str
%str3=$str.replace(%str3,"я","ya")
%str3=$str.replace(%str3,"ч","ch")
%str3=$str.replace(%str3,"ш","sh")
#%str3=$str.replace(%str3,"л","/\\")
%str3=$str.replace(%str3,"л","ji")
%str3=$str.replace(%str3,"л","jl")
%str3=~tr/abcdefghijklmnopqrstuvwxyz/абцдефгхииклмнопqрстуввxyз/
foreach(%bw,%BadWords) if ($str.match(%bw,%str2,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str3,e)) { %result=%bw;return %result; }
foreach(%bw,%BadWords) if ($str.match(%bw,%str4,e)) { %result=%bw;return %result; }
}

При компиляции этого кода выдается ошибка:

 Предупреждение: Строка с константой не закрыта
[16:58:48] [KVS]   в контексте скрипта "badwords_check.kvs", Строка 9, около символа 83
[16:58:48] [KVS] Листинг кода:
[16:58:48] [KVS]   7 ...
[16:58:48] [KVS]   8    %str=~tr/ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/ёйцукенгшщзхъфывапролджэячсмитьбю/
[16:58:48] [KVS]   9    %str=~tr/\,\.\!\#\%\^\&\*\(\)\-\=\\\_\+\|\`\~\[\]\{\}\;\'\:\"\,\.\/\<\>\?'":%<''""--?T>
Logged

Приглашаем всех на наши IRC каналы #DelphiIntRu в сети DalNet и #Delphi.Int.Ru в сети RusNet.
Bird_Feniks
Новичок
*

Репутация: 0
Gender: Male
Posts: 6



View Profile WWW
« Reply #25 on: 11 March 2008, 19:23 »

На основе материалов данной темы я сделал Бота как Дополнение для КВирка с функцией Антимата.
В дальнейшем планируется увеличение функционала Бота.
Но есть загвоздка. В функции (алиасе) проверки слов почему-то не всегда срабатывает на слова из словаря.  Embarrassed Некоторые слова пропускает.
Буду рад любой помощи. Может кто-нибудь подскажет причину и ее решение ?
« Last Edit: 11 March 2008, 19:43 by Bird_Feniks » Logged

Приглашаем всех на наши IRC каналы #DelphiIntRu в сети DalNet и #Delphi.Int.Ru в сети RusNet.
Hadros
Новичок
*

Репутация: 7
Gender: Male
Posts: 32


250254035
View Profile
« Reply #26 on: 11 March 2008, 22:53 »

создавайте файл badwords_check.kvs в кодировке UTF-8
« Last Edit: 11 March 2008, 23:05 by Hadros » Logged

Eru shitteiru ka shinigami wa ringo shika tabenai
Bird_Feniks
Новичок
*

Репутация: 0
Gender: Male
Posts: 6



View Profile WWW
« Reply #27 on: 12 March 2008, 11:56 »

создавайте файл badwords_check.kvs в кодировке UTF-8
Ваш скрипт с форума мне удалось перенести в Тестер скриптов в квирке через буфер обмена. Потом я его експортировал из квирка в файл badwords_check.kvs, так что думаю он и так в кодировке UTF-8.
Еще я заметил, что текстовые файлы со словами тоже должны быть в этой кодировке.
Я вычислил, что срабатывают слова, которые в файле словаря записаны со знаком "*" с обеих сторон, например, маска *тест* сработает на любые слова, где встречается "тест" - тест, тестовый, тестовая... А это уже не правильно.

Я так предпалагаю, что он у вас стоит на вооружении и прекрастно работает ?
Logged

Приглашаем всех на наши IRC каналы #DelphiIntRu в сети DalNet и #Delphi.Int.Ru в сети RusNet.
Hadros
Новичок
*

Репутация: 7
Gender: Male
Posts: 32


250254035
View Profile
« Reply #28 on: 12 March 2008, 20:45 »

в словаре должны быть маски для проверяемой строки с указанием знаков ? и * там где нужно
то есть если вам надо отлавливать только слово "тест", то в словаре надо писать * тест *, то есть с пробелами вначале и в конце
в словаре исключений не маски, а комбинации букв, которые будут вырезаться из строки перед проверкой. символы * и ? там не нужны
foreach(%bwExtWord,%BadWordsExt) %str=$str.replace(%str,"",%bwExtWord)
у меня, кстати, словари в кодировке win-1251
« Last Edit: 12 March 2008, 20:49 by Hadros » Logged

Eru shitteiru ka shinigami wa ringo shika tabenai
Bird_Feniks
Новичок
*

Репутация: 0
Gender: Male
Posts: 6



View Profile WWW
« Reply #29 on: 13 March 2008, 11:58 »

Quote
то есть если вам надо отлавливать только слово "тест", то в словаре надо писать * тест *, то есть с пробелами вначале и в конце
А вот этого я не знал и даже не догадывался. Еще удивлялся, зачем в самом начале пробелы добавляете слева и справа. Правильно ли я понял: если я хочу поймать одно слово целиком, например "тест", то в словаре надо писать * тест *, а если какие либо совпадения, например любые слова начинающиеся на "тест", "тестовый", "тестовая", тогда маска в словаре должна быть "* тест*", т.е. в начале пробел есть, а в конце его нет ?
И тоже самое касается знака одного символа - "?" ?
Quote
в словаре исключений не маски, а комбинации букв, которые будут вырезаться из строки перед проверкой. символы * и ? там не нужны
Ага, а здесь значит можно просто указать сами слова исключения без каких-либо знаков, например "себя", "себе" ?
Quote
у меня, кстати, словари в кодировке win-1251
А вот у меня ни с одной из стандартных он не захотел работать, только в UTF-8 нормально загрузил в массив, а в остальных сплошные вопросы были "?".
Квирк у меня 3.2.6.20080226.
Logged

Приглашаем всех на наши IRC каналы #DelphiIntRu в сети DalNet и #Delphi.Int.Ru в сети RusNet.
Pages: 1 [2] 3
Print
Jump to:  

Theme orange-lt created by panic