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

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

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



Auto set channel limit (+l)

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

1

Does anyone help me to write a code "Auto Set Channel limit" (+l) for me:

1) Join: if there are 4 nicknames joins, then Bot calc all nicknames in that channel and set mode plus +5;
2) Quit: if there are 4 nicknames quits, then Bot calc all nicknames in that channel and plus +5;
3) Part: if there are 4 parts then Bot calc all nickname in channel then set mode +5; 
4) Kick: if there are 4 kicks in channel then Bot calc all nicknames in channel then set mode +5;

- use timer 1 15 for JOIN and QUIT; timer 1 3 for PART and KICK
- and set mode +l for all channels Bot have access @

Thanks all for help and hop receive the code snippet soon!!!

2

For example:

1) Join: if there are 4 nicknames joins, then Bot calc all nicknames in that channel and set mode plus +5:
+ There are currently 30 Nicknames in #test and BotName set mode #test +l 30 before
+ Now 4 nicknames joins:
[10:01:50] * Nick1 (nick1@host1) has joins #test
[10:12:32] * Nick2 (nick2@host2) has joins #test
[10:18:41] * Nick3 (nick2@host3) has joins #test
[10:25:19] * Nick4 (nick4@host4) has joins #test
Then after 15 seconds, BotName set mode +l 30 +5 = 39, like this rusult:
[10:25:34] * BotName sets mode: +l 39

2) Quit: if there are 4 nicknames quits, then Bot calc all nicknames in that channel and plus +5;
[10:32:50] * Nick1 (nick1@host1) has quits.
[10:37:32] * Nick2 (nick2@host2) has quits
[10:50:41] * Nick3 (nick2@host3) has quits
[10:58:19] * Nick4 (nick4@host4) has quits
Then after 15 seconds, BotName set mode +l 39 - 4 +5 = 40:
[10:58:34] * BotName sets mode: +l 40

3) + 4) Similar for Part and Kick event, but BotName sets mode +l after 3 seconds when 4 nicknames has parted or kicked.

Thanks for regard!

Отредактировано Robert (09.03.2022 15:55)

3

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

Does anyone help me to write a code "Auto Set Limit channel" (+l) for me

Я кое что создал для вас.

Попробуйте использовать этот код скрипта:

Код:
#####################################################################
#  Название: Auto Limit Users v1.0
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: Автоматически устанавливает режим лимита (+l) для максимально допустимого числа пользователей на канале.
#####################################################################

alias -l alu_set {
  %alu_max_join = 1
  %alu_max_part = 1
  %alu_max_kick = 1
  %alu_max_quit = 1
  %alu_timer_join = 15
  %alu_timer_part = 3
  %alu_timer_kick = 3
  %alu_timer_quit = 15
  %alu_limit_join = 3
  %alu_limit_part = 3
  %alu_limit_kick = 3
  %alu_limit_quit = 3
}
---------------------------------------------------------------------
on *:JOIN:#: alu join
on *:PART:#: alu part
on *:KICK:#: alu kick
on *:QUIT: alu quit
alias -l alu {
  alu_set
  if ($1 == join) {
    .hinc -m alu_join $chan 1 | if ($hget(alu_join,$chan) >= %alu_max_join) {
      var %alu_com %alu_timer_join mode $chan +l $calc($nick($chan,0) + %alu_limit_join) | .hdel -sw alu_join $chan
    }
  }
  if ($1 == part) {
    .hinc -m alu_part $chan 1 | if ($hget(alu_part,$chan) >= %alu_max_part) {
      var %alu_com %alu_timer_part mode $chan +l $calc($nick($chan,0) + %alu_limit_part -1) | .hdel -sw alu_part $chan
    }
  }
  if ($1 == kick) {
    .hinc -m alu_kick $chan 1 | if ($hget(alu_kick,$chan) >= %alu_max_kick) {
      var %alu_com %alu_timer_kick mode $chan +l $calc($nick($chan,0) + %alu_limit_kick -1) | .hdel -sw alu_kick $chan
    }
  }
  if ($1 == quit) {
    var %i 1 | while (%i <= $comchan($nick,0)) {
      var %chan $comchan($nick,%i) | .hinc -m alu_quit %chan 1 | if ($hget(alu_quit,%chan) >= %alu_max_quit) {
        var %alu_com %alu_timer_quit mode %chan +l $calc($nick(%chan,0) + %alu_limit_quit -1) | .hdel -sw alu_quit %chan
      } | inc %i
    }
  }
  .timerALU 1 %alu_com
}

Все настройки производятся через алиас "alu_set":

%alu_max_* = здесь указано максимальное число пользователей инициировавших событие, при достижении которого будет активироваться таймер.
%alu_timer_* = здесь указано время таймера в секундах, которое будет установлено для задержки выполнения команды.
%alu_limit_* = здесь указано дополнительное число для лимита, которое должно быть прибавлено к общему числу пользователей на канале.

