commit ad36d01bc88c33c30b37c8a6cbb462ae1001cd7e Author: Piotr Dobrowolski Date: Thu Feb 26 18:24:07 2015 +0100 Initial commit - gimbo aka. autoimplrator xDD diff --git a/gimbo.py b/gimbo.py new file mode 100644 index 0000000..3f2b593 --- /dev/null +++ b/gimbo.py @@ -0,0 +1,54 @@ +import weechat + +__author__ = "Piotr 'inf' Dobrowolski " + +# Copyright (c) 2015, Piotr 'inf' Dobrowolski +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +weechat.register("gimbo", "inf", "1.0", "BSD 2-clause", + "A script to colorise chan-like pointer text", "", "") + +POINTER_COLOR = '3' + +def get_modes(server, channel): + infolist = weechat.infolist_get('irc_channel', '', '%s,%s' % (server,channel)) + weechat.infolist_next(infolist) + modes = weechat.infolist_string(infolist, "modes") + weechat.infolist_free(infolist) + + return modes + +def on_sent_privmsg(data, signal, server, args): + """Colorizes outgoing messages""" + parsed = weechat.info_get_hashtable('irc_message_parse', {'message': args}) + + targets, message = parsed['arguments'].split(':', 1) + + if message.startswith('>') and \ + 'c' not in get_modes(server, parsed['channel']): + args = "PRIVMSG " + targets + " :\x03" + POINTER_COLOR + message + + return args + +weechat.hook_modifier('irc_out1_privmsg', 'on_sent_privmsg', '')