Мониторинг сообщений на общем канале.

Требуется такой скриптик. Я сижу, например, в конференции, где много людей. Необходимо, чтобы сообщения какого-то одного пользователя дублировались мне в приват.
Я чего-то потыркался, маны по tcl почитал. Язык понятный. Мне не понятно как все это организовать именно в ткаббере.

Как в кофиге это все прописать.

Спасибо заранее за любую помощь.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: Мониторинг сообщений на общем канале.

На верхнем уровне Config.tcl:

set carbon_copied {
  tkabber@conference.jabber.ru/bigote

  talks@conference.jabber.ru/missenka

  linux-talks@conference.jabber.ru/HAL9000
  linux-talks@conference.jabber.ru/Monstreek
  linux-talks@conference.jabber.ru/Fixer

  miranda-im@conference.jabber.ru/mlu
}

proc muc_cc_copy {xlib from id type is_subject subject body err thread priority x} {
  variable carbon_copied

  if {$type eq "groupchat" && !$is_subject && [lcontain $carbon_copied $from]} {
    ::client:message $xlib $from chat $x -body $body
  }
}

hook::add process_message_hook muc_cc_copy

proc muc_cc_trace_nickname_change {xlib group nick new_nick} {
  variable carbon_copied

  if {[lcontain $carbon_copied $group/$nick]} {
    lappend carbon_copied $group/$new_nick
  }
}

hook::add room_nickname_changed_hook muc_cc_trace_nickname_change

Смена отслеживаемых ников обрабатывается очень примитивно: новый ник просто добавляется в список отслеживаемых. Если интересно сделать более понтовое слежение, изучай код plugins/chat/muc_ignore.tcl, но этого подхода должно быть достаточно для большинства случаев.

Премного благодарен!

Премного благодарен!

Поспешил немного. Выдает

Поспешил немного.
Выдает ошибку.
http://img.lumiro.net/images/e72690527e25372e9affd804b743cc09.jpg

То, что kostix предложил,

То, что kostix предложил, будет работать только на версии из SVN.

Re: Поспешил немного. Выдает

Для версий <= 0.11.1 строчку

::client:message $xlib $from chat $x -body $body

надо заменить на

::client:message $connid $from $id chat \
  $is_subject $subject $body $err $thread $priority $x

(можно в одну строку, без "\").

Версия у меня 0.11.1 под

Версия у меня 0.11.1 под винду.
И все равно выдает ошибку. немного другую правда

http://img.lumiro.net/images/ac69661daaf1ef4340c076200f8621d3.jpg

Re: Версия у меня 0.11.1 под

Потому что в определении процедуры muc_cc_copy надо было также переименовать первый параметр с xlib на connid. Или — наоборот — оставить имя xlib у переменной, из которой берётся значение первого аргумента вызова ::client:message.

Короче, должно получиться

proc muc_cc_copy {connid from id type is_subject subject body err thread priority x} {
  variable carbon_copied

  if {$type eq "groupchat" && !$is_subject && [lcontain $carbon_copied $from]} {
    ::client:message $connid $from $id chat \
      $is_subject $subject $body $err $thread $priority $x
  }
}

Черт, действительно, не

Черт, действительно, не подумал.
Все прекрасно, но есть еще кое что :-)

Вообще никак не реагирует скрипт, если я хочу его использовать для ирц комнаты.
Например, ragnarokonline%irc.ru@irc.mytlt.ru/Speller

Процент в названии мешает? Можно ли это побороть?

Re: Черт, действительно, не

Проверил — работает с

set carbon_copied {
  {ragnarokonline%irc.ru@irc.007spb.ru/[RO]МАГ_Простак}
}

Гейт на irc.007spb.ru — обычный mod_irc от ejabberd 2.0.3 (на irc.mytlt.ru меня просто не пустило по превышению лимита, но там, судя version info сервера, примерно то же самое работает).

Я счастлив. Дай вам бог

Я счастлив. Дай вам бог здоровья ;-)

Syndicate content