* Для разного события "join/part/kick/quit" своя переменная.

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

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

[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]

4

Thanks Epic for help, but there is an error like this:

[18:07:33] * Corbin (DVQ@24.249.BDE1.I29C) joins #davang
[18:07:33] * /timerALU: insufficient parameters (line 50, Auto Limit Channel-40.ini)

Line 50 is:  .timerALU 1 %alu_com

1) I want +5 not + 1 or +3

if 4 joins then Bot calc all users in per channel and + 5

5

Hey Epic. I changed it a bit and it worked just as I wanted. Thank you so much Epic !!!

Here is the new code:

Код:
alias -l alu_set {
  %alu_max_join = 4
  %alu_max_part = 4
  %alu_max_kick = 4
  %alu_max_quit = 4
;-----------------------
  %alu_timer_join = 15
  %alu_timer_part = 3
  %alu_timer_kick = 3
  %alu_timer_quit = 3
;-----------------------
  %alu_limit_join = 5
  %alu_limit_part = 5
  %alu_limit_kick = 5
  %alu_limit_quit = 5
}
on !*:JOIN:#: {
  if ($network !== DaVang) { return }
  .hinc -m alu_join $chan 1
  if ($hget(alu_join,$chan) >= %alu_max_join) {
    .timerlimit[JOIN_ $+ $chan $+ ] 1 %alu_timer_join mode $chan +l $calc($nick($chan,0) + %alu_limit_join) | .hdel -sw alu_join $chan
  }
}
on *:PART:#: {
  if ($network !== DaVang) { return }
  .hinc -m alu_part $chan 1
  if ($hget(alu_part,$chan) >= %alu_max_part) {
    .timerlimit[PART_ $+ $chan $+ ] 1 %alu_timer_part mode $chan +l $calc($nick($chan,0) + %alu_limit_part -1) | .hdel -sw alu_part $chan
  }
}
on *:KICK:#: {
  if ($network !== DaVang) { return }
  .hinc -m alu_kick $chan 1
  if ($hget(alu_kick,$chan) >= %alu_max_kick) {
    .timerlimit[KICK_ $+ $chan $+ ] 1 %alu_timer_kick mode $chan +l $calc($nick($chan,0) + %alu_limit_kick -1) | .hdel -sw alu_kick $chan
  }
}
on *:QUIT: {
  if ($network !== DaVang) { return }
  var %i 1
  while (%i <= $comchan($nick,0)) {
    var %chan $comchan($nick,%i)
    .hinc -m alu_quit %chan 1
    if ($hget(alu_quit,%chan) >= %alu_max_quit) {
      .timerlimit[QUIT_ $+ $chan $+ ] 1 %alu_timer_quit mode %chan +l $calc($nick(%chan,0) + %alu_limit_quit -1) | .hdel -sw alu_quit %chan
      inc %i
    }
  }
}

6

Robert, Да, именно это вам и нужно было сделать. Я специально сделал это регулируемым, отдельно для каждого события.
Поэтому вам достаточно было просто изменить все значения переменных в алиасе "alu_set" на нужные вам числа.

Кроме того я исправил некоторые ошибки в своём коде, которые были допущены ранее:

  • Теперь перед изменением режима лимита на каждом канале делается проверка на наличие префикса "@" оператора канала у вашего бота.

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

  • При событии "QUIT" будет изменён режим лимита на всех каналах, где было инициировано это событие с отключившемся от сети пользователем.

  • Добавлена новая переменная %alu_networks для настройки названий сетей (через запятую), в которых должен работать этот скрипт.

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

Код:
#####################################################################
#  Название: Auto Limit Users v1.1
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: Автоматически устанавливает режим лимита (+l) для максимально допустимого числа пользователей на канале.
#####################################################################

