Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

10 455 Posts in 5 830 Topics- by 1 216 Members - Latest Member: santini862

19 October 2019, 19:01
Select Language English | Russian ru | German
Main PageIRC Client KVIrc forumRussian talksСкриптингВопросы по работе отдельных функций и командПерехват сообщений, содержащих мой ник
Pages: [1]
Print
Author Topic: Перехват сообщений, содержащих мой ник  (Read 31991 times)
0 Members and 1 Guest are viewing this topic.
anisim
Новичок
*

Репутация: 0
Posts: 21


View Profile
« on: 6 November 2007, 08:45 »

Как перехватывать сообщения других где иммется ваш ник? напр поставвить автоответ на слапы...
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #1 on: 6 November 2007, 10:29 »

Как перехватывать сообщения других где иммется ваш ник? напр поставвить автоответ на слапы...
Code:
event(OnChannelMessage,antimat)
{
   if($str.find($3, $me) > -1)
   {
      # реагируем на ник в сообщении
      say $0", ты посмел меня потревожить? Знай смерд, мне не до тебя!"
   }
}
$3 - это текст сообщения
$0 - это ник от кого получено сообщение
поскольку обращаясь не посредственно к тебе, люди обычно ставят твой ник в начале сообщения, то проверку можно изменить. чтобы не реагировать на сообщения когда тебя просто упоминают в тексте.
например: if($str.find($3, $me) = 0)
Проверять можно не только наличие ника в сообщении, но и каких то шаблонов характерных для слапа
Logged

anisim
Новичок
*

Репутация: 0
Posts: 21


View Profile
« Reply #2 on: 6 November 2007, 16:41 »

(OnChannelMessage,antimat)

а как сообытие это сделать штобы одной кнопочкой (напр "ctrl+a") включать/выключать?
Logged
Maximusya
Глобальный модератор
*****

Репутация: 49
Gender: Male
Posts: 343



View Profile
« Reply #3 on: 6 November 2007, 20:00 »

Есть событие OnHighlight
Оно возникает, если включена функция подсветки (по умолчанию подсвечивается ваш ник, но есть диалог настроек, в котором можно внести в список подсвечиваемых слов и другие слова - я, например, внес туда разные формы написания своего ника, на разных языках и тп.)
По параметрам, передаваемым в это с событие - читай /help onhighlight))
Logged
anisim
Новичок
*

Репутация: 0
Posts: 21


View Profile
« Reply #4 on: 7 November 2007, 08:21 »

нет я вот поставил на сообщения типа на мой ник. Но он срабатывает при каждом обращении на меня
[13:09:46] <+АНЮ> An6Ism ~»как дела?
[13:09:46] An6Ism АНЮ, шо ты там меня трогаешь?
, хочу сделать (напр "ctrl+a")чтобы выключать и включать эту функцию, иногда мне та надо такие сообщения. хотел чтобы если в сообщении мой ник стоит в начале текста то не срабатывала, но есть моменты когда у кого то скрипты сделаны иначе, например:
[13:09:46] <+АНЮ> >> An6Ism << ~»как дела?
[13:09:46] An6Ism АНЮ, шо ты там меня трогаешь?
в таких случаях опять жэ срабатывает
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #5 on: 7 November 2007, 09:10 »

добавь флаг в виде глобальной переменной и обрабатывай сообщений только если он включен.
Code:
event(OnChannelMessage,antimat)
{
   if(%MyFlag == 1)
   {
     if($str.find($3, $me) > -1)
     {
        # реагируем на ник в сообщении
        say $0", ты посмел меня потревожить? Знай смерд, мне не до тебя!"
     }
   }
   else
   {
      # echo "автоответ выключен"
   }
}
и кнопку для включения/выключения. смотри на -k="ctrl+a", действие будет срабатывать по нажатию ctrl+a
Code:
action.create -t=generic -k="ctrl+a" ("MyAction1",$tr("My Action"),$tr("Put here a short description of your action"),"","")
{
if(%MyFlag == 1) %MyFlag = 0
else %MyFlag = 1
       
        # echo "MyFlag = "%MyFlag
}
еще все это можно привязать к $away (читай в справке) или даже подумать как можно ко всему этому прикрутить onMeAway и onMeBack
Logged

upyx
Новичок
*

Репутация: 13
Gender: Male
Posts: 43


Маленький, махнатый и умный.


View Profile
« Reply #6 on: 9 November 2007, 21:35 »

Code:
%MyFlag = $(!%MyFlag)
Cheesy
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #7 on: 9 November 2007, 22:24 »

дада, я именно это и имел ввиду Smiley
Logged

virtuoz
Новичок
*

Репутация: 0
Posts: 2


