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

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

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



Kick all nicks using banned IP

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

1

I have a question pls. How to kick Nickname when i banned IP ?

Example:

When i type this command in channel:  !ban 10.20.30.40
Then Bot kick ALL Nicknames using that IP address.

[indent=0.8,0.5]
Please help me create such a script.

Thanks alots.

2

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

How to kick Nickname when i banned IP ?
When i type this command in channel:  !ban 10.20.30.40
Then Bot kick ALL Nicknames using that IP address.

Я создал небольшой скрипт для Бота, который должен делать то, что вы просите.

Синтаксис команды:  !ban <host/ip>

После того как вы напишите команду на канале, Бот установит "Ban" на указанный хост, а также выполнит "Kick" для всех присутствующих ников пользователей, чей "Host/IP" совпадает с указанным адресом в команде.

Для ограничения прав доступа вы должны заполнить файл "admins.txt", указав в столбик все ники пользователей, которым разрешено использовать эту команду.
Примечание: Все файлы, с которыми работает скрипт должны находиться в той же папке, где находится сам скрипт.

[indent=0.8,0.5]
Итак, вы можете попробовать использовать этот код скрипта:

Код:
on @*:TEXT:!ban*:#:{
  if (!$read($file_admins,ntw,$nick)) { return }
  if (!$2) { .notice $nick Syntax:12 !ban <host/ip> | return }
  mode $chan +b $+(*!*@,$2) | .enable #kicknicks | who $chan $+($chr(37),cn) $2
}
alias -l file_admins { return $scriptdir $+ admins.txt }
alias -l kick_reason { return You have been banned! }

#kicknicks off
raw 354:*: kick $2 $3 $kick_reason | haltdef
raw 315:*: .disable #kicknicks | haltdef
#kicknicks end

Обязательно оставьте свои отзывы и комментарии по результатам тестирования данного скрипта.

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

[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 for your quick answer, my friend.

Here is my real code i need help:

Код:
alias -l txt17 { return $mircdir $+ botadmin.txt }
ON @*:TEXT:*:#: {
  tokenize 32 $strip($1-)
      if ($1 == ~adminbotdel) || ($1 == .adminbotdel) || ($1 == !adminbotdel) || ($1 == adminbotdel) {
      var %host $ial($nick).host
      if (!$read(botadmin.txt,ntw,%host)) { .notice $nick Access denied. Only Bot Admin can use this command! | return }
      if (!$2) { .notice $nick SYNTAX: ~adminbotdel/.adminbotdel/!adminbotdel Ip/hostmask Example: ~adminbotdel 10.22.33.44 or ~adminbotdel Nick.users.undernet.org | return }
      var %r = $read($txt17,nw,* $+ $2- $+ *)
      var %rn = $readn
      if (!%r) || (!%rn) { .notice $nick Sorry, Ip/host $+  $2-  $+ does NOT exists on the list of $txt17 database. | return }
      if (%r) && (%rn) { write -dl $+ %rn $qt($txt17) | .ban -ku10800 $chan $ialchan($1,#,1).nick 2 4Sorry, You are not permitted to join #botadmins anymore }
      .notice $nick Deleted $+  $2-  $+ from 1 line on the list of $txt17 successfull.
    }
}

When I delete a user's ip/host in any channel via MyBot by command:  ~adminbotdel <ip/host> , Example:  !adminbotdel 10.20.30.40

I want code do this:

1. Bot will deleted ip/host from file "botadmin.txt". (IT WORKS OK)
2. Bot will kick and ban all the Nicknames using that IP-address on channel. (DOES NOT WORK)

Help me solve problem on number 2 above.

Thanks and hope receive help soon!

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

4

Ок. Я изменил ваш код с учётом описанной вами просьбы, чтобы он делал то, что вы просите.

К тому же, как я понимаю скрипт должен удалять по команде только пользователей из специального списка с IP/Хост адресами, а не самих администраторов, которые имеют доступ управления ботом, иначе в этом нет смысла, т.к. в этом случае любой администратор бота сможет удалить другого администратора бота из общего списка, после чего выполнится "Ban+Kick". Поэтому было бы логичнее переименовать команду "adminbotdel" на "userbotdel". Если я неправильно понимаю идею и логику вашего скрипта, то объясните подробнее.

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

Код:
on @*:TEXT:*:#:{
  tokenize 32 $strip($1-)
  if ($com_prefixes($1,adminbotdel,~.!)) {
    var %host $ial($nick).host, %file_botadmins $read($file_botadmins,ntw,%host)
    if (!%file_botadmins) { .notice $nick Access denied. Only Bot Admin can use this command! | return }
    if (!$2) { .notice $nick Syntax: 12~adminbotdel/.adminbotdel/!adminbotdel <ip/host>. Example: 12~adminbotdel 10.20.30.40 or 12~adminbotdel Nick.users.undernet.org | return }
    var %file_botusers $read($file_botusers,ntw,$2)), %line $readn
    if (!%file_botusers) { .notice $nick Sorry, ip/host $+(",,$2,,") does NOT exists on the list of $qt($file_botusers) database. | return }
    else { 
      write -dl $+ %line $qt($file_botusers) | ban $+(-u,$ban_timer) $chan $2 2 | .enable #kicknicks | who $chan $+($chr(37),cn) $2
      .notice $nick Deleted $+(",04,$2,,") from $+(04,%line,) line on the list of $qt($file_botusers) successfull.
    }
  }
}
alias -l file_botadmins { return $scriptdir $+ botadmins.txt }
alias -l file_botusers { return $scriptdir $+ botusers.txt }
alias -l ban_timer { return $rand(3600,10800) }
alias -l kick_reason { return 04You are not permitted to join $1 anymore! }
alias -l com_prefixes { if ($1 == $2) || ($2 isin $1 && $left($1,1) isin $3) { return $true } }

#kicknicks off
raw 354:*: kick $2 $3 $kick_reason($2) | haltdef
raw 315:*: .disable #kicknicks | haltdef
#kicknicks end

Описание настроек:

  • Алиас "file_botadmins" возвращает путь к файлу "botadmins.txt", который должен содержать список IP/Хостов пользователей, перечисленных в столбик, которые имеют право доступа для использования команды "adminbotdel".

  • Алиас "file_botusers" возвращает путь к файлу "botusers.txt", который может содержать список IP/Хостов пользователей, перечисленных в столбик, которые имеют некие права на канале, и о которых должен знать Бот для обеспечения контроля безопасности. Например Бот сможет устанавливать для всех пользователей этого списка право голоса "Voice" (+v) на канале, когда на нём установлен режим модерации (+m). Вы можете реализовать это самостоятельно и дополнить весь необходимый вам функционал на своё усмотрение.

  • Алиас "ban_timer" возвращает случайное (рандомное) числовое значение в секундах для установки времени таймера, по истечению которого Бан должен быть снят. Вы можете изменить это значение на постоянное целое число, которое измеряется в секундах.

  • Алиас "kick_reason" возвращает текстовое сообщение для установки причины Кика пользователя на канале.

  • Алиас "com_prefixes" делает проверку, какие префиксы - из передаваемых в параметрах символов "~.!" могут использоваться вместе с командой "adminbotdel" и возвращает "$true", если используется один из этих символов или если ничего не используется в качестве префикса команды.

Примечание: Все файлы, с которыми работает скрипт должны находиться в той же папке, где находится сам скрипт.

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

[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

In my CONTROL BOT code, there are about 40-50 commands in ONE file, structure like this:

Код:
on @*:TEXT:*:#:{
  tokenize 32 $strip($1-)
  if ($1 == COMMAND ADD) {
    .....do command 1 here.....
  }
  if ($1 == COMMAND DEL) {
    .....do command 2 here.....
  }
  if ($1 == COMMAND FIND) {
    .....do command 3 here.....
  }
  if ($1 == COMMAND LIST) {
    .....do command 4 here.....
  }
  .....etc.....
}

I like the way you wrote your code very much!!!

Your code is a part of my fullcode, and I can use your code above to rewrite all my codes snippets. Thanks for your help, Epic!

Отредактировано Robert (27.10.2023 10:14)