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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Kick+Ban for a bad nick when he is on the channel


Kick+Ban for a bad nick when he is on the channel

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

1

Hi, I have this script that works fine, when they enter the room or change their nickname inside the room.

Код:
on 1:join:#: {
  $BaneaUsuarios($nick,$chan)
}


On *:nick:{
  var %a 1 | while ($comchan($newnick, %a)) { $BaneaUsuarios($newnick,$v1) | inc %a }
}


alias BaneaUsuarios {
  var %cuentaNicks = 1
  while (%cuentaNicks <= $lines(patrones.txt)) {
    if ($read(patrones.txt,%cuentaNicks) isin $1) || ($read(patrones.txt,%cuentaNicks) iswm $1) {
      var %cuentaExcepciones = 1
      while (%cuentaExcepciones <= $lines(patrones-exceptuados.txt)) {
        if ($read(patrones-exceptuados.txt,%cuentaExcepciones) isin $1) || ($read(patrones-exceptuados.txt,%cuentaExcepciones) iswm $1) {
          halt
        }
        inc %cuentaExcepciones
      }
      ban $2 $1 $+ !*@* | kick $2 $1 1Su nick no es el mas adecuado para la tematica del canal 4 $chan 1Por Favor, cambielo. 4Gracias.
      halt
    }
    inc %cuentaNicks
  }
}

Would it be possible that when i enter a room as a moderator i would make a "/who" and Kick+Ban the bad nick. Thanks.

I'm sorry for my english but I'm spanish and the translator we already know....

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

Mi ingles: no es el mejor, Manda el traductor... :writing:

2

1372,370 написал(а):

Would it be possible that when i enter a room as a moderator i would make a "/who" and Kick+Ban the bad nick. Thanks.

Если я правильно понял перевод вашего текста, то вы хотите, чтобы после того как вы подключились к каналу, скрипт установленный внутри вашего mIRC, автоматически выполнял команду "/who $chan" для проверки всех ников, которые находятся на этом канале, и в случае обнаружения ников или их адресов в списке файла "patrones.txt" - был установлен Kick+Ban.

Я кое что изменил в вашем скрипте и добавил новые строки. Теперь вы можете настраивать некоторые данные для работы скрипта через алиас "settings".

Список "patrones.txt" может содержать как ники, так и полные или частичные пользовательские маски адресов с подстановочными знаками:
[flist]troll
*vasya*
*!spam@*
*!*@55.66.*
*@*.77.88
*!testing@99.111.*
flood!*@11.22.33.44
[/flist]

Идентификатор $BanUsers() - теперь должен использовать 3 параметра: $nick , $address/$mask , $chan

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

Код:
alias -l settings {
  %path_file1 = $scriptdir $+ patrones.txt
  %path_file2 = $scriptdir $+ patrones-exceptuados.txt
  %kick_text = 01Su nick no es el mas adecuado para la tematica del canal4 :chan: 01Por Favor, cambielo. 04Gracias.
}
--------------------------------------------------
on *:OP:#: if ($opnick == $me) { .hadd -m badnicks nowho 1 | who $chan }
on *:JOIN:#: $BanUsers($nick,$address($nick,5),$chan)
on *:NICK: var %a 1 | while ($comchan($newnick,%a)) { $BanUsers($newnick,$address($newnick,5),$v1) | inc %a }
raw 352:*: haltdef | if ($hget(badnicks,nowho)) $BanUsers($6,$+($6,!,$3,@,$4),$2)
raw 315:*: haltdef | if ($hget(badnicks,nowho)) .hdel -sw badnicks nowho
--------------------------------------------------
alias -l BanUsers {
  settings | var %accNicks 1
  while (%accNicks <= $lines(%path_file1)) {
    var %pn $read(%path_file1,%accNicks)
    if (%pn isin $1) || (%pn iswm $2) {
      var %accExcepts 1
      while (%accExcepts <= $lines(%path_file2)) {
        var %pen $read(%path_file2,%accExcepts)
        if (%pen isin $1) || (%pen iswm $2) { return }
        inc %accExcepts
      }
      ban $3 $+($1,!*@*) | kick $3 $1 $replace(%kick_text,:chan:,$3) | return
    }
    inc %accNicks
  }
}

