mIRC Link Bot для Twitch
Это довольно длинный пост (особенно код ниже), так что терпите меня.
С помощью @Siris_Black мне удалось заставить эту вещь работать.
//LINK PROTECTION
on @*:text:*:#:linkpost $1-
on @*:action:*:#:linkpost $1-
on @*:notice:*:#:linkpost $1-
alias -l linkpost {
if ((!%p) && (!$hfind(permit,$nick))) { inc -u4 %p
var %purge /^!(link\so(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)) && ($nick(#,$nick,vr)) && ($regex($1-,%link)) && (!$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)) && ($regml(1) = permit) && ($nick isop #) && ($$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) && ($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 $&
$+($chr(2),#,$chr(2)) !
}
elseif (($regml(1) = link off) && ($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 . $&
!
}
}
}
Однако даже с обширным скриптом есть некоторые проблемы:
"Белые" ссылки, которые блокируются
Как вы можете видеть, Alexander_CJ и Psychosis06 опубликовали ссылки Imgur и истекло время ожидания (у меня есть BetterTwitchTV, поэтому я могу показать, что было очищено). Есть что-то, что я здесь неправильно настроил?
Команда! Allow не всегда работает. Кажется, есть проблемы, когда команда allow фактически никому не позволяет. Основной проблемой были имена пользователей (которые я выяснил: все имена пользователей в нижнем регистре). Но, похоже, проблемы с командой! Allow + 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-xclick&hosted_button_id=KRQXH2YM3WGSW $+
}
Время от времени команда, которая вводится правильно (например,! Song), не будет отображать текст. На самом деле ничего не происходит. Есть что-нибудь противоречащее? Я не вижу никаких проблем с тем, что я сделал. Существует два набора этих сценариев (для двух каналов Twitch).
Мне жаль, что это много. Я новичок в MSL, и мне просто нужны советы и подсказки. В первую очередь я был бы признателен за любые рекомендации по настройке самой строгой защиты ссылок - т.е. запрещать ЛЮБЫЕ ссылки, кроме youtube и imgur.
Спасибо!
1 ответ
Во -первых, другой текстовый скрипт (!command,!song,!footbal,!mods) должен находиться в другом удаленном файле
так как у вас есть текстовый скрипт, который соответствует чему-либо в скрипте защиты ссылок
попробуй это
on @*:text:*:#:linkpost $1-
on @*:action:*:#:linkpost $1-
on @*:notice:*:#:linkpost $1-
alias -l linkpost {
if (!$hfind(permit,$nick)) {
var %purge /^!(link\so(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|\Qimgur\E)\.com/
var %link /(?<=^|\s)((?>\S{3,8}:\/\/|w{3}\56)\S+)|\56( $+ %domain $+ )\b/iS
if ($findtok(%chanon1,#,1,32)) && ($nick(#,$nick,vr)) && ($regex($1-,%link)) && (!$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)) && ($regml(1) = permit) && ($nick isop #) && ($$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) && ($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 $&
$+($chr(2),#,$chr(2)) !
}
elseif (($regml(1) = link off) && ($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 . $&
!
}
}
}