EpicNet.Ru - Форум IRC Чата

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Auto scan for BadNicks when MyBot or users join a channel


Auto scan for BadNicks when MyBot or users join a channel

Сообщений 1 страница 10 из 18

1

This code is work normal, but now i want update to new version: can scan and kick ban all nick if found in "nicksflood1.txt"

Current Bot work if file text like this:

nicksflood1.txt
[flist]Fuck
dick
cunt
penis
[/flist]

And now I want to update the text of the file to this, and the bot will scan and ban if it finds:

nicksflood1.txt
[flist]*Fuck*
*dick*
*cunt*
*penis*
[/flist]

Here is my code:

Код:
ON *:JOIN:#: {
  if (!$read(BADNICKSCAN_CHAN.txt,nw,$chan)) { return }
  if ($nick == $me) {
    timer[SCAN_ $+ $chan $+ ] 1 10 nickscan $chan
  }
}
alias nickscan {
  if (!$1) || ($me !ison $1) || ($me !isop $1) { return }
  var %f = nicksflood1.txt
  var %t = $lines(%f)
  if (!%t) { return }
  var %i = 1
  while (%i <= %t) {
    var %n = $read(%f,ntw,%i)
    if (%n) && (%n ison $1) { .ban -ku3600 $1 %n 2 4([AUTO SCAN] [Banned] (reason: Badnick/Nickflood/NickBlacklist are not permitted for this channel) [id: 1] - (for more information regarding your ban please join #HelpKick to ask for removal)) }
    inc %i
  }
}

Thanks and hope everyone help me soon!

2

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

Поэтому мне пришлось создать собственную, новую версию скрипта, с использованием облегчённого способа поиска ников через серверную команду "/who", которая умеет не только последовательно возвращать все ники канала, подряд сверху вниз, но и умеет возвращать только нужные, подходящие под *маску* ники, в которых присутствует плохое слово из файла "badwords.txt". Это значительно снижает нагрузку на mIRC и делает работу скрипта гораздо быстрее. Так что этот скрипт теперь должен выполнять запрашиваемую вами функцию для поиска плохих слов в присутствующих на канале никнеймах с последующей установкой на них "Кика+Бана".

Итак, вы можете попробовать использовать эту версию скрипта:

Код:
######################################################################
#  Название: Scan Bad Nicks v1.0
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: Сканирует все присоединяющиеся, а также уже присутствующие на канале ники, когда Бот сам присоединяется к каналу. Если в названии ников будут найдены плохие слова из файла "badwords.txt", то выполняется "Кик+Бан".
#  Файлы: Все файлы, с которыми работает скрипт должны находиться в той же папке, где находится сам скрипт: "scripts\ScanBadNicks\".
######################################################################

on *:JOIN:#:{
  if (!$read($file_chans,ntw,$chan)) { return } | if ($nick == $me) { .timerSCANBADNICKS 1 5 sbn_check $chan }
  else { var %f $file_badwords, %l $lines(%f), %i 1 | while (%i <= %l) { if ($read(%f,nt,%i) iswm $nick) { if ($me isop $chan) ban $+(-ku,$ban_timer) $chan $nick 2 $kick_reason | break } | inc %i } }
}
alias -l sbn_check { if ($me !isop $1) { return } | .hfree -sw sbn | .enable #scanbadnicks | sbn_who $1 }
alias -l sbn_who { .hinc -m sbn num 1 | var %str $read($file_badwords,nt,$hget(sbn,num)) | if (%str) { who $1 $+(n,$chr(37),cn) %str } | else { .disable #scanbadnicks | .hdel -sw sbn num } }

alias -l file_chans { return $scriptdir $+ chans.txt }
alias -l file_badwords { return $scriptdir $+ badwords.txt }
alias -l id_rand { return $+([id:,$rand(A,Z),$rand(A,Z),$rand(1,9999),]) }
alias -l ban_timer { return $rand(1800,3600) }
alias -l kick_add_reason { return - (for more information regarding your ban please join #HelpKick to ask for removal) }
alias -l kick_reason { return 04[AUTO SCAN] [Banned] reason: Bad nicknames are not allowed on this channel $id_rand $kick_add_reason }

#scanbadnicks off
raw 354:*: ban $+(-ku,$ban_timer) $2 $3 2 $kick_reason | haltdef
raw 315:*: sbn_who $2 | haltdef
#scanbadnicks end

Описание настроек:

  • Алиас "file_chans" возвращает путь к файлу "chans.txt", который должен содержать список названий каналов, перечисленных в столбик, в которых может работать скрипт.

  • Алиас "file_badwords" возвращает путь к файлу "badwords.txt", который может содержать список плохих слов с подстановочными знаками *слово*, перечисленные в столбик, которые могут присутствовать частично или полностью в никах пользователей канала. В этом случае на подобные ники будет выполнены "Кик+Бан".

  • Алиас "id_rand" возвращает случайное (рандомное) значение, состоящее из 2-х больших латинских букв и 1-4-х значного числа для создания метки-идентификатора, который пользовать увидит в сообщении при установке на его ник "Кика+Бана", чтобы он смог отправить это операторам канала @ "OPs" для дальнейшего разбирательства.

  • Алиас "ban_timer" возвращает случайное (рандомное) числовое значение в секундах для установки времени таймера, по истечению которого "Бан" должен быть снят. Вы можете изменить это значение на постоянное целое число, которое измеряется в секундах.

  • Алиас "kick_reason" возвращает основное текстовое сообщение для установки причины "Кика" пользователя на канале.

  • Алиас "kick_add_reason" возвращает дополнительное текстовое сообщение, для прикрепления его к основному текстовому сообщению с причиной "Кика".

Примечание: Все файлы, с которыми работает скрипт должны находиться в той же папке, где находится сам скрипт.

[indent=0.8,0.5]
Обязательно оставьте свои отзывы и комментарии по результатам тестирования данного скрипта, и дайте мне знать, если что то будет неисправно или нуждается в улучшении

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

3

I have just test, but NOT WORK and i see some errors notice. I thinks your code check all CHANNELS on SERVER Check and try it again pls, thanks Epic

My log:

[00:18:52] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:18:52] * #buzZcafe anal
[00:18:54] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:18:54] * #buzZcafe abuse
[00:18:58] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:18:58] * * bigtitsblack
[00:19:00] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:00] * * bitchX
[00:19:00] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:00] * #femsubmissionsex slavebitchuk
[00:19:00] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:00] * #incest bitchwife
[00:19:04] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:04] * #mothers WickdBastard
[00:19:04] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:04] * #politics Rat_Bastard
[00:19:12] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:12] * #incest BeaBooty
[00:19:18] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:18] * #femhumiliationsex bustycarmen
[00:19:18] * /ban: you are not on a channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:18] * #incest BustyTeenHU
[00:19:22] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:22] * * cunts
[00:19:22] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:22] * * cuntsys
[00:19:22] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:22] * * _HoneyCunt__
[00:19:26] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:26] * * CumPumperRP
[00:19:26] * /ban: You are not on a channel, try /join #channel (line 15, Scan Badnick On Join-49.mrc)
[00:19:26] * * cum`in`me