View Profile
« Reply #8 on: 15 November 2007, 23:17 »

простите, но нельзя ли на все это в собранном виде взглянуть, не могли бы как дополнение чтобы установить сделать  =) а то совершенно непонятно как эту кнопочку добавить, в скриптостроении совершенно ничего не понимаю Wink
при попытке выполнить выдает:
[23:52:13] [KVS] Ошибка при выполнении: найдена пустая строка там где ожидается непустая
[23:52:13] [KVS]   в контексте скрипта "kvirc::corecall(run)", Строка 1, около символа 1
« Last Edit: 16 November 2007, 00:51 by virtuoz » Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #9 on: 16 November 2007, 01:00 »

простите, но нельзя ли на все это в собранном виде взглянуть, не могли бы как дополнение чтобы установить сделать  =) а то совершенно непонятно как эту кнопочку добавить, в скриптостроении совершенно ничего не понимаю Wink
прочти тему "как устанавливать скрипты", пригодится. http://www.kvirc.ru/forum/topic,147.0
этот скрипт можно поставить по варианту 1 из той темы
event(OnChannelMessage,antimat) - это создаст реакцию на сообщения пользователей в канал, тут доступны несколько переменных
$0 = ник
$1 = имя пользователя
$2 = хост
$3 = сообщений
$4 = [target mode prefixes]

action.create -t=generic -k="ctrl+a" ("MyAction1",$tr("My Action"),$tr("Put here a short description of your action"),"","") - это создаст кнопку. тут мы управляем глобальной переменной, ориентируясь на которую, мы определяем стоит отвечать пользователю или нет. вместо глобольной переменой которую мы переключаем вручную, можно использовать функции, которые зависят , например, от состояния away и т.п.

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

ЗЫ: скрипт 100% выполняемый, скорее всего ты где то опечатался.
Logged

virtuoz
Новичок
*

Репутация: 0
Posts: 2


View Profile
« Reply #10 on: 16 November 2007, 01:13 »

про установку я первым делом прочитал, сам скрипт ставится, а вот кнопочка никак не создается, опечатки быть не может, поскольку копипастил просто, может это уже не в окошке теста сценариев надо делать? Smiley
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #11 on: 16 November 2007, 09:04 »

про установку я первым делом прочитал, сам скрипт ставится, а вот кнопочка никак не создается, опечатки быть не может, поскольку копипастил просто, может это уже не в окошке теста сценариев надо делать? Smiley
для кнопки там не указаны иконки. последние два параметра, проставь там какую нить цифру, первая это для маленькой иконки, вторая для большой.
action.create -t=generic -k="ctrl+a" ("MyAction1",$tr("My Action"),$tr("Put here a short description of your action"),"1","1")
после того как кнопка появится в редакторе действий можешь вытащить ее на любую панель, или вызывать по ctrl+A
Logged

anisim
Новичок
*

Репутация: 0
Posts: 21


View Profile
« Reply #12 on: 22 November 2007, 21:50 »

action.create -t=generic -k="ctrl+a" ("MyAction1",$tr("My Action"),$tr("Put here a short description of your action"),"1","1")
это создает действие, это я понял

а где тут он узнает что именно OnChannelMessage,antimat это событие должен включать\выключать?
Logged
runkoff
Постоялец
***

Репутация: 22
Gender: Male
Posts: 130


847905
View Profile WWW Email
« Reply #13 on: 23 November 2007, 00:12 »

а где тут он узнает что именно OnChannelMessage,antimat это событие должен включать\выключать?
тут не узнает, точнее имнно тут ему знать и не обязательно. тут мы изменяем значение глобальной переменной %MyFlag (значение глобальной переменной доступно в любом участке кода: в событиях, в действиях, в алиасах, в всплывающих меню).
и посмотри в обработчике события, что мы первым делом проверяем?
Logged

Azag ToT
Новичок
*

Репутация: 2
Posts: 9


View Profile
« Reply #14 on: 25 March 2009, 21:29 »

Вот мой вариант, активируемый алиасом. Сделан на основе скрипта из этой темы Smiley

Code:
if(%MyFlag == 1)  %MyFlag = 0
   else %MyFlag = 1
#=================================== 
if (%MyFlag == 1)
 {
  echo Автоответ включен
 }
  else
  {
   echo Автоответ выключен
  }
#===================================

event(OnChannelMessage,antislap)
 {
 if (%MyFlag == 1)
    {
       if($str.find($3, $me) > -1)
      {
         //# реагируем на ник в сообщении
         say $0", ты посмел(а) меня потревожить? А вот фиг тебе. Меня за компом нет."
      }
    }
 }
Logged
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic