def setup_buffer(buffer): # set title weechat.buffer_set(buffer, "title", "Twitter buffer, type ':help' for options.") # disable logging, by setting local variable "no_log" to "1" weechat.buffer_set(buffer, "localvar_set_no_log", "1") #create main nicklist friends_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Friends", "weechat.color.nicklist_group", 1) tweet_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Tweet_parse", "weechat.color.nicklist_group", 1) autocomp_group = weechat.nicklist_add_group(buffer, "", "Autocomp", "weechat.color.nicklist_group", 1) #newline autocomplete weechat.nicklist_add_nick(buffer, autocomp_group, " ", 'bar_fg', '', '', 1) #show nicklist weechat.buffer_set(buffer, "nicklist", "1") user_nick = script_options['screen_name'] weechat.buffer_set(buffer, "localvar_set_nick", user_nick) add_to_nicklist(buffer, user_nick) # Highlight user nick weechat.buffer_set(buffer, "highlight_words", user_nick)
def add_nick(name, buffer, group): group = get_nick_group(buffer, 'bot2human') if not w.nicklist_search_nick(buffer, group, name): w.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", "~", "lightgreen", 1) return w.WEECHAT_RC_OK
def add_nick(name, buffer, group): # You may uncomment the following line if you want want these nicks grouped. # However, Glowing Bear will error and won't show you added nicks, if # the group is empty at the moment you open the channel buffer. group = get_nick_group(buffer, 'bot2human') if not w.nicklist_search_nick(buffer, group, name): w.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", "~", "lightgreen", 1) return w.WEECHAT_RC_OK
def update_nicklist(self): w.buffer_set(self.channel_buffer, "nicklist", "1") w.nicklist_remove_all(self.channel_buffer) for user in self.members: user = self.server.users.find(user) if user.presence == 'away': w.nicklist_add_nick(self.channel_buffer, "", user.name, user.color(), " ", "", 1) else: w.nicklist_add_nick(self.channel_buffer, "", user.name, user.color(), "+", "", 1)
def __init__(self, server, name, identifier, presence="away"): super(User, self).__init__(name, identifier) self.channel_buffer = w.info_get("irc_buffer", "%s.%s" % (domain, self.name)) self.presence = presence self.server = server if self.presence == 'away': self.nicklist_pointer = w.nicklist_add_nick(server.buffer, "", self.name, self.color(), " ", "", 0) else: self.nicklist_pointer = w.nicklist_add_nick(server.buffer, "", self.name, self.color(), "+", "", 1)
def nicklist_init(): csv_file = weechat.info_get('weechat_dir', '') + '/python/weesms.csv' try: contacts_csv = csv.reader(open(csv_file, 'r')) for c in contacts_csv: weechat.nicklist_add_nick(smsbuffer, contacts, c[0], '', '@', '', 1) contacts_dict[c[0]] = c[1] except IOError: weechat.prnt( '', "%sIOError: Unable to access %s file" % (csv_file, weechat.prefix("error")))
def __init__(self, server, name, identifier, presence="away"): super(User, self).__init__(name, identifier) self.channel_buffer = w.info_get("irc_buffer", "%s.%s" % (domain, self.name)) self.presence = presence self.server = server if self.presence == 'away': self.nicklist_pointer = w.nicklist_add_nick( server.buffer, "", self.name, self.color(), " ", "", 0) else: self.nicklist_pointer = w.nicklist_add_nick( server.buffer, "", self.name, self.color(), "+", "", 1)
def setup_group_buffer(groupId): global groups group = groups[groupId] buffer = get_buffer(groupId, True) set_buffer_name(buffer, group['name']) weechat.buffer_set(buffer, "nicklist", "1") weechat.buffer_set(buffer, "nicklist_display_groups", "0") for member in group['members']: member_name = contact_name(member['number']) entry = weechat.nicklist_search_nick(buffer, "", member_name) if len(entry) == 0: logger.debug("Adding %s to group %s", member_name, groupId) weechat.nicklist_add_nick(buffer, "", member_name, "", "", "", 1)
def nicklist_timer(data, remaining_calls): for server in xd: users_r = requests.get(urljoin(server, "api/user-list")) users = users_r.json()["users"] for channel in xd[server]["channels"].itervalues(): weechat.nicklist_remove_all(channel["buffer"]) group = weechat.nicklist_add_group(channel["buffer"], "", "Users", "weechat.color.nicklist_group", 1) for u in users: weechat.nicklist_add_nick( channel["buffer"], group, u["username"], "default" if u["online"] else "lightgrey", "", "lightgreen", 1) return weechat.WEECHAT_RC_OK
def reload_contacts_cb(data, buffer, args): global contacts csv_file = weechat.info_get('weechat_dir', '') + '/python/weesms.csv' try: contacts_csv = csv.reader(open(csv_file, 'r')) weechat.nicklist_remove_group(smsbuffer, contacts) contacts = weechat.nicklist_add_group(smsbuffer, '', 'contacts', '', 1) for c in contacts_csv: weechat.nicklist_add_nick(smsbuffer, contacts, c[0], '', '@', '', 1) contacts_dict[c[0]] = c[1] weechat.prnt('', "Contacts reload: done") except IOError: weechat.prnt( '', "%sIOError: Unable to access %s file" % (csv_file, weechat.prefix("error"))) return weechat.WEECHAT_RC_ERROR return weechat.WEECHAT_RC_OK
def updateNicklist(self, user, remove = False) : group = weechat.nicklist_search_group(self.buffer, '', user.login) if group is not None and user.login in self.contacts : if user.fd in self.contacts[user.login] : weechat.nicklist_remove_nick(self.buffer, self.contacts[user.login][user.fd].nick) del self.contacts[user.login][user.fd] if remove is False : user.nick = weechat.nicklist_add_nick(self.buffer, group, ' :%s%s@%s%s' % (user.fd, weechat.color('separator'), weechat.color('default'), user.location), '', '', '', 1) self.contacts[user.login][user.fd] = user
def get_buffer(identifier, isGroup): identifier = identifier.encode("utf-8") if identifier not in buffers: cb = "buffer_input_group" if isGroup else "buffer_input" name = identifier logger.debug("Creating buffer for identifier %s (%s)", identifier, "group" if isGroup else "contact") nicklist = [] signal = getSignal() if signal is not None: try: if isGroup: group = [ dbus.Byte(x) for x in base64.b64decode(identifier) ].encode("utf-8") name = signal.getGroupName(group).encode("utf-8") for number in signal.getGroupMembers(group): contact_name = signal.getContactName(number).encode( "utf-8") if len(contact_name) == 0: contact_name = number nicklist.append(contact_name) else: name = signal.getContactName(identifier).encode("utf-8") if len(name) == 0: name = identifier logger.debug("%s %s is known as %s", "group" if isGroup else "contact", identifier, name) except dbus.exceptions.DBusException: pass buffers[identifier] = weechat.buffer_new(name, cb, identifier, "", "") weechat.buffer_set(buffers[identifier], "title", name) if len(nicklist) > 0: weechat.buffer_set(buffers[identifier], "nicklist", "1") weechat.buffer_set(buffers[identifier], "nicklist_display_groups", "0") for nick in nicklist: logger.debug("Adding %s to group %s", nick, identifier) weechat.nicklist_add_nick(buffers[identifier], "", nick, "", "", "", 1) return buffers[identifier]
def update_nicklist(buffer_name): buffer_pointer = weechat.buffer_search('irc', buffer_name) if not buffer_pointer: return group_pointers = {} infolist = weechat.infolist_get('nicklist', buffer_pointer, '') infolist_string = weechat.infolist_string infolist_next = weechat.infolist_next while infolist_next(infolist): if not infolist_string(infolist, 'type') == 'nick': continue nick = infolist_string(infolist, 'name') if nick not in ident_nick: continue group = infolist_string(infolist, 'group_name') color = infolist_string(infolist, 'color') prefix = infolist_string(infolist, 'prefix') prefix_color = infolist_string(infolist, 'prefix_color') if ident_nick[nick]: prefix_new = ' ' group_new = '080|ident' color_new = 'green' else: prefix_new = '~' group_new = '081|unident' color_new = 'brown' prefix_color = 'cyan' if prefix[0] != prefix_new[0]: if prefix == ' ': prefix = prefix_new prefix_new = '' elif prefix_new != ' ': prefix = prefix_new + prefix prefix_new = '' if color == 'bar_fg': color = color_new color_new = '' if group[:2] == '08': group = group_new group_new = '' try: group_pointer = group_pointers[group] except KeyError: group_pointer = weechat.nicklist_search_group( buffer_pointer, '', group) if not group_pointer: group_pointer = weechat.nicklist_add_group( buffer_pointer, '', group, 'weechat.color.nicklist_group', 1) group_pointers[group] = group_pointer else: group_pointer = weechat.nicklist_search_group( buffer_pointer, '', group) if prefix_new and group_new and color_new: # nothing to change continue #debug('adding nick: %s%s to %s' %(prefix, nick, group)) nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick) if nick_pointer: weechat.nicklist_remove_nick(buffer_pointer, nick_pointer) nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer, nick, color, prefix, prefix_color, 1) nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer) weechat.infolist_free(infolist)
def create_new_buffer(self, msg, conv_id): channel = msg['channel'] name = channel['name'] if channel['members_type'] == 'impteamnative': ## We don't want to replicate our username name_splitted = name.split(',') ## We can send message to ourself if len(name_splitted) == 1: buff_name = name else: buff_name = ",".join(name_splitted[1:]) ty = "private" elif channel['members_type'] == 'team': buff_name = channel['name'] + "#" + channel['topic_name'] ty = "channel" else: buff_name = "un::" + channel['member_type'] ty = "private" buff = weechat.buffer_new(buff_name, "private_input_cb", conv_id, "private_close_cb", conv_id) weechat.prnt("", "buffer!" + str(buff)) weechat.buffer_set(buff, "localvar_set_type", ty) weechat.buffer_set(buff, "localvar_set_server", self.status_name) weechat.buffer_set(buff, "localvar_set_no_log", "1") weechat.buffer_set(buff, "localvar_set_conversation_id", conv_id) weechat.buffer_set(buff, "localvar_set_first_message", "") weechat.buffer_set(buff, "localvar_set_last_message", "") weechat.buffer_set(buff, "unread", "") weechat.buffer_set(buff, "notify", "2") weechat.buffer_set(buff, "nicklist", "1") # Get channel member api = { "method": "listmembers", "params": { "options": { "conversation_id": conv_id } } } r = self.execute_api(api) nicklist = [ "0|Owners", "1|Admins", "2|Writers", "3|Readers", "4|Bot", "5|Restricted Bot" ] group = [None] * 6 j = 0 for i in nicklist: group[int(j)] = weechat.nicklist_add_group( buff, "", i, "weechat.color.nicklist_group", 1) j += 1 result = r for i in result['owners']: weechat.nicklist_add_nick(buff, group[0], i['username'], "red", "@", "lightgreen", 1) for i in result['admins']: weechat.nicklist_add_nick(buff, group[1], i['username'], "red", "@", "lightgreen", 1) for i in result['writers']: weechat.nicklist_add_nick(buff, group[2], i['username'], "red", "@", "lightgreen", 1) for i in result['readers']: weechat.nicklist_add_nick(buff, group[3], i['username'], "red", "@", "lightgreen", 1) for i in result['bots']: weechat.nicklist_add_nick(buff, group[4], i['username'], "red", "@", "lightgreen", 1) for i in result['restrictedBots']: weechat.nicklist_add_nick(buff, group[5], i['username'], "red", "@", "lightgreen", 1) return buff
def add_nick(name, buffer, group): if not weechat.nicklist_search_nick(buffer, "", name): weechat.nicklist_add_nick(buffer, group, name, "weechat.color.nicklist_group", " ", "lightgreen", 1) return weechat.WEECHAT_RC_OK
def update_nicklist(buffer_name): buffer_pointer = weechat.buffer_search('irc', buffer_name) if not buffer_pointer: return group_pointers = {} infolist = weechat.infolist_get('nicklist', buffer_pointer, '') infolist_string = weechat.infolist_string infolist_next = weechat.infolist_next while infolist_next(infolist): if not infolist_string(infolist, 'type') == 'nick': continue nick = infolist_string(infolist, 'name') if nick not in ident_nick: continue group = infolist_string(infolist, 'group_name') color = infolist_string(infolist, 'color') prefix = infolist_string(infolist, 'prefix') prefix_color = infolist_string(infolist, 'prefix_color') if ident_nick[nick]: prefix_new = ' ' group_new = '080|ident' color_new = 'green' else: prefix_new = '~' group_new = '081|unident' color_new = 'brown' prefix_color = 'cyan' if prefix[0] != prefix_new[0]: if prefix == ' ': prefix = prefix_new prefix_new = '' elif prefix_new != ' ': prefix = prefix_new + prefix prefix_new = '' if color == 'bar_fg': color = color_new color_new = '' if group[:2] == '08': group = group_new group_new = '' try: group_pointer = group_pointers[group] except KeyError: group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group) if not group_pointer: group_pointer = weechat.nicklist_add_group(buffer_pointer, '', group, 'weechat.color.nicklist_group', 1) group_pointers[group] = group_pointer else: group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group) if prefix_new and group_new and color_new: # nothing to change continue #debug('adding nick: %s%s to %s' %(prefix, nick, group)) nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick) if nick_pointer: weechat.nicklist_remove_nick(buffer_pointer, nick_pointer) nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer, nick, color, prefix, prefix_color, 1) nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer) weechat.infolist_free(infolist)
def connect(url, data): global xd # ping the server, to see if it's online ping = requests.get(urljoin(url, "api")) if ping.status_code == requests.codes.teapot and "decent" in ping.json(): weechat.prnt( "", "weecent\tSuccessfully connected to Decent server %s." % url) elif ping.status_code in (requests.codes.ok, requests.codes.not_found): weechat.prnt( "", "weecent\t%s is not a valid Decent server, skipping." % url) del xd[url] return else: weechat.prnt("", "weecent\tCould not connect to %s, skipping." % url) del xd[url] return # login login_r = requests.post(urljoin(url, "api/login"), json=data) login_data = login_r.json() server_name = url.split("//")[1] if login_data["success"]: session_id = login_data["sessionID"] xd[url]["session_id"] = session_id channels_r = requests.get(urljoin(url, "api/channel-list"), {'sessionID': session_id}) if channels_r.json()['success']: channels = channels_r.json()['channels'] # create server buffer buffer_ = weechat.buffer_new(server_name, "server_input_cb", "", "server_close_cb", "") weechat.buffer_set(buffer_, "title", "Weecent testing!") weechat.buffer_set(buffer_, "localvar_set_no_log", "1") weechat.buffer_set(buffer_, "localvar_set_type", "server") weechat.buffer_set(buffer_, "localvar_set_url", url) weechat.buffer_set(buffer_, "localvar_set_server", server_name) xd[url]["buffer"] = buffer_ # create channel buffers xd[url]["channels"] = {} for channel in channels: xd[url]["channels"][channel["id"]] = {"name": channel["name"]} # set up buffer buffer_ = weechat.buffer_new(channel["name"], "send_message", "", "channel_close_cb", "") weechat.buffer_set(buffer_, "title", "Weecent testing!") weechat.buffer_set(buffer_, "nicklist", "1") weechat.buffer_set(buffer_, "nicklist_display_groups", "0") weechat.buffer_set(buffer_, "localvar_set_no_log", "1") weechat.buffer_set(buffer_, "localvar_set_type", "channel") weechat.buffer_set(buffer_, "localvar_set_channel", json.dumps(channel)) weechat.buffer_set(buffer_, "localvar_set_url", url) weechat.buffer_set(buffer_, "localvar_set_server", server_name) xd[url]["channels"][channel["id"]]["buffer"] = buffer_ # get scrollback scrollback_r = requests.get( urljoin(url, "api/channel/%s/latest-messages" % channel["id"])) messages = scrollback_r.json()["messages"] for m in messages: display_msg(buffer_, m, xd[url]) # get users users_r = requests.get(urljoin(url, "api/user-list")) users = users_r.json()["users"] group = weechat.nicklist_add_group( buffer_, "", "Users", "weechat.color.nicklist_group", 1) for u in users: weechat.nicklist_add_nick( buffer_, group, u["username"], "default" if u["online"] else "lightgrey", "", "lightgreen", 1) else: weechat.prnt("", "ono a bad happened") # create websocket if not "socket" in xd[url]: # wss or ws? use_secure = requests.get(urljoin(url, "api/should-use-secure")).json() protocol = "wss://" if use_secure["useSecure"] else "ws://" xd[url]['socket'] = websocket.create_connection( protocol + server_name, sslopt=sslopt_ca_certs) weechat.hook_fd(xd[url]['socket'].sock._sock.fileno(), 1, 0, 0, "recv_cb", "") xd[url]['socket'].sock.setblocking(0) else: weechat.prnt("", "ono a bad happened")
def add_to_nicklist(buf, nick, group=""): """Add nick to the nicklist.""" if group == "": group = friends_nicks_group[buf] weechat.nicklist_add_nick(buf, group, nick, 'bar_fg', '', '', 1)
def add_to_nicklist(buf, nick): """Add nick to the nicklist.""" wc.nicklist_add_nick(buf, "", nick, wc.info_get('irc_nick_color_name', nick), '', '', 1)
def buf_get(ctx, known): global _tmp_room_queue_hash, _tmp_room_initial haveBzz = False # \todo integrity check of input data bufname = ctx.to_buffer_name() wOut( PSS_BUFPFX_DEBUG, [], "!!!", "generated bufname " + bufname ) buf = weechat.buffer_search("python", bufname) if ctx.is_room() and ctx.get_bzz() == None: raise RuntimeError("gateway needed for multiuser chats over swarm") if buf == "": # for debug only pss_publickey_hex = pss.rpchex(ctx.get_pss().get_public_key()) pss_overlay_hex = pss.rpchex(ctx.get_pss().get_overlay()) # chat is DM between two parties if ctx.is_chat(): shortname = "pss:" + ctx.get_name() # set up the buffer ctx.set_buffer(weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node()), bufname) weechat.buffer_set(ctx.get_buffer(), "short_name", shortname) weechat.buffer_set(ctx.get_buffer(), "title", ctx.get_name() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key " + pss.label(pss_publickey_hex) + " | address " + pss.label(pss_overlay_hex)) weechat.buffer_set(ctx.get_buffer(), "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE) weechat.buffer_set(ctx.get_buffer(), "display", "1") plugin = weechat.buffer_get_pointer(ctx.get_buffer(), "plugin") bufs[bufname] = buf # room is multiuser conversation elif ctx.is_room(): shortname = "pss#" + ctx.get_name() buf = weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node()) weechat.buffer_set(buf, "short_name", shortname) weechat.buffer_set(buf, "title", "#" + ctx.get_node() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key " + pss.label(ctx.get_pss().get_public_key().encode("hex")) + " | address " + pss.label(ctx.get_pss().get_overlay().encode("hex"))) weechat.buffer_set(buf, "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE) weechat.buffer_set(buf, "nicklist", "1") weechat.buffer_set(buf, "display", "1") weechat.nicklist_add_group(buf, "", "me", "weechat.color.nicklist_group", 1) weechat.nicklist_add_nick(buf, "me", ctx.get_node(), "bar_fg", "", "bar_fg", 1) plugin = weechat.buffer_get_pointer(buf, "plugin") bufs[bufname] = buf if cache.get_room_count() == 0: hookTimers.append(weechat.hook_timer(PSS_ROOM_PERIOD, 0, 0, "roomRead", ctx.get_node())) # create new room (room, loaded) = cache.add_room(ctx.get_name(), ctx.get_node()) _tmp_room_initial[ctx.get_name()] = False if loaded: _tmp_room_queue_hash[ctx.get_name()] = room.feedcollection.senderfeed.lasthsh try: cache.have_room_initial(ctx.get_name()) _tmp_room_initial[ctx.get_name()] = True except Exception as e: sys.stderr.write("no initial update, not pulling: " + repr(e) + "\n") wOut( PSS_BUFPFX_DEBUG, [], "", "loaded room " + repr(cache.get_room(ctx.get_name())) ) for p in room.get_participants(): pubkey = p.get_public_key() if pubkey == ctx.get_pss().get_public_key(): continue nick = "" try: c = cache.get_contact_by_public_key(pubkey) nick = c.get_nick() buf_room_add(buf, c.get_nick()) except: nick = p.get_nick() buf_room_add(buf, nick) else: raise RuntimeError("invalid buffer type") else: ctx.set_buffer(buf, bufname) return ctx.get_buffer()
def buf_room_add(buf, nick, groupname=""): if weechat.nicklist_search_group(buf, "", "members") == "": weechat.nicklist_add_group(buf, "", "members", "weechat.color.nicklist_group", 1) nickbufp = weechat.nicklist_add_nick(buf, groupname, nick, "bar_fg", "", "bar_fg", 1) weechat.nicklist_nick_set(buf, nickbufp, "color", "white")
def add_to_nicklist(buf, nick): """Add nick to the nicklist.""" wc.nicklist_add_nick(buf, "", nick, 'bar_fg', '', '', 1)
def set_colors( users_logged_in ): global rbon_messages # Variable to hold contents of rbon bar item global first_run # Script needs one run to populate online and offline dictionaries global online_dict global offline_dict global outgoing_list global incoming_list nicks = weechat.infolist_get( 'irc_nick', '', 'redbrick,#lobby' ) buff_ptr = weechat.buffer_search( "irc","redbrick.#lobby" ) if( nicks == "" and buff_ptr == "" ): nicks = weechat.infolist_get( 'irc_nick', '', 'irc.redbrick.dcu.ie,#lobby' ) buff_ptr = weechat.buffer_search( "irc","irc.redbrick.dcu.ie.#lobby" ) group_normal_ptr = weechat.nicklist_search_group( buff_ptr, "", "..." ) group_op_ptr = weechat.nicklist_search_group( buff_ptr, "", "o" ) color_nick_online = weechat.config_get_plugin( "color_nick_online" ) if( nicks != None ): if( nicks == {} ): weechat.prnt( "No nicks" ) else: while weechat.infolist_next( nicks ): # Stepping through each nick in #lobby name = weechat.infolist_string(nicks, 'name') host = weechat.infolist_string(nicks, 'host') flag = weechat.infolist_integer(nicks, 'flags') timeout = int(weechat.config_get_plugin("interim_period")) if( "@Redbrick.dcu.ie" in host ): rnick = re.sub('@Redbrick.dcu.ie', '', host) # Strip real nick from host nick_ptr = weechat.nicklist_search_nick(buff_ptr, "", name) # Find nick pointer # # - Incoming/Outgoing lists won't be populated if at least one iteration of the list hasn't happened. # first_run set false at the end of first iteration # - Set outgoing if - user is offline, user WAS online on the last iteration, user is not currently outgoing # - Set incoming if - user is online, user was NOT online on the last iteration, user is not currently incoming # # # - Script uses stacks # When user moves into a state they are pushed onto the stack # After a set time hook_timer's callback pops the user off the stack and they are moved into either offline or online dictionary # # If NOT already logged in NOT first run WAS online on last loop NOT in outgoing list if( not rnick in users_logged_in and not first_run and rnick in online_dict and rnick not in outgoing_list ): # weechat.prnt("", "OUTgoing user - %s" % rnick) outgoing_list.insert(0, rnick) weechat.hook_timer(timeout * 1000, 0, 1, "pop_outgoing", "") # TODO - This hook executes pop_outgoing immediately instead of waiting 10 seconds color = weechat.config_get_plugin( "outgoing_color" ) # TODO - Add OUTGOING nick to rbon_messages here to be displayed in the rbon bar item rbon_nick_color = weechat.color( color ) string = "%s%s" % ( rbon_nick_color,name ) rbon_messages.append( string ) weechat.bar_item_update( "rbon" ) if( rnick in online_dict ): del online_dict[ rnick ] # If IS logged in NOT first run IN nicklist WAS offline on last loop NOT in incoming list elif( rnick in users_logged_in and not first_run and rnick in offline_dict and rnick not in incoming_list ): # weechat.prnt("", "INcoming user - %s" % rnick) incoming_list.insert(0, rnick) weechat.hook_timer(timeout * 1000, 0, 1, "pop_incoming", "") # TODO - This hook executes pop_incoming immediately instead of waiting 10 seconds color = weechat.config_get_plugin("incoming_color") # Color incoming users red # TODO - Add INCOMING nick to rbon_messages here to be displayed in the rbon bar item rb_nick_color = weechat.color( color ) string = "%s%s" % ( rb_nick_color, name ) rbon_messages.append( string ) weechat.bar_item_update( "rbon" ) if( rnick in offline_dict ): del offline_dict[rnick] elif( rnick in incoming_list ): color = weechat.config_get_plugin( "incoming_color" ) elif( rnick in outgoing_list ): color = weechat.config_get_plugin( "outgoing_color" ) # Check to see if that user is logged elif( rnick in users_logged_in ): if( rnick in offline_dict ): del offline_dict[rnick] online_dict[rnick] = "" color = weechat.config_get_plugin( "online_color" ) # Color online user user nicks else: offline_dict[rnick] = "" if( rnick in online_dict ): del online_dict[rnick] color = weechat.config_get_plugin( "offline_color" ) # Colour offline user nicks # Adding nicks with relevant colours back into the nicklist if( buff_ptr and nick_ptr ): # TODO - Decide whether or not this REMOVE should be moved... weechat.nicklist_remove_nick(buff_ptr, nick_ptr) if( buff_ptr ): # The nick may already have been removed from the buffer.... if( flag == 0 ): # Check if normal user weechat.nicklist_add_nick(buff_ptr, group_normal_ptr, name, weechat.color(color), " ", color, 1) elif( flag == 8 ): # Check if ops (include @ prefix) weechat.nicklist_add_nick(buff_ptr, group_op_ptr, name, weechat.color(color), "@", color, 1) first_run = 0 users_rb_dict.clear() weechat.infolist_free( nicks ) return weechat.WEECHAT_RC_OK
def buf_room_add(buf, nick, groupname=""): #if weechat.nicklist_search_group(buf, "", "members") == "": # weechat.nicklist_add_group(buf, "", "members", "weechat.color.nicklist_group", 1) weechat.nicklist_add_nick(buf, groupname, nick, "bar_fg", "", "bar_fg", 1)