/usr/share/weechat/ruby/minbif_typing_notice.rb is in weechat-scripts 20111030-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | # This script is inspired by "im_typing_notice" for irssi.
# It creates a new bar item displaying when contacts are typing on supported protocol in minbif
# It sends a notice to your contacts when you're typing a message.
#
# Author: CissWit cisswit at 6-8 dot fr
# Version 1.0.1
#
# Changelog :
#
# * 1.0.1
# Ignore the user "request" (no need to tell it we are typing)
#
# * 1.0
# Original version
#
# Licence GPL3
$h_typing = Hash.new
$h_sending = Hash.new
def weechat_init
Weechat.register(
"minbif_typing_notice",
"CissWit",
"1.0.1",
"GPL3",
"For minbif - displays when someone is typing a message to you, and notice them when you do.",
"",
""
)
Weechat.bar_item_new("typing_notice", "draw_typing", "")
Weechat.hook_modifier("irc_in_privmsg", "modifier_ctcp", "")
Weechat.hook_signal("input_text_changed", "input_changed", "")
if Weechat.config_is_set_plugin("minbif_server") == 0
Weechat.config_set_plugin("minbif_server", "minbif")
end
Weechat.print("", "typing_notice: minbif typing notice")
Weechat.print("", "typing_notice: Put [typing_notice] in your status bar (or the one you prefer) to show when contacts are typing message to you.")
return Weechat::WEECHAT_RC_OK
end
def input_changed(data,signal,type_data)
buffer = Weechat.current_buffer
buffer_name = Weechat.buffer_get_string buffer, "name"
if buffer_name =~ /^#{Weechat.config_get_plugin("minbif_server")}\.(.*)/
nick = $1
if nick == "request"
return Weechat::WEECHAT_RC_OK
end
buffer_text = Weechat.buffer_get_string(buffer,"input")
if(buffer_text == "" or buffer_text =~ /^\//)
if $h_sending.key?(buffer)
Weechat.command(buffer,"/mute all ctcp #{nick} TYPING 0")
Weechat.unhook($h_sending[buffer]["timer"])
$h_sending.delete(buffer)
end
return Weechat::WEECHAT_RC_OK
end
return Weechat::WEECHAT_RC_OK unless !$h_sending.key?(buffer)
Weechat.command(buffer,"/mute -all ctcp #{nick} TYPING 1")
if $h_sending.key?(buffer)
Weechat.unhook($h_sending[buffer]["timer"])
else
$h_sending[buffer] = Hash.new
end
$h_sending[buffer]["timer"] = Weechat.hook_timer(7000,0,1,"sending_timeout",buffer)
$h_sending[buffer]["time"] = Time.new
end
return Weechat::WEECHAT_RC_OK
end
def sending_timeout(buffer,n)
if $h_sending.key?(buffer)
buffer_name = Weechat.buffer_get_string buffer, "name"
if buffer_name =~ /^#{Weechat.config_get_plugin("minbif_server")}\.(.*)/
Weechat.command(buffer,"/mute -all ctcp #{$1} TYPING 0")
Weechat.unhook($h_sending[buffer]["timer"])
$h_sending.delete(buffer)
end
end
return Weechat::WEECHAT_RC_OK
end
def draw_typing(osefa,osefb,osefc)
buffer = Weechat.current_buffer
if $h_typing.key?(buffer)
return "TYPING"
end
return ""
end
def typing_timeout(buffer,n)
if $h_typing.key?(buffer)
Weechat.unhook($h_typing[buffer])
$h_typing.delete(buffer)
end
Weechat.bar_item_update("typing_notice")
end
def modifier_ctcp(data, modifier, modifier_data, string)
if string =~ /:([^!]*)!([^\s]*)\sPRIVMSG\s([^\s]*)\s:\01TYPING\s([0-9])\01/
buffer = Weechat.buffer_search("irc", modifier_data + "." + $1)
if $h_typing.key?(buffer)
Weechat.unhook($h_typing[buffer])
end
if $4 == "1"
$h_typing[buffer] = Weechat.hook_timer(7000,0,1,"typing_timeout",buffer)
elsif $4 == "0"
if $h_typing.key?(buffer)
$h_typing.delete(buffer)
end
elsif $4 == "2"
Weechat.print("","- #{$4} - #{$1} - #{buffer} - is typing")
end
Weechat.bar_item_update("typing_notice")
return ""
end
return string
end
|