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

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

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


Вы здесь » EpicNet.Ru - Форум IRC Чата » CREATE NEW SCRIPT - Создать новый mIRC скрипт » Скрипт авто приветствия и ответа на определенные слова пользователей


Скрипт авто приветствия и ответа на определенные слова пользователей

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

1

Здравствуйте уважаемые спецы и профи! У меня есть mirc бот, который постоянно висит в чате на нескольких каналах. Я бы хотел, чтобы он умел приветствовать всех входящих на каналы пользователей. А если кто то с кем то начинает разговаривать на канале, то чтобы бот периодически с перерывами выдавал реплики реагируя на определенные слова от участников чата.

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

Пожалуйста, любая помощь с вашей стороны будет мне полезна. Кто сможет помочь?

[think=http://www.kolobok.us/smiles/big_standart/help.gif]SOS[/think]

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

Оптимисты учат — Английский, пессимисты — Китайский. А реалисты отдают предпочтение автомату Калашникова © Сталкер

2

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

Синтаксис:  [c=blue]on ‹level›:JOIN:<#[,#channel]>:{ commands }[/c]
Пример:      [c=#333]on *:JOIN:#:{ msg $chan $nick приветствую вас на канале $chan }[/c]

Подробнее здесь: https://en.wikichip.org/wiki/mirc/on_events/on_join


Я создал для вас небольшой скрипт для автоматического приветствия всех входящих на каналы пользователей. Скрипт был протестирован на mIRC v7.63.

В алиасе "ag_data" находятся переменные, значения которых вы можете изменить на собственные значения для правильной работы скрипта:

  • %ag_path = здесь хранится путь к файлу, в котором должен быть список ваших текстовых приветствий, перечисленных в столбик, для случайного выбора Ботом.

  • %ag_time = здесь хранится время задержки в секундах, в течении которого Бот должен игнорировать входящих на канал пользователей, для которых уже было выполнено приветствие.

Если по какой то причине файл со списком приветствия будет отсутствовать по указанному пути, то Бот будет приветствовать всех одной дежурной фразой "Hello".

[indent=0.8,0.5]
Для установки откройте редактор скриптов вашего клиента при помощи комбинации клавиш "ALT+R" и сохраните этот код в новый файл "File/New" под названием "AutoGreet.mrc":

Код:
;##################################################
;#  Название: Auto Greet v1.0
;#  Автор: Epic (http://epicnet.ru, irc.epicnet.ru:6667 #Code)
;#  Описание: Автоматическое приветствие новых пользователей присоединившихся к каналу.
;##################################################

on *:JOIN:#:{
  ag_data | if ($me != $nick) { ag_msg $nick $chan $gettok($address($nick,2),2,64) }
}
alias -l ag_data {
  %ag_path = scripts\AutoGreet\greet.txt
  %ag_time = 300
}
alias -l ag_msg {
  if (!$hget(ag,$+($1,-,$2))) || (!$hget(ag,$+($3,-,$2))) {
    if ($exists(%ag_path)) { msg $2 $1 $read(%ag_path) } | else { msg $2 $1 Hello }
    .hadd -mz ag $+($1,-,$2) %ag_time | .hadd -mz ag $+($3,-,$2) %ag_time
  }
}
Подпись автора

[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

Спасибо большое. Все проверил, и это на удивление сработало!   http://www.kolobok.us/smiles/icq/good.gif
А как теперь добавить к этому скрипту, чтобы бот периодически писал какие-нибудь смешные реплики, реагируя на определенные слова пользователей?

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

Оптимисты учат — Английский, пессимисты — Китайский. А реалисты отдают предпочтение автомату Калашникова © Сталкер

4

Epic, could you improve your script or write a similar one so that it can greet different nicknames with different replicas depending on their status on the channel?

Пост написан 23.08.2021 01:23

5

#p1198,William написал(а):

Epic, could you improve your script or write a similar one so that it can greet different nicknames with different replicas depending on their status on the channel?

Ок. Я внёс необходимые изменения в код для обновления и реализации вашей идеи.

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

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

on !*:JOIN:#: if (!$checkdelay($nick,$chan)) $+(.timerDT,$nick) 1 $ag_delay_time ag_msg $nick $chan

alias -l ag_msg {
  if ($nick($2,$1,$chr(126))) message $1 $2 $ag_path_greet_qop
  elseif ($nick($2,$1,$chr(38))) message $1 $2 $ag_path_greet_sop
  elseif ($nick($2,$1,$chr(64))) message $1 $2 $ag_path_greet_aop
  elseif ($nick($2,$1,$chr(37))) message $1 $2 $ag_path_greet_hop
  elseif ($nick($2,$1,$chr(43))) message $1 $2 $ag_path_greet_vop
  else message $1 $2 $ag_path_greet_user
  .hadd -mz ag $+($1,-,$2) $ag_stop_repeat | .hadd -mz ag $+($addr($1),-,$2) $ag_stop_repeat
}
alias -l message { msg $2 $1 $iif($exists($3),$read($3,nt),Hello) }
alias -l addr { return $gettok($address($1,2),2,64) }
alias -l checkdelay { if ($hget(ag,$+($1,-,$2))) || ($hget(ag,$+($addr($1),-,$2))) { return $true } }


alias -l ag_path_greet_qop { return scripts\AutoGreet\greet_qop.txt }
alias -l ag_path_greet_sop { return scripts\AutoGreet\greet_sop.txt }
alias -l ag_path_greet_aop { return scripts\AutoGreet\greet_aop.txt }
alias -l ag_path_greet_hop { return scripts\AutoGreet\greet_hop.txt }
alias -l ag_path_greet_vop { return scripts\AutoGreet\greet_vop.txt }
alias -l ag_path_greet_user { return scripts\AutoGreet\greet_user.txt }
alias -l ag_stop_repeat { return 300 }
alias -l ag_delay_time { return 5 }

[indent=0.8,0.5]
Вы можете самостоятельно настроить необходимые параметры для правильной работы скрипта с помощью алиасов, в которых можно изменить возвращаемые данные:

  • ag_path_greet_qop - возвращает путь к файлу со списком приветствий только для пользователей со статусом "QOP", префикс "~".

  • ag_path_greet_sop - возвращает путь к файлу со списком приветствий только для пользователей со статусом "SOP", префикс "&".

  • ag_path_greet_aop - возвращает путь к файлу со списком приветствий только для пользователей со статусом "AOP", префикс "@".

  • ag_path_greet_hop - возвращает путь к файлу со списком приветствий только для пользователей со статусом "HOP", префикс "%".

  • ag_path_greet_vop - возвращает путь к файлу со списком приветствий только для пользователей со статусом "VOP", префикс "+".

  • ag_path_greet_user - возвращает путь к файлу со списком приветствий для всех пользователей, которые не имеют никакого статуса канала.

  • ag_stop_repeat - возвращает время в секундах, до истечении которого пользователь не будет получать повторное приветствие.

  • ag_delay_time - возвращает время в секундах для задержки приветствия, чтобы дать пользователю время для получения статуса канала.

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

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

6

Улучшение/оптимизация кода скрипта:

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

on !*:JOIN:#: if (!$checkdelay($nick,$chan)) $+(.timerDT,$nick) 1 $ag_delay_time ag_msg $nick $chan

alias -l ag_msg {
  var %pn $mid($remove($nick($2,$1).pnick,$1),1,1), %pr $replace(%pn,!,iop,~,qop,&,sop,@,aop,%,hop,+,vop)
  message $1 $2 $ag_path_greet($iif(%pn,%pr,user))
  .hadd -mz ag $+($1,-,$2) $ag_stop_repeat | .hadd -mz ag $+($addr($1),-,$2) $ag_stop_repeat
}
alias -l message { msg $2 $1 $iif($exists($3),$read($3,nt),Hello) }
alias -l addr { return $gettok($address($1,2),2,64) }
alias -l checkdelay { if ($hget(ag,$+($1,-,$2))) || ($hget(ag,$+($addr($1),-,$2))) { return $true } }


alias -l ag_path_greet { return $+(scripts\AutoGreet\greet_,$1,.txt) }
alias -l ag_stop_repeat { return 300 }
alias -l ag_delay_time { return 3 }

[indent=0.8,0.5]
Примечание: Вы по-прежнему должны создать и использовать в корневой папке скрипта "scripts\AutoGreet\" 6 файлов: "greet_qop.txt", "greet_sop.txt", "greet_aop.txt", "greet_hop.txt", "greet_vop.txt", "greet_user.txt", с соответствующими списками приветствий, в зависимости от статуса пользователя.

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

[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 Чата » CREATE NEW SCRIPT - Создать новый mIRC скрипт » Скрипт авто приветствия и ответа на определенные слова пользователей