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

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

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



CAPS TEXT PROTECTION

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

1

Here I'm again, and here is my code example (almost a nightmare) 

Код:
on *:TEXT:*:#test:{ 
  var %n 2
  if ($regex($nick($chan,$nick).pnick, /[~|&|@|%|+].*/) != 1) { 
    var %percentage 40
    if ($calc($regex($1-,/[A-Z]/g) / $len($1-) * 100) > %percentage) {
      if (%n < 3)  {
        inc $+(%,caps,.,$nick,.,$wildsite)
        var %i $($+(%,caps,.,$nick,.,$wildsite),2)
        if (%i <= %n) { 
          notice $nick 4***FIRST WARN***
        } 
        if (%i = 2) { 
          kick  # $nick 4***SECOND WARN***
        }
        if (%i = 3) { 
          ban -ku600 # $nick 4***BAN REASON*** | write $mircdir $+ banemule.txt *CapsText* $date $time $nick ---> $site
          unset $+(%caps,.,$nick,.,$wildsite)
        }
      }
    }
  }
}

This script check for text wrote in a channel.

Rules:
- Caps Letter = No more than 40% - otherwise, the next action will be performed sequentially
- Warn/Kick/Ban = 1. WARN , 2. KICK , 3. BAN - on third violation

For example, the following text should be prohibited:
[rect width=500]
C________I__________A__________O________123
B___U___O::::N***G===I***O:::R___N___O ?
[/rect]

But due to the fact that in addition to capital letters, the text contains many special characters, the calculation gives less than 40%, and this is wrong, it should be 100%
Therefore, before checking, all unnecessary parts must be cut out from the text so that only letters remain, for the correct percentage calculation.

Thanks in advance

2

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

  • log_file - возвращает путь к лог-файлу для записи причины бана, с датой, временем и пользовательскими данными.

  • max_letters - возвращает максимальное допустимое количество букв в тексте сообщения, при котором не будет производиться проверка.

  • max_percent - возвращает число процентов допустимого объёма больших букв в тексте сообщения, выше которого будут произведены последовательные действия "Warn/Kick/Ban".

  • time_ban - возвращает количество времени в секундах, на которое должен быть установлен "Ban".

  • msg_warn - возвращает текст предупреждения, которое будет отправлено пользователю командой "notice".

  • msg_kick - возвращает текст сообщения с причиной, которую увидит пользователь после выполнения "Kick".

  • msg_ban - возвращает текст сообщения с причиной, которую увидит пользователь после установки "Ban".

Примечание: Перед началом проверки из текста сообщения вырезаются все символы, кроме букв английского и русского алфавита в обоих регистрах (см. строку 18).

[indent=0.8,0.5]
Итак, попробуйте протестировать этот код скрипта:

Код:
on *:TEXT:*:#test:{
  if ($nick($chan,$nick,~&@%+)) { return }
  var %host $ial($nick).host, %addr $ial($nick).addr
  var %hname $+(capstext,$chan), %text $cut_every_but_not($strip($1-))
  if ($len(%text) > $max_letters && $count_caps(%text) > $max_percent) {
    hinc -m %hname %host 1
    if ($hget(%hname,%host) == 1) { .notice $nick $msg_warn }
    if ($hget(%hname,%host) == 2) { kick $chan $nick $msg_kick }
    if ($hget(%hname,%host) >= 3) {
      ban $+(-ku,$time_ban) $chan $nick 2 $msg_ban
      if (!$exists($nofile($log_file))) { mkdir $nofile($log_file) }
      write $log_file *CapsText* $date $time $nick ---> %addr | hdel %hname %host
    }
  }
}

alias -l count_caps { return $round($calc($regex($1-,/[A-ZА-ЯЁ]/gu) * 100 / $len($1-)),1) }
alias -l cut_every_but_not { return $regsubex($1-,/[^a-zA-Zа-яА-ЯёЁ]/gu,) }

alias -l log_file { return scripts\CheckCapsText\log.txt }
alias -l max_letters { return 3 }
alias -l max_percent { return 40 }
alias -l time_ban { return 600 }
alias -l msg_warn { return Warning: There are too many caps letters in the message. }
alias -l msg_kick { return Warning: There are too many caps letters in the message! }
alias -l msg_ban { return Reason: There are too many caps letters in the message!!! }

[indent=0.8,0.5]
P.S. Вы хотите запретить на канале любой текст, содержащий слишком много заглавных букв, но похоже, это правило не распространяется на заголовок при создании поста форума 

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

[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

P.S. You want to ban any text on the channel that contains too many capital letters, but it seems that this rule does not apply to the title when creating a forum post

Oh yes, I noticed. Sorry. Won't happen no more 

This is a bit different from this morning one (a bit more hard to understand , there're new expressions)
But (as always) it perfectly work, Epic.
Really thanks.
P.S.:With Your master help I simplify my "sniper" bot from 14 addons , to just 6! 

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»