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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » HELP SCRIPTS - Помощь по mIRC скриптам » Auto rejoin to get OP when on channel is 1 user


Auto rejoin to get OP when on channel is 1 user

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

1

Purpose i want this code is:

  • I used this code for my BOT.

  • I don't want any chatter to join my room (Bot Admin or User Bot can join only), so Bot will need OP (alway OP) to check and kick/ban nickname/ip/host is not on userbot.txt or adminbot.txt).

Here is my code, but not work exactly i means:

Код:
on !*:join:#botadmins,#userbots: { hadd -mu30 joiners $nick | .timercheckjoin_ $+ $chan 1 5 checkjoin $nick $chan }
;----------------------------------------------------------------------------------
on !*:PART:#botadmins,#userbots: {
  if ($hget(joiners,$nick)) { .timercheck 1 5 checkpart $nick $chan }
}
;----------------------------------------------------------------------------------
on *:quit: {
  if ($hget(joiners,$nick)) { .timercheck 1 5 checkquit $nick $chan }
}
;----------------------------------------------------------------------------------
alias -l checkjoin {
  if ($me isop $chan) { return }
  if ($me !isop $chan) {
    if ($nick($1,0) == 1) /hop $chan
  }
}
;----------------------------------------------------------------------------------
alias -l checkpart {
  if ($me isop $chan) { return }
  if ($me !isop $chan) {
    if ($nick($1,0) == 1) /hop $chan
  }
}
;---------------------------------------------------------------------------------
alias -l checkquit {
  if ($me isop $chan) { return }
  if ($me !isop $chan) {
    if ($nick($1,0) == 1) /hop $chan
  }
}

I WANT BOT DO THIS:

1. When my BOT already have OP (@) in #botadmin, and there are 1, 2,... another nicks have OP in #botadmin too. But when my BOT disconnected and reconnect, rejoin #botadmin and NO HAVE OP any more, because there are somes NICKS have OP already on this channel. My Bot will waiting for all Nicks disconnected/quit/part #botadmin then my Bot will rejoin to get OP (that's means if all another NICKS out, and there is only 1 my Bot, then do /HOP to GET OP).
2. NOTE: #botadmin there is not SERVICES, No CServices.

Can anyone help me to rewrite this code? Thanks all

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

2

Разве эти 2 канала (#botadmins #userbots) не имеют регистрации на сервисах в вашей IRC сети и не принадлежат вам?
Если вы являетесь (Founder) владельцем/основателем этих каналов, то вы можете обойтись без создания подобных скриптов, т.к. у вас должны быть все права для настройки каналов, чтобы пользователи не делали того, что вам не нравится.

... Давным-давно, в далёком прошлом, 15-20 лет тому назад, когда российские IRC сети ещё были очень популярны и активны, подобные действия назывались "захватом/кражей чужого канала". То есть, если это не ваш канал и он уже был кем-то зарегистрирован на сервисах, но вам очень нравится его название и вы хотите забрать его себе, то тогда некоторые "нехорошие" пользователи делали подобные манипуляции - дожидались момента, когда с канала уйдут все пользователи, и тогда при быстром перезаходе (rejoin) на канал можно было получить от сервисов "OP" - статус оператора @ (+o), чтобы перерегистрировать этот канал на свой ник и назначить нового (Founder) владельца канала.

https://i.ibb.co/DzR5Dsm/master-Yoda.jpg
Мастер Йода предаётся воспоминаниям

Это было возможно из-за несовершенства сервисов того времени и подобные манипуляции происходили как для захвата, так и для возврата собственного канала. Каналы постоянно переходили из рук в руки к разным противоборствующим друг с другом группам пользователей. К сожалению, в некоторых IRC сетях по прежнему присутствуют эти уязвимости, потому что администраторы (IRCops) не занимаются решением этой проблемы и давно не обновляли ПО для сервисных услуг, или если эти сервисы вовсе отсутствуют и их никто не включает, тогда IRCd автоматически выдаёт "OP" первому вошедшему на канал пользователю, при условии, что там больше никого нет.

В любом случае у меня это вызывает ностальгию и весёлые воспоминания об этих временах, поэтому мне было не трудно помочь вам с этим скриптом 

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

Код:
on *:JOIN:#botadmins,#userbots: .timerCHECKJOIN $+ $chan 1 5 count_chan_users $nick $chan
on !*:PART:#botadmins,#userbots: .timerCHECKPART $+ $chan 1 5 count_chan_users $nick $chan
on !*:QUIT:{
  var %mychans #botadmins,#userbots, %i $comchan($nick,0)
  while (%i) { var %c $comchan($nick,%i) | if ($istok(%mychans,%c,44)) .timerCHECKQUIT $+ %c 1 5 count_chan_users $nick %c | dec %i }
}
alias -l count_chan_users {
  if ($me !isop $2 && $nick($2,0) == 1) { if (!$hget(rejoin-stop,$2)) hop $2 } | if ($1 == $me) .hadd -mz rejoin-stop $2 10
}

Примечение: В IRC сетях, которые регулярно обновляют ПО, подобные манипуляции уже невозможны и тогда при заходе на пустой канал, который уже был кем-то зарегистрирован вы не сможете получить "OP" - статус оператора @, т.к. сработает защита сервисов. В этом случае используя этот скрипт вы рискуете постоянно перезаходить (rejoins) на этот канал в установленное таймером время, каждые 5 секунд, пока ваш ник не получит "OP", а он его не получит никогда. Чтобы остановить это действие я добавил задержку по времени в 10 секунд, прежде чем скрипт сможет повторно выполнить команду "/hop channel", когда это будет вызвано новым событием "JOIN" и при условии, что это был ваш ник.
Это находится в строке "8" этого кода:

if ($1 == $me) .hadd -mz rejoin-stop $2 10

[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

Thanks friend Epic. It's work perfect! 

4

Let's change line 8 a little:

From:
if ($me !isop $2 && $nick($2,0) == 1) { if (!$hget(rejoin-stop,$2)) hop $2 } | if ($1 == $me) .hadd -mz rejoin-stop $2 10

To:
if ($me !isop $2 && $nick($2,0) == 1) { if (!$hget(rejoin-stop,$2)) hop $2 } | if ($1 == $me) { .hadd -mz rejoin-stop $2 10 }

5

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

Let's change line 8 a little:
if ($me !isop $2 && $nick($2,0) == 1) { if (!$hget(rejoin-stop,$2)) hop $2 } | if ($1 == $me) { .hadd -mz rejoin-stop $2 10 }

В этом нет необходимости, т.к. если в условии указано только одно сравнение и после идёт только одна команда, то можно обойтись без фигурных скобок { }, чтобы не усложнять код.

Поэтому можно оставить как было:

if ($me !isop $2 && $nick($2,0) == 1) { if (!$hget(rejoin-stop,$2)) hop $2 } | if ($1 == $me) .hadd -mz rejoin-stop $2 10

[indent=0.8,0.5]
Также я рекомендую вам при копировании кода с форума делать это всегда только в оригинальном виде, когда страница отображается на русском языке, без использования онлайн переводчика. Так как веб-переводчики часто искажают синтаксис кода, заменяют одни символы на другие и удаляют важные отступы/пробелы, что ломает его и делает неработоспособным, и в этом случае при использовании такого искажённого кода могут возникать ошибки, приводящие к поломке, которая иногда даже может повлиять на стабильность функционирования mIRC.

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

[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 скриптам » Auto rejoin to get OP when on channel is 1 user