alias -l alu_set {
  %alu_max_join = 4
  %alu_max_part = 4
  %alu_max_kick = 4
  %alu_max_quit = 4
  ;----------------
  %alu_timer_join = 15
  %alu_timer_part = 3
  %alu_timer_kick = 3
  %alu_timer_quit = 3
  ;----------------
  %alu_limit_join = 5
  %alu_limit_part = 5
  %alu_limit_kick = 5
  %alu_limit_quit = 5
  ;----------------
  %alu_networks = EpicNet.Ru,DaVang
}
---------------------------------------------------------------------
on !*:JOIN:#: alu
on *:PART:#: alu
on *:KICK:#: alu
on *:QUIT: alu
alias -l alu {
  alu_set | if (!$istok(%alu_networks,$network,44)) { halt }
  if ($event == join) {
    .hinc -m alu_join $chan 1 | if ($hget(alu_join,$chan) >= %alu_max_join) {
      if ($me isop $chan) .timerALU_JOIN_ $+ $chan 1 %alu_timer_join mode $chan +l $calc($nick($chan,0) + %alu_limit_join) | .hdel -sw alu_join $chan
    }
  }
  if ($event == part) {
    .hinc -m alu_part $chan 1 | if ($hget(alu_part,$chan) >= %alu_max_part) {
      if ($me isop $chan) .timerALU_PART_ $+ $chan 1 %alu_timer_part mode $chan +l $calc($nick($chan,0) + %alu_limit_part -1) | .hdel -sw alu_part $chan
    }
  }
  if ($event == kick) {
    .hinc -m alu_kick $chan 1 | if ($hget(alu_kick,$chan) >= %alu_max_kick) {
      if ($me isop $chan) .timerALU_KICK_ $+ $chan 1 %alu_timer_kick mode $chan +l $calc($nick($chan,0) + %alu_limit_kick -1) | .hdel -sw alu_kick $chan
    }
  }
  if ($event == quit) {
    var %i 1 | while (%i <= $comchan($nick,0)) {
      var %chan $comchan($nick,%i) | .hinc -m alu_quit %chan 1 | if ($hget(alu_quit,%chan) >= %alu_max_quit) {
        if ($me isop %chan) .timerALU_QUIT_ $+ %chan 1 %alu_timer_quit mode %chan +l $calc($nick(%chan,0) + %alu_limit_quit -1) | .hdel -sw alu_quit %chan
      } | inc %i
    }
  }
}
---------------------------------------------------------------------

Для всех остальных пользователей, кто также захочет использовать этот скрипт в своей сети - вам необходимо будет в алиасе "alu_set" в переменной %alu_networks добавить (через запятую) название вашей сети, так как этот скрипт будет работать только в указанных сетях с этими названиями. Чтобы узнать название вашей сети введите команду: "//echo -a $network".

Отредактировано Epic (11.03.2022 22:22)

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

[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]

7

Thank you very much Epic. It's work perfect already now.
But now i want you fixed a bit that code like this:

1) on JOIN event: When Bot set mode +l for this event, then "hdel -sw alu_join $chan". Now, i want Bot hdel all:
+ .hdel -sw alu_part $chan
+ .hdel -sw alu_kick $chan
+ .hdel -sw alu_quit %chan

2) on PART event: When Bot set mode +l, then Bot "hdel -sw alu_part $chan". Now, i want Bot hdel all:
+ .hdel -sw alu_join $chan
+ .hdel -sw alu_kick $chan
+ .hdel -sw alu_quit %chan

3) on KICK event: When Bot set mode +l for this event, then Bot "hdel -sw alu_kick $chan". Now, i want Bot hdel all:
+ .hdel -sw alu_join $chan
+ .hdel -sw alu_part $chan
+ .hdel -sw alu_quit %chan

4) on QUIT event: When Bot set mode +l for this event, then Bot "hdel -sw alu_quit %chan". Now, i want Bot hdel all:
+ .hdel -sw alu_join $chan
+ .hdel -sw alu_part $chan
+ .hdel -sw alu_kick $chan

The reason w***want you to fix it like this is because Bot set mode +l too much and it looks very confusing.
When Bot set mode +l for all event JOIN, PART, KICK, QUIT, then hdel all.

I hope you understand what i means :P

Thanks for help, my friend Epic!

8

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

Now i want you fixed a bit that code like this: - When Bot set mode (+l) for all event JOIN, PART, KICK, QUIT, then hdel all.

Ок. Я сделал обновление скрипта, в которое внёс некоторые изменения и добавил панель управления в диалоговом окне, для удобного управления скриптом.
Теперь вам достаточно выбрать в контекстном меню пункт "Auto Limit Users", чтобы открыть панель управления и заполнить там все необходимые поля, или вы можете оставить их пустыми, чтобы использовать параметры по умолчанию.

[indent=0.8,0.5] https://i.ibb.co/g9pzwc2/Auto-Limit-Users.jpg

Попробуйте использовать эту новую версию скрипта:

Код:
#####################################################################
#  Название: Auto Limit Users v1.2
#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
#  Описание: Автоматически устанавливает режим лимита (+l) для максимально допустимого числа пользователей на канале.
#####################################################################

menu menubar,status,channel {
  Auto Limit Users: alu_dialog
}
alias -l alu_dialog { alu_default_set | if ($dialog(alu)) .dialog -x alu | .dialog -m alu alu }
dialog alu {
  title "Auto Limit Users"
  size -1 -1 300 272
  option pixels
  icon $mircexe,22
  ;---------------
  text "Only in this networks (separated by commas):", 1, 30 27 240 15
  edit %alu_networks, 2, 30 44 240 20, autohs
  box "Numeric parameters:", 3, 30 81 240 140
  text "Join Timer:", 4, 43 110 60 15, right
  edit %alu_timer_join, 5, 107 107 30 20, autohs, limit 3
  text "Part Timer:", 6, 43 135 60 15, right
  edit %alu_timer_part, 7, 107 132 30 20, autohs, limit 3
  text "Kick Timer:", 8, 43 160 60 15, right
  edit %alu_timer_kick, 9, 107 157 30 20, autohs, limit 3
  text "Quit Timer:", 10, 43 185 60 15, right
  edit %alu_timer_quit, 11, 107 182 30 20, autohs, limit 3
  text "Max Events:", 12, 155 110 60 15, right
  edit %alu_max_events, 13, 219 107 30 20, autohs, limit 3
  text "Plus Limit:", 14, 155 135 60 15, right
  edit %alu_plus_limit, 15, 219 132 30 20, autohs, limit 3
  button "Default", 99, 30 236 75 23, center flat
  button "OK", 100, 195 236 75 23, center flat default ok
}
on *:DIALOG:alu:edit:2: if ($len($did($did).text) > 0) %alu_networks = $did($did).text | else unset %alu_networks
on *:DIALOG:alu:edit:5: %alu_timer_join = $did($did).text
on *:DIALOG:alu:edit:7: %alu_timer_part = $did($did).text
on *:DIALOG:alu:edit:9: %alu_timer_kick = $did($did).text
on *:DIALOG:alu:edit:11: %alu_timer_quit = $did($did).text
on *:DIALOG:alu:edit:13: %alu_max_events = $did($did).text
on *:DIALOG:alu:edit:15: %alu_plus_limit = $did($did).text
on *:DIALOG:alu:sclick:99: unset %alu_* | alu_dialog
---------------------------------------------------------------------
alias -l alu_default_set {
  if (!%alu_timer_join) || (%alu_timer_join == $null) { %alu_timer_join = 10 }
  if (!%alu_timer_part) || (%alu_timer_part == $null) { %alu_timer_part = 5 }
  if (!%alu_timer_kick) || (%alu_timer_kick == $null) { %alu_timer_kick = 5 }
  if (!%alu_timer_quit) || (%alu_timer_quit == $null) { %alu_timer_quit = 5 }
  if (!%alu_max_events) || (%alu_max_events == $null) { %alu_max_events = 3 }
  if (!%alu_plus_limit) || (%alu_plus_limit == $null) { %alu_plus_limit = 5 }
}
---------------------------------------------------------------------
on !*:JOIN:#: alu
on *:PART:#: alu
on *:KICK:#: alu
on *:QUIT: alu
alias -l alu {
  alu_default_set | if (%alu_networks && !$istok(%alu_networks,$network,44)) { halt }
  if ($event == join) {
    .hinc -m $+(alu_,$chan) join 1 | if ($hget($+(alu_,$chan),join) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_join mode $chan +l $calc($nick($chan,0) + %alu_plus_limit) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == part) {
    .hinc -m $+(alu_,$chan) part 1 | if ($hget($+(alu_,$chan),part) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_part mode $chan +l $calc($nick($chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == kick) {
    .hinc -m $+(alu_,$chan) kick 1 | if ($hget($+(alu_,$chan),kick) >= %alu_max_events) {
      if ($me isop $chan) .timerALU_ $+ $chan 1 %alu_timer_kick mode $chan +l $calc($nick($chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,$chan) *
    }
  }
  if ($event == quit) {
    var %i 1 | while (%i <= $comchan($nick,0)) {
      var %chan $comchan($nick,%i) | .hinc -m $+(alu_,%chan) quit 1 | if ($hget($+(alu_,%chan),quit) >= %alu_max_events) {
        if ($me isop %chan) .timerALU_ $+ %chan 1 %alu_timer_quit mode %chan +l $calc($nick(%chan,0) + %alu_plus_limit -1) | .hdel -sw $+(alu_,%chan) *
      } | inc %i
    }
  }
}

Примечание: В этой версии скрипта все настройки производятся только через панель управления в диалоговом окне, поэтому больше нет необходимости что-то менять внутри кода.

Пожалуйста протестируйте этот скрипт и если у вас остались замечания или вы хотите что то изменить, то сообщите здесь об этом в новом комментарии.

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

[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]

9

Thank you for your quick reply to me, Epic !

You are really cool and the code you wrote for me runs very well, so far I have not found any errors, even though I have tested it for half a day.

on*:QUIT: alu <== this line should have a space after "on".

I will monitor the code for a few more days, if there are no errors, you can close this topic and then I can creat a new topic.

Thank you again and I wish you the best of health!

10

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

on*:QUIT: alu <== this line should have a space after "on".

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

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

[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]