Бот mIRC-ссылок для Twitch

#mirc

#mirc

Вопрос:

Это довольно длинный пост (особенно приведенный ниже код), так что потерпите меня.

С помощью @Siris_Black мне удалось заставить эту штуку работать.

 //LINK PROTECTION
    on @*:text:*:#:linkpost $1-
    on @*:action:*:#:linkpost $1-
    on @*:notice:*:#:linkpost $1-
    alias -l linkpost {
      if ((!%p) amp;amp; (!$hfind(permit,$nick))) { inc -u4 %p
        var %purge /^!(linkso(n|ff)|(permit))b/iS
        var %domain com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|tv
        var %exception /(?:http?://)?w{3}.(youtube|imgur|i.imgur).com/
        var %link /(?<=^|s)((?>S{3,8}://|w{3}56)S )|56( $  %domain $  )b/iS
        if ($findtok(%chanon1,#,1,32)) amp;amp; ($nick(#,$nick,vr)) amp;amp; ($regex($1-,%link)) amp;amp; (!$regex($1-,%exception)) {
          timeout 30 # $nick | /mode # -b $nick
          msg # $nick $  , you did not have permission to post a link. Ask a mod to !permit you.
          msg # /timeout $nick 1
        }
        elseif (($regex($1-,%purge)) amp;amp; ($regml(1) = permit) amp;amp; ($nick isop #) amp;amp; ($$2 ison  #)) {
          hadd -mz permit $v1 30 | notice $v1 You have 30 seconds to post a link. Starting now!
          msg # You now have 30 seconds to post a link!
        }
        elseif (($regml(1) = link on) amp;amp; ($nick isop #)) {
          goto $iif(!$istok(%chanon1,#,32),a,b) | :a | set %chanon1 $addtok(%chanon,#,32)
          .msg # Link Protection Is Now on in: $ ($chr(2),#)
          halt | :b | .msg # $nick $  , Link Protection is already on in $amp;
            $ ($chr(2),#,$chr(2)) !
        }
        elseif (($regml(1) = link off) amp;amp; ($nick isop #)) {
          goto $iif($istok(%chanon1,#,32),c,d) | :c | set %chanon1 $remtok(%chanon,#,1,32)
          .msg # Link Protection Is now off in: $ ($chr(2),#)
          halt | :d | .msg # $nick $  , Link Protection is already off . $amp;
            !
        }
      }
    }
  

Однако, даже с расширенным скриптом, есть некоторые проблемы:

Ссылки из «белого списка», которые блокируются

http://i.stack.imgur.com/Ww4rK.png

Как вы можете видеть, Alexander_CJ и Psychosis06 разместили ссылки на Imgur, время ожидания истекло (у меня BetterTwitchTV, поэтому я могу показать, что было удалено). Есть ли что-то, что я неправильно настроил здесь?

Команда !permit не всегда работает Похоже, что возникают проблемы, когда команда permit фактически не разрешает никому. Основной проблемой были имена пользователей (что я выяснил: все имена пользователей указаны в нижнем регистре). Но, похоже, все еще есть проблемы с командой !permit username. Существуют ли здесь какие-либо конфликты?

Скрипт ссылок разрешает определенные ссылки, перед или после которых есть текст

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

Защита ссылок, похоже, мешает работе других скриптов

Это другие мои скрипты:

 //Commands
on *:TEXT:!commands:#circon: { 
  if ((%floodcommands) || ($($ (%,floodcommands.,$nick),2))) { return }
  set -u5 %floodcommands On
  set -u15 %floodcommands. $  $nick On
  msg $chan /me Currently available commands (place a '!' before the word) - donate|song|mods. Please don't spam commands. $ 
}

//Song
on *:TEXT:!song:#circon: { 
  if ((%floodsong) || ($($ (%,floodsong.,$nick),2))) { return }
  set -u5 %floodsong On
  set -u15 %floodsong. $  $nick On
  msg $chan /me You can find Circon's songs here, wait for the song to finish and it will be the last played song: http://grooveshark.com/#!/circonflexes/listens $ 
}

//Soccer Link
on *:TEXT:!football:#circon:{
  if ((%floodfootball) || ($($ (%,floodfootball.,$nick),2))) { return }
  set -u5 %floodfootball On
  set -u15 %floodfootball. $  $nick On
  msg $chan /me Circon is watching the World Cup here!: <LINK> $ 
} 

//Mods Link
on *:TEXT:!mods:#circon:{
  if ((%floodmods) || ($($ (%,floodmods.,$nick),2))) { return }
  set -u5 %floodmods On
  set -u15 %floodmods. $  $nick On
  msg $chan /me Circon's mods are here: http://youtu.be/N-IHaIKQvns. Servercross2 Recticle add-on - https://www.dropbox.com/s/dkd0b1fqp9oaz2e/ServerCross2.rar Dont forget to virus scan before use. :) $ 
}

//Donate
on *:TEXT:!donate:#circon:{
  if ((%flooddonate) || ($($ (%,flooddonate.,$nick),2))) { return }
  set -u5 %flooddonate On
  set -u15 %flooddonate. $  $nick On
  msg $chan /me Please donate to Circon here: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclickamp;hosted_button_id=KRQXH2YM3WGSW $ 
}
  

Время от времени команда, которая введена правильно (т. Е. !песня), не будет отображать текст. На самом деле, ничего не происходит. Есть ли что-нибудь, что противоречит? Я не вижу никаких проблем с тем, что я сделал. Существует два набора этих скриптов (для двух каналов Twitch).

Мне жаль, что этого слишком много. Я полный новичок в MSL, и мне просто нужны некоторые указания / подсказки. В первую очередь я был бы признателен за любые рекомендации по настройке самой строгой защиты ссылок, то есть запрещению ЛЮБЫХ ссылок, кроме YouTube и imgur.

Спасибо!

Ответ №1:

первый, другой на текстовом скрипте (!команда,!песня,!footbal,!mods) должен быть в другом удаленном файле
, поскольку у вас есть текстовый скрипт, который соответствует любому скрипту защиты ссылок

попробуйте это

 on @*:text:*:#:linkpost $1-
on @*:action:*:#:linkpost $1-
on @*:notice:*:#:linkpost $1-
alias -l linkpost {
if (!$hfind(permit,$nick)) {
var %purge /^!(linkso(n|ff)|(permit))b/iS
var %domain com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|tv
var %exception /(?:http?://)?(?:w{3}.)?. (youtube|QimgurE).com/
var %link /(?<=^|s)((?>S{3,8}://|w{3}56)S )|56( $  %domain $  )b/iS
if ($findtok(%chanon1,#,1,32)) amp;amp; ($nick(#,$nick,vr)) amp;amp; ($regex($1-,%link)) amp;amp; (!$regex($1-,%exception)) {
  timeout 30 # $nick | /mode # -b $nick
  msg # $nick $  , you did not have permission to post a link. Ask a mod to !permit you.
  msg # /timeout $nick 1
}
elseif (($regex($1-,%purge)) amp;amp; ($regml(1) = permit) amp;amp; ($nick isop #) amp;amp; ($$2 ison  #)) {
  hadd -mz permit $v1 30 | notice $v1 You have 30 seconds to post a link. Starting now!
  msg # $$2 $  , You now have 30 seconds to post a link!
}
elseif (($regml(1) = link on) amp;amp; ($nick isop #)) {
  goto $iif(!$istok(%chanon1,#,32),a,b) | :a | set %chanon1 $addtok(%chanon,#,32)
  .msg # Link Protection Is Now on in: $ ($chr(2),#)
  halt | :b | .msg # $nick $  , Link Protection is already on in $amp;
    $ ($chr(2),#,$chr(2)) !
}
elseif (($regml(1) = link off) amp;amp; ($nick isop #)) {
  goto $iif($istok(%chanon1,#,32),c,d) | :c | set %chanon1 $remtok(%chanon,#,1,32)
  .msg # Link Protection Is now off in: $ ($chr(2),#)
  halt | :d | .msg # $nick $  , Link Protection is already off . $amp;
    !
}
}
}
  

Комментарии:

1. Спасибо @Sirius_Black! Кажется, это работает лучше. Единственная небольшая проблема заключается в том, что $ nick $ , похоже, ссылается на меня, а не на человека, которому я даю разрешение: imgur.com/oDAwUjE $nick срабатывает, когда бот автоматически блокирует ссылку, ссылаясь на нарушителя. Но $ nick произносит мое имя, разрешая пользователю.

2. вместо этого измените $ nick на $ $ 2, если этот ответ правильный, выберите его как правильный, спасибо

3. Привет, @Sirius_Black , по какой-то причине бот для защиты ссылок пытается заблокировать мод / операцию (имя: G1nge_UK): imgur.com/4f7u3Js Кроме того, есть ссылки, которые проходят: imgur.com/4f7u3Js Скажите мне, хотите ли вы, чтобы я начал новый вопрос 🙂

4. Еще раз спасибо! Я внесу эти изменения и свяжусь с вами. Я обязательно начну новый вопрос по любым другим вопросам. 🙂

5. @Sirius_Black, | это не очень хорошая идея для такого использования, я бы поместил эти команды в новые строки. Кроме того, поставьте пробел после объявления переменной, чтобы перед условием if был дополнительный пробел. Наконец, mIRC объявляет локальную переменную с модификатором ‘=’ , хотя это не обязательно, и mIRC «разрешает» это нарушение, это не значит, что мы должны это нарушать. Я надеюсь, вы воспримете эти заметки как конструктивные.