[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="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://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

Hi Epic, thanks for replying
the script helped me to do it on an ircap forum which no longer exists.
as I pasted it works, when bad nick enter room or inside it new nick the ban-kik .
why the idea arises that when I enter and chan OP me look at the nick that are already inside the room and if any match the list of nick patrones.txt ban-kik him.
because if you enter a room with 200,400,600,1000 users you can imagine how long it takes to look at all the nicknames.
the script that you created and recommended to me does nothing at all neither when you enter, change, nor when I enter and chan me OP. again thanks and I hope I explained myself well and the translator translate in the same way.

https://forumupload.ru/uploads/000d/c9/8c/370/476544.jpg

Отредактировано malaje (10.11.2022 03:29)

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

Mi ingles: no es el mejor, Manda el traductor... :writing:

4

malaje, Добрый вечер. Я не совсем понимаю перевод вашего текста. Постарайтесь не использовать сокращения слов, не допускать орфографических ошибок и писать более полные слова для правильного перевода текста. Возможно в этом причина трудности перевода. Если вы пишите текст основываясь только на собственные познания английского языка, то попробуйте довериться онлайн переводчику Google Translate. Если вам трудно использовать английский язык, то вы можете попробовать написать вопрос на русском языке, или даже использовать родной язык, как я понимаю это испанский.

Скажите пожалуйста, вам помогли те изменения, которые я сделал в скрипте? Всё ли правильно работает?

Если вы хотите что-то изменить или добавить, или вы заметили какие-то ошибки в работе скрипта, то пожалуйста опишите их в более подробной форме.
Это должна быть полная последовательность действий, по пунктам (1, 2, 3...), которые нужно выполнить, чтобы выявить проблему неработоспособности скрипта.

[indent=0.8,0.5]
Скриншот, который вы прислали очень маленького размера и я почти не могу ничего разглядеть на нём для прочтения текста.
Не могли бы вы сделать скриншот в более высоком разрешении, например (Full HD) 1920x1080 пикселей ?

Для примера: Здесь можно создать превью с уменьшенным изображением, которое можно увеличить кликом мыши:
https://forumupload.ru/uploads/000d/c9/8c/330/t791801.jpg
Это очень удобно и выглядит компактно при оформлении нового поста.

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

[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="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://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

Hola Epic te hablo en mi idioma español
disculpa por las traducciones, pero es el traductor de Google el que no traduce de la misma manera que me expreso.
Resumiendo que el script que as transformado o echo no funciona en absoluto.
Como yo lo copie sacaba a los malos nick tanto en join como, en cambio, dentro de la sala.
Que previamente añadías los nick incluso con comodín * en "patrones.txt" (baneaba) y (excluía) a los que añadías en "patrones-exceptuados.txt", ya que si entraba amador sería excluido, pero si entraba mamador seria baneado de ahí dos listas.
La ayuda que solicite es para sí alguien podría mejorarlo haciendo lo que ya hacía más, cuando yo entrara en una sala que fuera moderador mirara la lista de nick que ya están en dicha sala y si coincide con nick que ya están en la lista de "patrones.txt" los saque

ejemplo: entro en la sala y hay 10 user chan me da la @

[flist]pepe
manolo
juan
amador
mamador
María
ana
Begoña
Aitana
Emma[/flist]

que el script revise la lista de user ya en sala solo cuando yo entro en sala y channel me da @ y saque a los malos nick añadido a la lista de "patrones.txt"
en este caso sería mamador
amador estaría en la lista de excluidos
espero se me entienda y te vuelvo a pedir disculpas, gracias

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

Mi ingles: no es el mejor, Manda el traductor... :writing:

6

malaje, Я не совсем понимаю из вашего поста в чём может быть причина неработоспособности скрипта или что вы в нём хотели бы исправить. У меня при тестировании всё работает хорошо.

Последовательность действий, которые нужно выполнить, чтобы проверить работоспособность скрипта:

  • В корневой папке $mircdir, где установлен ваш mIRC открыть папку "scripts", внутри неё создать новую папку "BadNicks", и далее открыть её.

  • Внутри папки "BadNicks" создать файл с названием "BadNicks.mrc", далее открыть файл и сохранить в нём этот код скрипта.

  • Там же рядом создать 2 файла с названиями "patrones.txt" (для бана плохих пользователей) и "patrones-exceptuados.txt" (для исключения пользователей).

  • Запустить ваш mIRC и выполнить команду "/load -rs scripts\BadNicks\BadNicks.mrc", чтобы загрузить скрипт.

  • Подключиться к сети и зайти на канал, где вы являетесь оператором канала со знаком @ возле ника.

  • После того как вы получите статус оператора канала @, скрипт автоматически выполнит команду "/who $chan", чтобы проверить полный список пользователей канала и последовательно сравнит их со списком записей в файле "patrones.txt". Допустим, если в вашем списке есть строка с ником "troll", то пользователь под этим ником будет забанен на этом канале, при условии, что этот ник отсутствует в списке исключений в файле "patrones-exceptuados.txt".

Пример расположения файлов с данными:
https://forumupload.ru/uploads/000d/c9/8c/330/82903.png     https://forumupload.ru/uploads/000d/c9/8c/330/933587.png

[indent=0.8,0.5]
Скриншот с демонстрацией работоспособности скрипта:
https://forumupload.ru/uploads/000d/c9/8c/2/254824.png

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

[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="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://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

Hola Epic

Ya di con mi error, por eso no me funcionaba
Cuando introducía los malos nick lo hacía atrás vez de comando por esta ruta: write patrones.txt
El cual a la hora de leer el script los archivos de texto que apuntan hacia otra ruta están vacíos estaban vacíos el cual no hacía nada, ya que no contenía nick malos dichos TXT.
Ahora le di la ruta correspondiente y efectivamente funciona: write $scriptdirpatrones.txt

Nuevamente, disculpa, pero aprendemos de prueba y error y estoy aprendiendo cada día que pasa nuevamente gracias.

PD: Espero que en salas grandes de 200 o mas user no aga flood de ban masivo y me saque el propio servidor

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

Mi ingles: no es el mejor, Manda el traductor... :writing:

8

Hola de nuevo Epic

Habría alguna forma, que en vez de banear uno por uno a los nick malos de la lista de user, fuera posible "mode #channel +bb nick1!*@* nick2!*@*" etc.
Es un ejemplo si hubiese más o menos nick ya el script sacaría a los que encontrara en lista. nuevamente muchas gracias

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

Mi ingles: no es el mejor, Manda el traductor... :writing:

9

1379,370 написал(а):

Habría alguna forma, que en vez de banear uno por uno a los nick malos de la lista de user, fuera posible "mode #channel +bb nick1!*@* nick2!*@*" etc.

Я доработал предыдущий бета код и значительно улучшил его функциональность, внеся целый ряд обновлений, с учётом вашей просьбы.
Также теперь у этого скрипта появилось собственное название "Ban Bad Users" и индекс версии "1.0".

Все настройки осуществляются в алиасе "bbu_sets" через изменение значений переменных:

  • %bbu_path_masks - содержит путь к файлу со списком пользовательских адрес-масок с подстановочными знаками, для запрета их на канале.

  • %bbu_path_excepts - содержит путь к файлу со списком пользовательских адрес-масок с подстановочными знаками, для исключения запрета на канале.

  • %bbu_ban - может содержать одно из возможных значений "yes/no" для включения или отключения бана на канале.

  • %bbu_ban_types - может содержать несколько числовых значений перечисленных через запятую для настройки типов масок банов, которые нужно установить одновременно на каждого пользователя. Таблица с возможными вариантами и нумерацией типов масок банов находится внутри кода.

  • %bbu_ban_max - содержит числовое значение количества банов, которые могут быть установлены в одной строке.

  • %bbu_ban_time - содержит числовое значение времени в секундах для установки бана, после которого он будет снят.

  • %bbu_unban - может содержать одно из возможных значений "yes/no" для включения или отключения снятия бана на канале.

  • %bbu_kick - может содержать одно из возможных значений "yes/no" для включения или отключения кика на канале.

  • %bbu_kick_msg - содержит текстовое сообщение, которое будет отображаться при кике пользователя на канале.

Список "masks.txt" может содержать как ники, так и полные или частичные пользовательские маски адресов с подстановочными знаками:

[flist]troll
*vasya*
*!spam@*
*!*@55.66.*
*@*.77.88
*!testing@99.111.*
flood!*@11.22.33.44
[/flist]

Все файлы вместе со скриптом должны находиться в одной папке по пути "scripts\BanBadUsers\".


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

Код:
#####################################################################
#  Name: Ban Bad Users v1.0
#  Author: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Description: Checks all nicknames of users joining the channel for their presence in the list of bad addresses in the file and performs Kick+Ban.
#  Path to files: "scripts\BanBadUsers\"
#####################################################################

alias -l bbu_sets {
  %bbu_path_masks = $scriptdir $+ masks.txt
  %bbu_path_excepts = $scriptdir $+ excepts.txt
  %bbu_ban = yes
  %bbu_ban_types = 1,3,9
  %bbu_ban_max = 10
  %bbu_ban_time = 3600
  %bbu_unban = yes
  %bbu_kick = yes
  %bbu_kick_msg = 14Your nick is not the most appropriate for4 :chan: 14channel. 04Please change it. Thank you.
}

#####################################################################
#  Type 1:   nick!*@*                (flood!*@*)
#  Type 2:   *!user@*                (*!bot@*)
#  Type 3:   *!*@host                (*!*@11.22.33.44)
#  Type 4:   nick!user@*             (flood!bot@*)
#  Type 5:   nick!*@host             (flood!*@11.22.33.44)
#  Type 6:   *!user@host             (*!bot@11.22.33.44)
#  Type 7:   *!*@subhost.*           (*!*@11.22.*)
#  Type 8:   nick*!*@subhost.*       (flood*!*@11.22.*)
#  Type 9:   *!*user*@subhost.*      (*!*bot*@11.22.*)
#  Type 10:  nick*!*user*@subhost.*  (flood*!*bot*@11.22.*)
#####################################################################

alias -l BanType {
  var %n $gettok($1,1,33), %i $gettok($gettok($1,2,33),1,64), %h $gettok($1,2,64), %sh $gettok(%h,1-2,46)
  if (1 == $2) return $+(%n,!*@*)
  if (2 == $2) return $+(*!,%i,@*)
  if (3 == $2) return $+(*!*@,%h)
  if (4 == $2) return $+(%n,!,%i,@*)
  if (5 == $2) return $+(%n,!*@,%h)
  if (6 == $2) return $+(*!,%i,@,%h)
  if (7 == $2) return $+(*!*@,%sh,.*)
  if (8 == $2) return $+(%n,*!*@,%sh,.*)
  if (9 == $2) return $+(*!*,%i,*@,%sh,.*)
  if (10 == $2) return $+(%n,*!*,%i,*@,%sh,.*)
}
---------------------------------------------------------------------
on !*:JOIN:#: $CheckUsers($nick,$address($nick,5),$chan)
on *:NICK: if ($newnick != $me) { var %a 1 | while ($comchan($newnick,%a)) { $CheckUsers($newnick,$address($newnick,5),$v1) | inc %a } }
on *:OP:#: if ($opnick == $me) { .hadd -m bn nowho $chan | who $chan }
raw 352:*: if ($hget(bn,nowho) == $2) { haltdef | $CheckUsers($6,$+($6,!,$3,@,$4),$2) }
raw 315:*: if ($hget(bn,nowho) == $2) { haltdef | .hdel -sw bn nowho }
---------------------------------------------------------------------
alias -l CheckUsers {
  bbu_sets | var %accNicks 1 | while (%accNicks <= $lines(%bbu_path_masks)) {
    var %pn $read(%bbu_path_masks,%accNicks)
    if (%pn isin $1) || (%pn iswm $2) {
      var %accExcepts 1 | while (%accExcepts <= $lines(%bbu_path_excepts)) {
        var %pen $read(%bbu_path_excepts,%accExcepts) | if (%pen isin $1) || (%pen iswm $2) { return } | inc %accExcepts
      }
      var %bn = %bn $1 | var %i 1 | while (%i <= $numtok(%bbu_ban_types,44)) {
        var %bm = %bm $BanType($2,$gettok(%bbu_ban_types,%i,44)) | if ($numtok(%bm,32) >= %bbu_ban_max) { $BanUsers(%bn,%bm,$3) | unset %bm } | inc %i
      }
      if (%bn && %bm) { $BanUsers(%bn,%bm,$3) } | return
    }
    inc %accNicks
  }
}
alias -l BanUsers {
  if (%bbu_ban == yes) mode $3 $+(+,$str(b,$numtok($2,32))) $2
  if (%bbu_unban == yes && %bbu_ban_time > 0) { .timerBBU_UNBAN 1 %bbu_ban_time mode $3 $+(-,$str(b,$numtok($2,32))) $2 }
  if (%bbu_kick == yes) { var %n 1 | while (%n <= $numtok($1,32)) { kick $3 $gettok($1,%n,32) $replace(%bbu_kick_msg,:chan:,$3) | inc %n } }
}

У меня не было достаточно много времени, чтобы хорошо протестировать этот скрипт, поэтому вам предстоит хорошо проверить этот скрипт на пустых каналах, прежде чем начать его использовать на общих каналах с большим количеством пользователей. Если вы обнаружите какие-то ошибки или вы считаете, что этот скрипт работает неправильно или должен делать что-то другое, то дайте мне знать об этом в новом комментарии этой темы форума.

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

[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="https://forumstatic.ru/files/000d/c9/8c/34681.jpg"></td><td><a href="https://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 скриптам » Kick+Ban for a bad nick when he is on the channel