Отредактировано Robert (29.10.2023 20:25)

4

Да. Похоже, что при разработке кода я не учёл масштабов вашей IRC сети, из-за чего поиск плохих ников становится значительно шире и затрагивает огромное количество пользователей, причём даже тех, которые не находятся на ваших каналах.

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

Вы можете попробовать использовать новую версию скрипта:

Код:
######################################################################
#  Название: Scan Bad Nicks v1.1
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: Сканирует все присоединяющиеся, а также уже присутствующие на канале ники, когда Бот сам присоединяется к каналу. Если в названии ников будут найдены плохие слова из файла "badwords.txt", то выполняется "Кик+Бан". 
#  Файлы: Все файлы, с которыми работает скрипт должны находиться в той же папке, где находится сам скрипт: "scripts\ScanBadNicks\".
######################################################################

menu channel {
  Scan Bad Nicks
  .Start scanning: .enable #scanbadnicks | scan_start $chan
  .-
  .Scan join nicks (All)
  ..$iif(%sbn_nicks_join == on,$style(1)) ON: %sbn_nicks_join = on | echo -a Auto scan when nicks joined = 03ON
  ..$iif(%sbn_nicks_join == off,$style(1)) OFF: %sbn_nicks_join = off | echo -a Auto scan when nicks joined = 04OFF
  .Scan join me (Bot)
  ..$iif(%sbn_me_join == on,$style(1)) ON: %sbn_me_join = on | echo -a Auto scan when me joined = 03ON
  ..$iif(%sbn_me_join == off,$style(1)) OFF: %sbn_me_join = off | echo -a Auto scan when me joined = 04OFF
}
----------------------------------------------------------------------
on *:JOIN:#:{
  if (!$read($file_chans,ntw,$chan)) { return }
  if (%sbn_nicks_join == on && $nick != $me) { .enable #scanbadnicks | check_badwords $chan $nick }
  if (%sbn_me_join == on && $nick == $me) { .timerSCANBADNICKS 1 5 scan_start $chan }
}
alias -l scan_start { if ($me !isop $1) { return } | .enable #scanbadnicks | who $1 $+($chr(37),cn) }
alias -l check_badwords { if ($me ison $1 && $me isop $1) { var %f $file_badwords, %l $lines(%f), %i 1 | while (%i <= %l) { if ($+(*,$read(%f,nt,%i),*) iswm $2) ban $+(-ku,$ban_timer) $1 $2 2 $kick_reason | inc %i } } }
----------------------------------------------------------------------
alias -l file_chans { return $scriptdir $+ chans.txt }
alias -l file_badwords { return $scriptdir $+ badwords.txt }
alias -l id_rand { return $+([id:,$chr(32),$rand(A,Z),$rand(A,Z),$rand(1,9999),]) }
alias -l ban_timer { return $rand(1800,3600) }
alias -l kick_add_reason { return (for more information regarding your ban please join #HelpKick to ask for removal) }
alias -l kick_reason { return 04[AUTO SCAN] [Banned] reason: Bad nicknames are not allowed on this channel - $id_rand - $kick_add_reason }
----------------------------------------------------------------------
#scanbadnicks off
raw 354:*: check_badwords $2 $3 | haltdef
raw 315:*: .disable #scanbadnicks | haltdef
#scanbadnicks end

Примечание: Чтобы скрипт начал работать в автоматическом режиме, необходимо в контекстном меню "Scan Bad Nicks" включить хотя бы один из нескольких пунктов авто проверки.

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

5

Thanks Epic, but NOT WORK. Try again pls

6

Я проверил ещё раз и у меня скрипт работает нормально.

Скриншоты теста:
https://i.ibb.co/dtL1nKz/join-bad-nicks.jpg
https://i.ibb.co/GThCrwZ/menu-scan-bad-nicks.png
https://i.ibb.co/PDSVxRR/ban-kick-bad-nicks.jpg

Попробуйте проверить правильно ли у вас расположены файлы "chans.txt" и "badwords.txt", с которыми взаимодействует скрипт.
Они должны находиться в той же папке, где находится сам файл скрипта.

У меня это находится по пути "scripts\ScanBadNicks\":

https://i.ibb.co/kQz5zNj/script-path-files.jpg

Также проверьте правильно ли у вас заполнены эти файлы:

  • Файл "chans.txt" - содержит список каналов, в которых может работать скрипт.

  • Файл "badwords.txt" - содержит список плохих слов, которые следует искать в никах пользователей.

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

7

Dear Epic!

I solved my problem is.

1472,2 написал(а):

Они должны находиться в той же папке, где находится сам файл скрипта. У меня это находится по пути "scripts\ScanBadNicks\"

I haven't created a folder with the name "ScanBadNicks" and copy chans.txt and badwords.txt to this folder, so the code doesn't work. I think it work fine when i do that. Thanks alots my friend.

[indent=0.8,0.5]
Important note to Epic:

  • I don't use mIRC, i use AdiIRC, because AdiIRC is free soft and faster, tronger than mIRC many many time.

  • Because i use AdiIRC, and you always wrote your codes for mIRC, so sometimes your code doesn't work for me and some errors occur. Example: [mark=red]if ($nick == $me) {  }[/mark] body of the condition must always be enclosed in curly braces [mark=red]{  }[/mark] if not, code doesn't work.

  • You often use the [mark=red]----------[/mark] symbol to separate variables or aliases for visibility and convenience in searching and editing (if necessary). But if there is NOT ";" on the first line, code nottice error like this: [mark=red]unknow ----------[/mark] so i must have to add ";" so that it would be like this [mark=red];----------[/mark].

  • Current, i use more than 70 code snippets (*.mrc) for AdiIRC, but AdiIRC still work so very fast, no prolem, no error. I recommend you try AdiIRC so you can get a feel and compare.

Отредактировано Robert (06.11.2023 05:59)

8

New ideas!

1. Your code is missing the check ON NICK event for newnick = Badword. Can you add it to make it more perfect?
2. I thinks you should change all event check on nicks join AND check on me join to check "ON OP" event  [mark=blue]on *:OP:#: { ... }[/mark] - what do you thinks about this idea? It's shorter and stronger, faster...?

Thanks so much, friend

Отредактировано Robert (06.11.2023 06:16)

9

1473,352 написал(а):

I haven't created a folder with the name "ScanBadNicks" and copy chans.txt and badwords.txt to this folder, so the code doesn't work.

Очень жаль, что вы невнимательно читаете инструкции, которые были опубликованы вместе с кодом скрипта. Поэтому не будет лишним ещё раз повторить, что каждый скрипт должен находиться в отдельной папке со своим названием (внутри "scripts" папки), вместе со всеми рабочими файлами, с которыми он взаимодействует, и лишь в редких случаях вы можете использовать внешние общие файлы (например базы данных), которые могут быть связаны одновременно с несколькими скриптами. Кроме того при необходимости вы можете создать внутри папки со скриптом дополнительные папки для разделения файлов по категориям, но тогда нужно будет также исправить в скрипте все пути к файлам. Всё это будет способствовать стабильной работе скриптов и общему порядку в корневой папке mIRC, а также вам будет гораздо удобнее, если вы захотите в один клик скопировать или поместить скрипт в ZIP-архив, для передачи и отправки его другим пользователям.


1473,352 написал(а):

I don't use mIRC, i use AdiIRC, so sometimes your code doesn't work for me and some errors occur.

Да. Именно потому, что я пишу скрипты для mIRC, а вы используете их в AdiIRC иногда могут возникать некоторые ошибки и конфликты совместимости из-за разницы используемых клиентских программ, которые были созданы разными разработчиками. Так как авторы AdiIRC пошли по пути использования в коде такого же синтаксиса, который повторяет синтаксис mIRC скриптов - то значит теперь они полностью отвечают за 100%-ную поддержку обратной совместимости и работоспособность используемых скриптов. Поэтому они должны постоянно отслеживать подобные случаи и своевременно исправлять обнаруженные пользователями ошибки при использовании mIRC скриптов в AdiIRC, т. к. эти скрипты должны гарантированно работать без ошибок, если они также не возникают при использовании их в mIRC. То есть этим исправлением должны заниматься не разработчики скриптов, а именно авторы и разработчики данного клиента. Поэтому вам будет лучше обратиться с этим вопросом непосредственно в тех-поддержку AdiIRC.

В противном случае, если я начну писать скрипты с учётом особенностей разных других альтернативных клиентов, таких как AdiIRC, то однажды может случиться так, что все мои скрипты могут стать неисправными при использовании их в mIRC. Так что, если вам очень нравится использовать AdiIRC или какой то другой клиент, то на данный момент я вам могу порекомендовать только единственное верное решение - прежде чем использовать скрипт в AdiIRC, который был написан для mIRC и с помощью mIRC, вам необходимо предварительно протестировать его на работоспособность в том же mIRC (последней версии), и только после этого, убедившись в его исправности, уже самостоятельно вносить в код необходимые вам корректировки для использования скрипта в AdiIRC, чтобы избежать подобных недоразумений и траты времени на их решение.


1473,352 написал(а):

I recommend you try AdiIRC so you can get a feel and compare.

Я уже пробовал использовать AdiIRC и он действительно имеет ряд преимуществ, а также имеет множество дополнительных настроек, которых нет, и наверное никогда не будет в mIRC. Хотя многое из этого я могу создать и добавить самостоятельно. Больше всего меня радует в AdiIRC возможность использования графических смайлов в окнах чата. Но к сожалению, этот клиент всё ещё далёк от совершенства и находится на стадии активной разработки. Ещё не всё сделано, что должно повторять весь функционал mIRC - который, к слову сказать, разрабатывается и улучшается мистером "Khaled"-ом уже более 28-ми лет, что заслуживает уважения и имеет гораздо больший вес для стабильности и работоспособности программы. Кроме того, меня очень сильно огорчает, что в AdiIRC невозможно использовать некоторые dll (такие как DCX), которые были специально созданы для mIRC и с помощью которых я могу создавать собственные скриптовые проекты на основе диалоговых окон с красивым дизайном. По этой причине мне пока НЕ подходит AdiIRC для использования в качестве постоянного клиента и в том числе для разработки собственных скриптов. Но тем не менее, спасибо вам за предложение.

Как только всё, что мне нужно будет реализовано и будет исправно работать в AdiIRC, я обязательно попробую начать использовать его для чата, ну а пока что - "mIRC Forever!" 

Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]

10

1474,352 написал(а):

1. Your code is missing the check ON NICK event for newnick = Badword.

В вашем исходном коде отсутствовал этот обработчик событий, поэтому это не было сделано.


1474,352 написал(а):

2. I thinks you should change all event check on nicks join AND check on me join to check "ON OP" event - what do you thinks about this idea? It's shorter and stronger, faster...?

Это хорошая идея и так должно работать гораздо быстрее. Это будет достаточно сделать только для проверки, когда Бот присоединяется к каналу и когда он получает @ "OP", тогда он сможет приступить к поиску плохих слов в никах пользователей, но перед этим Бот обязательно должен получить весь список ников присутствующих на канале.


Я обновил скрипт с учётом ваших предложений:

  • Добавлен обработчик событий "ON NICK" для проверки пользователей, которые изменили свой ник на новый ник.

  • Добавлен пункт в контекстное меню для включения/отключения проверки изменения пользовательских ников.

  • Добавлен обработчик событий "ON OP" только для проверки, когда Бот получает @ "OP" на канале.

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

Итак, вы можете попробовать использовать этот код скрипта:

Код:
;######################################################################
;#  Название: Scan Bad Nicks v1.2
;#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
;#  Описание: Сканирует все присоединяющиеся, а также уже присутствующие на канале ники, когда Бот сам присоединяется к каналу. Если в названии ников будут найдены плохие слова из файла "badwords.txt", то выполняется "Кик+Бан". 
;#  Путь: Все рабочие файлы, с которыми взаимодействует скрипт должны находиться в той же папке, где находится сам скрипт: "scripts\ScanBadNicks\".
;######################################################################

menu channel {
  Scan Bad Nicks
  .Start scanning: scan_start $chan
  .-
  .Scan join nicks (All)
  ..$iif(%sbn_nicks_join == on,$style(1)) ON: %sbn_nicks_join = on | echo -a Auto scan when nicks joined = 03ON
  ..$iif(%sbn_nicks_join == off,$style(1)) OFF: %sbn_nicks_join = off | echo -a Auto scan when nicks joined = 04OFF
  .Scan new nicks (All)
  ..$iif(%sbn_nicks_new == on,$style(1)) ON: %sbn_nicks_new = on | echo -a Auto scan when changing to new nicks = 03ON
  ..$iif(%sbn_nicks_new == off,$style(1)) OFF: %sbn_nicks_new = off | echo -a Auto scan when changing to new nicks = 04OFF
  .Scan join me (Bot)
  ..$iif(%sbn_me_join == on,$style(1)) ON: %sbn_me_join = on | echo -a Auto scan when me joined = 03ON
  ..$iif(%sbn_me_join == off,$style(1)) OFF: %sbn_me_join = off | echo -a Auto scan when me joined = 04OFF
}
;----------------------------------------------------------------------
on *:JOIN:#:{
  if (!$read($file_chans,ntw,$chan)) { return }
  if ($nick == $me) { .ial on | ialfill $chan }
  if ($nick != $me && %sbn_nicks_join == on) { check_badwords $chan $nick }
}
on *:OP:#: if (!$read($file_chans,ntw,$chan)) { return } | if ($opnick == $me && %sbn_me_join == on) { scan_start $chan }
on *:NICK:{ if (%sbn_nicks_new == on) { var %nick $newnick, %i $comchan(%nick,0) | while (%i) { var %chan $comchan(%nick,%i) | if ($read($file_chans,ntw,%chan)) check_badwords %chan %nick | dec %i } } }
alias -l scan_start { if ($me !isop $1) { return } | .enable #scanbadnicks | who $1 $+($chr(37),cn) }
alias -l check_badwords { if ($me ison $1 && $me isop $1) { var %f $file_badwords, %l $lines(%f), %i 1 | while (%i <= %l) { if ($+(*,$read(%f,nt,%i),*) iswm $2) ban $+(-ku,$ban_timer) $1 $2 2 $kick_reason | inc %i } } }
;----------------------------------------------------------------------
alias -l file_chans { return $scriptdir $+ chans.txt }
alias -l file_badwords { return $scriptdir $+ badwords.txt }
alias -l id_rand { return $+([id:,$chr(32),$rand(A,Z),$rand(A,Z),$rand(1,9999),]) }
alias -l ban_timer { return $rand(1800,3600) }
alias -l kick_add_reason { return (for more information regarding your ban please join #HelpKick to ask for removal) }
alias -l kick_reason { return 04[AUTO SCAN] [Banned] reason: Bad nicknames are not allowed on this channel - $id_rand - $kick_add_reason }
;----------------------------------------------------------------------
#scanbadnicks off
raw 354:*: check_badwords $2 $3 | haltdef
raw 315:*: .disable #scanbadnicks | haltdef
#scanbadnicks end
Подпись автора

[html]<style>img {vertical-align:middle;}.hnet{color:#FFFFFF;}.hstar{color:#DE0000;}.htext{font-family:Verdana;font-size:13px;color:#6E1E00;}.heading{font-family:Verdana;font-size:13px;font-weight:bold;background-color:#4897E7;}.stitle{font-family:Verdana;font-size:12px;}.dot{color:#808000;}.desc{color:#ADADAD;}a .curl{font-family:Verdana;font-size:13px;color:#3A92CD;}</style><table><tr><td width="20px" height="20px"><img src="http://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="http://forum.epicnet.ru/viewtopic.php?id=234"><span class="heading"> <span class="hstar">★</span> <span class="hnet">EpicNet.Ru</span> <span class="hstar">★</span> </span><span class="htext"> - IRC Чат © 2008</span></a></td></tr><tr><td></td><td><div class="stitle"><span class="dot">•</span> <span class="desc">Вход через вебгейт:</span> <a href="http://irc.epicnet.ru"><span class="curl">http://irc.epicnet.ru</span></a><br><span class="dot">•</span> <span class="desc">Сервер:</span> irc.epicnet.ru <span class="desc">Порты:</span> 6667, 6668 (ssl)<br><div></td></tr></table>[/html]


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Auto scan for BadNicks when MyBot or users join a channel