def Check_Nick(self, prefix): if weechat.nicklist_search_nick(self.buffer_ptr, '', prefix): return prefix else: wildcards = '+@' if prefix[0] in wildcards: if weechat.nicklist_search_nick(self.buffer_ptr, '', prefix[1:]): return prefix[1:]
def channel_has_nick(fserver, fchannel, fnick): """Check if channel has nick in it.""" # noinspection PyProtectedMember function_name = sys._getframe().f_code.co_name # pylint: disable=W0212 wp.debug(function_name, "START : %s" % fnick, wdb.SHOW_START) thisbuffer = w.buffer_search("", "%s.%s" % (fserver, fchannel)) # check for nick in the buffer is_online = bool(w.nicklist_search_nick(thisbuffer, "", fnick)) if (fnick == "FlipMoran" and not (is_online)): is_online = bool(w.nicklist_search_nick(thisbuffer, "", "FlipMoran2")) return is_online
def connect_to_slack(browser): global stuff, login_data, nick, connected, general_buffer_ptr, nick_ptr, name reply = browser.open('https://%s' % (domain)) try: browser.select_form(nr=0) browser.form['email'] = email browser.form['password'] = password reply = browser.submit() except: pass #TODO: this is pretty hackish, i am grabbing json from an html comment if reply.code == 200: data = reply.read() n = data.split('var boot_data = {')[1] n = n.split("TS.boot(boot_data)")[0] n = re.split('[\n\t]', n) settings = filter(None, n) setting_hash = {} for setting in settings: name, setting = re.split('[^\w{[\']+',setting, 1) setting_hash[name] = setting.lstrip("'").rstrip(",'") stuff = setting_hash login_data = json.loads(stuff['login_data']) nick = login_data["self"]["name"] create_slack_lookup_hashes() create_slack_websocket(login_data) general_buffer_ptr = w.buffer_search("",server+".#general") nick_ptr = w.nicklist_search_nick(general_buffer_ptr,'',nick) name = w.nicklist_nick_get_string(general_buffer_ptr,nick,'name') connected = True return True else: stuff = None connected = False return False
def privmsg(data, signal, signal_data): (server, signal) = signal.split(",") channels = wc.config_get_plugin('channels').replace(',', '|') api_key = wc.config_get_plugin('api_key') if re.match('^\${sec\.data\.(.*)}$', api_key): api_key = wc.string_eval_expression(api_key, {}, {}, {}) bots_list = wc.config_get_plugin('other_bots').split(",") details = wc.info_get_hashtable("irc_message_parse", {"message": signal_data, "server": server}) youtube_regex_match = re.compile(r'(.*https?://)?(www\.)?(youtube|youtu|youtube-nocookie)\.(com|be)/(watch\?v=|embed/|v/|.+\?v=)?([a-zA-Z0-9_-]{11})').match(details['text']) buffer_name = details['channel'] buffer_pointer = wc.info_get("irc_buffer", "%s,%s" % (server, buffer_name)) channels_regex = re.compile(r'(%s)' % (channels), re.I) bots_exist = False if channels_regex.match(buffer_name) and youtube_regex_match: if not bots_list == "not_set": for other_bots in bots_list: bots_test = wc.nicklist_search_nick(buffer_pointer, "", other_bots) if bots_test: bots_exist = True if not bots_exist: if not api_key == "not_set": vid_id = youtube_regex_match.group(6) rvt = requests.get('https://www.googleapis.com/youtube/v3/videos/?id={0}&part=snippet&key={1}'.format(vid_id, api_key)) rvc = requests.get('https://www.googleapis.com/youtube/v3/videos/?id={0}&part=statistics&key={1}'.format(vid_id, api_key)) try: vid_title = rvt.json()['items'][0]['snippet']['title'].encode('utf-8') vid_channel = rvt.json()['items'][0]['snippet']['channelTitle'].encode('utf-8') vid_views = rvc.json()['items'][0]['statistics']['viewCount'] wc.command("", r"/msg {0} [Youtube] {1} | Channel: {2} | Views: {3}".format(buffer_name, vid_title, vid_channel, vid_views)) except: wc.command("", r"/msg {0} [Youtube] Error getting video info.".format(buffer_name)) else: wc.command("", r"/msg {0} Youtube api key not set.".format(buffer_name)) return wc.WEECHAT_RC_OK
def get_nick_prefix(pointer): nick = weechat.buffer_get_string(pointer, "localvar_nick") nick_pointer = weechat.nicklist_search_nick(pointer, "", nick) prefix = weechat.nicklist_nick_get_string(pointer, nick_pointer, "prefix") return prefix
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 process_presence_change(data): global nick_ptr if data["user"] == nick: nick_ptr = w.nicklist_search_nick(general_buffer_ptr,'',nick) if data["presence"] == 'active': w.nicklist_nick_set(general_buffer_ptr, nick_ptr, "prefix", "+") else: w.nicklist_nick_set(general_buffer_ptr, nick_ptr, "prefix", " ") else: pass
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 update_fullname(buffer, name): if name not in nicklist: weechat.prnt('', 'Name %s not known' % name) return nick = weechat.nicklist_search_nick(buffer, '', name) if not nick: weechat.prnt('', 'Nick not found for %r in %s' % (name, buffer)) return fullname = encode(nicklist[name]['name']) prefix = weechat.nicklist_nick_get_string(buffer, nick, 'prefix') if not prefix.startswith(fullname): prefix = '%s %s' % (fullname, prefix) weechat.nicklist_nick_set(buffer, nick, 'prefix', prefix)
def privmsg(data, signal, signal_data): (server, signal) = signal.split(',') channels = wc.config_get_plugin('channels').replace(',', '|') consumer_key = wc.config_get_plugin('consumer_key') consumer_secret = wc.config_get_plugin('consumer_secret') access_token_key = wc.config_get_plugin('access_token_key') access_token_secret = wc.config_get_plugin('access_token_secret') sec = re.compile('^\${sec\.data\.(.*)}$') if sec.match(consumer_key): consumer_key = wc.string_eval_expression(consumer_key, {}, {}, {}) if sec.match(consumer_secret): consumer_secret = wc.string_eval_expression(consumer_secret, {}, {}, {}) if sec.match(access_token_key): access_token_key = wc.string_eval_expression(access_token_key, {}, {}, {}) if sec.match(access_token_secret): access_token_secret = wc.string_eval_expression(access_token_secret, {}, {}, {}) bots_list = wc.config_get_plugin('other_bots').split(',') details = wc.info_get_hashtable('irc_message_parse', {'message': signal_data, 'server': server}) twitter_regex_match = re.compile(r'(.*https?://)?twitter\.com/.*/status/([0-9]{18})(.*)').match(details['text']) buffer_name = details['channel'] buffer_pointer = wc.info_get('irc_buffer', '%s,%s' % (server, buffer_name)) channels_regex = re.compile(r'(%s)' % (channels), re.I) bots_exist = False if channels_regex.match(buffer_name) and twitter_regex_match: if not bots_list == 'not_set': for other_bots in bots_list: bots_test = wc.nicklist_search_nick(buffer_pointer, '', other_bots) if bots_test: bots_exist = True if not bots_exist: if consumer_key == 'not_set': wc.command('', r'/msg {0} Twitter consumer_key not set.'.format(buffer_name)) elif consumer_secret == 'not_set': wc.command('', r'/msg {0} Twitter consumer_secret not set.'.format(buffer_name)) elif access_token_key == 'not_set': wc.command('', r'/msg {0} Twitter access_token_key not set.'.format(buffer_name)) elif access_token_secret == 'not_set': wc.command('', r'/msg {0} Twitter access_token_secret not set.'.format(buffer_name)) else: tweet_id = twitter_regex_match.group(2) tweet = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret).request('statuses/show/:{0}'.format(tweet_id)) try: tweet_message = tweet.json()['text'].replace('\n', ' ').encode('utf-8') tweet_message = HTMLParser().unescape(tweet_message) tweet_user = tweet.json()['user']['screen_name'].encode('utf-8') wc.command('', r'/msg {0} [Twitter] "{1}" by @{2}'.format(buffer_name, tweet_message, tweet_user)) except: wc.command('', r'/msg {0} [Twitter] Error getting tweet info.'.format(buffer_name)) return wc.WEECHAT_RC_OK
def handler(data, buffer, argList): if len(argList.split(" ")) < 2: weechat.prnt("", "Wrong number of parameters for kbtimeout") return weechat.WEECHAT_RC_ERROR; nick = argList.split(" ")[0] timeout = argList.split(" ")[1] message = "" if len(argList.split(" ")) > 2: message = argList.split(" ", 2)[2] nick_ptr = weechat.nicklist_search_nick(buffer, "", nick) buffer_name = weechat.buffer_get_string(buffer, "name"); if nick_ptr: weechat.command(buffer, "/kickban " + nick + " " + message) weechat.hook_timer(int(timeout) * 1000, 0, 1, "kickban_callback", buffer_name + ":" + nick) return weechat.WEECHAT_RC_OK
def handler(server, buffer, argList): if len(argList.split(" ")) < 2: weechat.prnt(weechat.current_buffer(), "Wrong number of parameters for kbtimeout") return weechat.WEECHAT_RC_ERROR; nick = argList.split(" ")[0] timeout = argList.split(" ")[1] message = "" if len(argList.split(" ")) > 2: message = argList.split(" ", 2)[2] nick_ptr = weechat.nicklist_search_nick(weechat.current_buffer(), "", nick) buffer_name = weechat.buffer_get_string(weechat.current_buffer(), "name"); if nick_ptr: weechat.command(weechat.current_buffer(), "/kickban " + nick + " " + message) weechat.hook_timer(int(timeout) * 1000, 0, 1, "kickban_callback", buffer_name + ":" + nick) return weechat.WEECHAT_RC_OK
def handler(data, buffer, argList): split_args = argList.split(" ") if len(split_args) < 2: weechat.prnt("", "Wrong number of parameters for kbtimeout") return weechat.WEECHAT_RC_ERROR nick = split_args[0] timeout = split_args[1] message = "" if len(split_args) > 2: message = argList.split(" ", 2)[2] nick_ptr = weechat.nicklist_search_nick(buffer, "", nick) infolist = weechat.infolist_get("irc_nick", "", "{},{}".format("freenode", "##kbtimeout")) buffer_name = weechat.buffer_get_string(buffer, "name") found_ban_host = None while weechat.infolist_next(infolist): ban_nick = weechat.infolist_string(infolist, "name") ban_host = weechat.infolist_string(infolist, "host") ban_account = weechat.infolist_string(infolist, "account") if ban_nick == nick: found_ban_host = ban_host weechat.infolist_free(infolist) found_ban_host = found_ban_host[1:] if found_ban_host: weechat.command(buffer, "/kickban " + found_ban_host + " " + message) weechat.hook_timer( int(timeout) * 1000, 0, 1, "kickban_callback", buffer_name + ":" + found_ban_host) return weechat.WEECHAT_RC_OK
def detect_highlight_spam(buffer_ptr, message): """Return True if the message highlights more than the configured threshold of users in the nicklist of the channel""" threshold = config['highlight_spam_threshold'] if threshold < 2: return False checked = set() # extract words to check from message words = message.split() if not weechat.buffer_get_integer(buffer_ptr, 'nicklist_case_sensitive'): words = map(str.lower, words) for word in words: if word in checked: continue checked.add(word) # check if this highlights a user in the channel if weechat.nicklist_search_nick(buffer_ptr, "", word.encode('utf-8')): threshold -= 1 if threshold == 0: return True return False
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 tc_bar_item (data, item, window): '''Item constructor''' # window empty? root bar! if not window: window = w.current_window() global length, cursor_pos, tc_input_text, count_over,tc_options count_over = '0' sms = '' tweet = '' reverse_chars = 0 ptr_buffer = w.window_get_pointer(window,"buffer") if ptr_buffer == "": return "" length = w.buffer_get_integer(ptr_buffer,'input_length') start_pos = int(tc_options['start_cursor_pos_at_zero'].lower() == 'off') cursor_pos = w.buffer_get_integer(ptr_buffer,'input_pos') + start_pos plugin = w.buffer_get_string(ptr_buffer, 'plugin') host = '' if plugin == 'irc': servername = w.buffer_get_string(ptr_buffer, 'localvar_server') channelname = w.buffer_get_string(ptr_buffer, 'localvar_channel') channel_type = w.buffer_get_string(ptr_buffer, 'localvar_type') name = w.buffer_get_string(ptr_buffer, 'localvar_name') input_line = w.buffer_get_string(ptr_buffer, 'input') mynick = w.info_get('irc_nick', servername) nick_ptr = w.nicklist_search_nick(ptr_buffer, '', mynick) # check for a sms message if channel_type == 'private' and name in tc_options['sms_buffer'].split(","): # 160 chars for a sms # 'sms:name:text' get_sms_text = re.match(r'(s|sms):(.*?:)(.*)', input_line) if get_sms_text: # if get_sms_text.group(2): sms_len = len(get_sms_text.group(3)) # input_length = len(input_line) # sms_prefix = input_length - sms_len sms = 160-sms_len reverse_chars = sms else: get_sms_text = re.match(r'(r|reply):(.*)', input_line) if get_sms_text: sms_len = len(get_sms_text.group(2)) sms = 160-sms_len reverse_chars = sms # check for a tweet buffer elif name in tc_options['tweet_buffer'].split(","): # 140 chars for a tweet! prefix "post " = 5 chars # check out if length >= 5 and matches "post " if length >= 5 and re.match(r'post (.*)', input_line): tweet = 145 - length reverse_chars = tweet # get host and length from host elif servername != channelname: infolist = w.infolist_get('irc_nick', '', '%s,%s,%s' % (servername,channelname,mynick)) # w.prnt("","%s.%s.%s.%s" % (servername,channelname,mynick,nick_ptr)) while w.infolist_next(infolist): host = w.infolist_string(infolist, 'host') w.infolist_free(infolist) if host != '': host = ':%s!%s PRIVMSG %s :' % (mynick,host,channelname) host_length = len(host) # w.prnt("","%d" % host_length) reverse_chars = (475 - int(host_length) - length -1) # -1 = return else: reverse_chars = (int(tc_options['max_chars']) - length) else: reverse_chars = (int(tc_options['max_chars']) - length) else: # reverse check for max_chars reverse_chars = (int(tc_options['max_chars']) - length) if reverse_chars == 0: reverse_chars = "%s" % ("0") else: if reverse_chars < 0: count_over = "%s%s%s" % (w.color(tc_options['warn_colour']),str(reverse_chars*-1), w.color('default')) reverse_chars = "%s" % ("0") tc_action_cb() else: reverse_chars = str(reverse_chars) out_format = tc_options['format'] if tc_options['warn']: if length >= int(tc_options['warn']): length_warn = "%s%s%s" % (w.color(tc_options['warn_colour']), str(length), w.color('default')) out_format = out_format.replace('%L', length_warn) else: out_format = out_format.replace('%L', str(length)) else: out_format = out_format.replace('%L', str(length)) out_format = out_format.replace('%P', str(cursor_pos)) if sms: out_format = out_format.replace('%R', "s:" + reverse_chars) elif tweet: out_format = out_format.replace('%R', "t:" + reverse_chars) else: out_format = out_format.replace('%R', reverse_chars) out_format = out_format.replace('%C', count_over) # out_format = out_format.replace('%T', str(tweet)) # out_format = out_format.replace('%S', str(sms)) tc_input_text = out_format return substitute_colors(tc_input_text)
def remove_from_nicklist(buf, nick, group=""): """Remove nick from the nicklist.""" if group == "": group = friends_nicks_group[buf] nick_ptr = weechat.nicklist_search_nick(buf, group, nick) weechat.nicklist_remove_nick(buf, nick_ptr)
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 add_nick(info, bot, rnick, rtext, result): buffer = weechat.buffer_search("==", "irc.%s.%s" % (info["server"], info["channel"])) if buffer and not weechat.nicklist_search_nick(buffer, "", rnick): result.append(":%s!~%s@%s.%s JOIN %s" % (rnick, rnick, info["nick"], SCRIPT_NAME, info["channel"]))
def channel_has_nick(server, channel, nick): buffer = w.buffer_search("", "%s.%s" % (server, channel)) return bool(w.nicklist_search_nick(buffer, "", nick))
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 weechat_nicklist_search_nick(buffer, nick): return weechat.nicklist_search_nick(buffer, "", nick)
def isnick(buff, nickname): return w.nicklist_search_nick(buff, "", nickname)
def remove_nick(name, buffer, group): pointer = weechat.nicklist_search_nick(buffer, "", name) if pointer: weechat.nicklist_remove_nick(buffer, pointer) return weechat.WEECHAT_RC_OK
def remove_from_nicklist(buf, nick): """Remove nick from the nicklist.""" nick_ptr = wc.nicklist_search_nick(buf, "", nick) wc.nicklist_remove_nick(buf, nick_ptr)
def roomRead(pssName, _): global _tmp_room_initial for r in cache.rooms.values(): if not _tmp_room_initial[r.get_name()]: continue msgs = [] ctx = EventContext() ctx.reset(PSS_BUFTYPE_ROOM, pssName, r.get_name()) buf = weechat.buffer_search("python", ctx.to_buffer_name()) (_, fails) = r.feedcollection.gethead(cache.get_active_bzz(), True) for f in fails: nick = cache.get_contact_by_public_key(f.get_public_key()).get_nick() nickbufp = weechat.nicklist_search_nick(buf, "", nick) #weechat.nicklist_remove_nick(buf, nickbufp) weechat.nicklist_nick_set(buf, nickbufp, "color", "240") wOut( PSS_BUFPFX_WARN, [buf], "---", "Feed for '" + nick + "' timed out and has been deactivated. Read-add manually to reactivate" ) msgs = r.feedcollection.get() #sys.stderr.write("getting feed for room: " + repr(r) + ": " + "msglen" + repr(len(msgs))) for m in msgs: # use set nick if message sender is self # \todo eliminate, move to instant feedback on send for self contact = None nick = "" ps = cache.get_pss(ctx.get_node()) if ps.get_public_key() == m.key: contact = ps.account nick = cache.get_nodeself(ctx.get_node()) # \todo use binary key repr in nicks dict else: contact = cache.get_contact_by_public_key(m.key) nick = contact.get_nick() msg = r.extract_message(m.content, contact) wOut( PSS_BUFPFX_DEBUG, [], ">>>", "write buf " + ctx.to_buffer_name() + " room " + r.get_name() ) wOut( PSS_BUFPFX_IN, [buf], nick, msg ) 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)