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 setupNicklist(self) : contact_list = self.getOption('contacts').replace(' ', '').split(',') for login in contact_list : weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1) self.contacts[login] = {} self._ns_user_cmd_who('{%s}' % ','.join(contact_list)) self._ns_user_cmd_watch_log_user(','.join(contact_list))
def setup_nick_list(self): contact_list = { True: [], False: self.get_option('contacts').replace(' ', '').split(',') }[self.get_option('contacts').replace(' ', '') == ''] for login in contact_list: weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1) self.contacts[login] = {} self._ns_user_cmd_who('{%s}' % ','.join(contact_list)) self._ns_user_cmd_watch_log_user(','.join(contact_list))
def add_to_nick_list(self, *logins): contact_list = { True: [], False: self.get_option('contacts').replace(' ', '').split(',') }[self.get_option('contacts').replace(' ', '') == ''] new_contacts = [] for login in logins: if login in self.contacts: continue contact_list.append(login) new_contacts.append(login) self.contacts[login] = {} weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1) self._ns_user_cmd_who('{%s}' % ','.join(new_contacts)) self._ns_user_cmd_watch_log_user(','.join(contact_list)) weechat.config_option_set(self.options['contacts'], ','.join(contact_list), 0)
def check_message(data, signal, signal_data): dict = weechat.info_get_hashtable("irc_message_parse", {"message": signal_data}) nick = dict["nick"] channel = dict["channel"] if nick == "triggerbot": try: if channel.split("_")[1]: triggersafechannel = True except IndexError: triggersafechannel = False if triggersafechannel: buffer = weechat.info_get( "irc_buffer", "%s,%s" % (signal.split(",")[0], channel)) group = weechat.nicklist_search_group(buffer, "", "triggerbot") if not group: group = weechat.nicklist_add_group( buffer, "", "triggerbot", "weechat.color.nicklist_group", 1) triggerbotbuffers[buffer] = group # Is this a list of nicks? if dict["arguments"].find("Nicks %s: [" % channel) != -1: names = dict["arguments"].split( "Nicks %s: [" % channel)[1].split("]")[0].split(" ") set_nicklist(names, buffer, group) # Is this a join message? elif dict["arguments"].split(":")[1].startswith( "[INFO] ") and dict["arguments"].find(" has joined") != -1: name = dict["arguments"].split("[INFO] ")[1].split( " has joined")[0] add_nick(name, buffer, group) # A leave message? elif dict["arguments"].split(":")[1].startswith( "[INFO] ") and dict["arguments"].find(" has left") != -1: name = dict["arguments"].split("[INFO] ")[1].split( " has left")[0] remove_nick(name, buffer, group) # A quit message? (Don't search for the dot here because a reason may be displayed) elif dict["arguments"].split(":")[1].startswith( "[INFO] ") and dict["arguments"].find(" has quit") != -1: name = dict["arguments"].split("[INFO] ")[1].split( " has quit")[0] remove_nick(name, buffer, group) elif dict["arguments"].split(":")[1].startswith( "[INFO] " ) and dict["arguments"].find(" is now known as ") != -1: oldname = dict["arguments"].split("[INFO] ")[1].split( " is now known as ")[0] newname = dict["arguments"].split("[INFO] ")[1].split( " is now known as ")[1].split(".")[0] remove_nick(oldname, buffer, group) add_nick(newname, buffer, group) return weechat.WEECHAT_RC_OK
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 check_message(data, signal, signal_data): dict = weechat.info_get_hashtable("irc_message_parse", {"message": signal_data}) nick = dict["nick"] channel = dict["channel"] if nick == "triggerbot": try: if channel.split("_")[1]: triggersafechannel = True except IndexError: triggersafechannel = False if triggersafechannel: buffer = weechat.info_get("irc_buffer", "%s,%s" % (signal.split(",")[0], channel)) group = weechat.nicklist_search_group(buffer, "", "triggerbot") if not group: group = weechat.nicklist_add_group(buffer, "", "triggerbot", "weechat.color.nicklist_group", 1) triggerbotbuffers[buffer] = group # Is this a list of nicks? if dict["arguments"].find("Nicks %s: [" % channel) != -1: names = dict["arguments"].split("Nicks %s: [" % channel)[1].split("]")[0].split(" ") set_nicklist(names, buffer, group) # Is this a join message? elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has joined") != -1: name = dict["arguments"].split("[INFO] ")[1].split(" has joined")[0] add_nick(name, buffer, group) # A leave message? elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has left") != -1: name = dict["arguments"].split("[INFO] ")[1].split(" has left")[0] remove_nick(name, buffer, group) # A quit message? (Don't search for the dot here because a reason may be displayed) elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has quit") != -1: name = dict["arguments"].split("[INFO] ")[1].split(" has quit")[0] remove_nick(name, buffer, group) elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" is now known as ") != -1: oldname = dict["arguments"].split("[INFO] ")[1].split(" is now known as ")[0] newname = dict["arguments"].split("[INFO] ")[1].split(" is now known as ")[1].split(".")[0] remove_nick(oldname, buffer, group) add_nick(newname, buffer, group) return weechat.WEECHAT_RC_OK
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 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 get_nick_group(buffer, group_name): group = w.nicklist_search_group(buffer, "", group_name) if not group: group = w.nicklist_add_group(buffer, "", group_name, "weechat.color.nicklist_group", 1) return group
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 buffer_input_cb(data, buffer, input_data): # ... end_message = "" options = [script_options['screen_name']] if script_options['alt_rt_style']: options.append("alt_rt_style") if script_options['home_replies']: options.append("home_replies") if input_data[0] == ':': if data != "silent": weechat.prnt_date_tags(buffer, 0, "no_highlight", input_data) input_args = input_data.split() command = input_args[0][1:] if command_dict.get(command): input_data = input_data.replace(command,command_dict[command],1) command = command_dict[command] if command == 'd' and tweet_dict.get(input_args[1]): input_data = 'd ' + tweet_dict[input_args[1]] weechat.prnt(buffer, "%sYou deleted the following tweet:" % weechat.prefix("network")) elif command == 'v' and tweet_dict.get(input_args[1]): input_data = 'v ' + tweet_dict[input_args[1]] end_message = "Done" elif command == 'rt' and tweet_dict.get(input_args[1]): end_message = "id" input_data = 'rt ' + tweet_dict[input_args[1]] elif command == 're' and tweet_dict.get(input_args[1]): end_message = "id" input_data = 're ' + tweet_dict[input_args[1]] + " '" + html_escape(input_data[6:]) + "'" elif command == 'new': end_message = "id" if script_options['last_id'] != "": input_data = 'new ' + script_options['last_id'] else: input_data = 'home' elif command == 'home' or command == 'r' or (command == 'favs' and len(input_args) >= 2 and input_args[1].isdigit()): input_data = command if len(input_args) == 3 and tweet_dict.get(input_args[1]) and input_args[2].isdigit(): num = int(input_args[2]) # 200 tweets is the max request limit if num <= 200 and num > 0: input_data += " " + tweet_dict[input_args[1]] + " " + input_args[2] else: input_data += " " + tweet_dict[input_args[1]] elif len(input_args) == 2: if tweet_dict.get(input_args[1]): input_data += " " + tweet_dict[input_args[1]] elif input_args[1].isdigit(): num = int(input_args[1]) # 200 tweets is the max request limit if num <= 200 and num > 0: input_data += " " + input_args[1] end_message = "Done" elif command == 'u' or (command == 'favs' and len(input_args) >= 3): input_data = " ".join(input_args[:2])[1:] if len(input_args) == 4 and tweet_dict.get(input_args[2]) and input_args[3].isdigit(): num = int(input_args[3]) # 200 tweets is the max request limit if num <= 200 and num > 0: input_data += " " + tweet_dict[input_args[2]] + " " + input_args[3] else: input_data += " " + tweet_dict[input_args[2]] elif len(input_args) == 3: if tweet_dict.get(input_args[2]): input_data += " " + tweet_dict[input_args[2]] elif input_args[2].isdigit(): num = int(input_args[2]) # 200 tweets is the max request limit if num <= 200 and num > 0: input_data += " " + input_args[2] end_message = "Done" elif command == 'auth': if len(input_args) == 2: oauth_dance(buffer,input_args[1]) else: oauth_dance(buffer) return weechat.WEECHAT_RC_OK elif command == 'f' or command == 'fo': #L because we are returning a list to be printed later on end_message = "L" if len(input_args) == 3 and tweet_dict.get(input_args[2]): input_data = command + " " + input_args[1] + " " + tweet_dict[input_args[2]] elif len(input_args) == 2: if tweet_dict.get(input_args[1]): input_data = command + " " + script_options['screen_name'] + " " + tweet_dict[input_args[1]] #Your list, not any other users end_message += "Y" else: input_data = input_data[1:] else: input_data = command + " " + script_options['screen_name'] end_message += "Y" if command == 'f': end_message += "Following" else: end_message += "Followers" elif command == 'a': input_data = input_data[1:] end_message = "About" elif command == 'blocks': input_data = input_data[1:] end_message = "LBlock list" elif command == 'fav' and tweet_dict.get(input_args[1]): input_data = 'fav ' + tweet_dict[input_args[1]] weechat.prnt(buffer, "%sYou fave'd the following tweet:" % weechat.prefix("network")) elif command == 'unfav' and tweet_dict.get(input_args[1]): input_data = 'unfav ' + tweet_dict[input_args[1]] weechat.prnt(buffer, "%sYou unfave'd the following tweet:" % weechat.prefix("network")) elif command == 'cnicks': global tweet_nicks_group if tweet_nicks_group[buffer] != "": weechat.nicklist_remove_group(buffer, tweet_nicks_group[buffer]) tweet_nicks_group[buffer] = "" tweet_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Tweet_parse", "weechat.color.nicklist_group", 1) return weechat.WEECHAT_RC_OK elif command == 'help': weechat.command(buffer,"/help twitter") weechat.prnt(buffer, "Exec command /help twitter, check your root buffer") return weechat.WEECHAT_RC_OK elif command == 'clear': weechat.command(buffer,"/buffer clear") return weechat.WEECHAT_RC_OK elif command == 'stream': args = html_escape(input_data[7:]) weechat.prnt(buffer,create_stream("t_stream",args)) return weechat.WEECHAT_RC_OK elif command == 're_home': weechat.prnt(buffer,create_stream("twitter")) return weechat.WEECHAT_RC_OK else: input_data = input_data[1:] end_message = "Done" else: end_message = "id" #esacpe special chars when printing to commandline input_data = 't ' + "'" + html_escape(input_data) + "'" #input_data = 't ' + "'" + html.escape(input_data) + "'" weechat.hook_process("python3 " + SCRIPT_FILE_PATH + " " + script_options["oauth_token"] + " " + script_options["oauth_secret"] + " " + input_data + " " + '"' + str(options) + '"', 10 * 1000, "my_process_cb", str([buffer,end_message])) return weechat.WEECHAT_RC_OK
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")
weechat.prnt(smsbuffer, "<- %s: %s" % (contact, message)) # Delete SMS loc = [] for m in x: sm.DeleteSMS(m['Folder'], m['Location']) return weechat.WEECHAT_RC_OK # plugin registration if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENCE, SCRIPT_DESC, 'shutdown_function', ''): # WeeSMS buffer creation smsbuffer = weechat.buffer_new('weesms', 'buffer_input_cb', '', 'buffer_close_cb', '') weechat.buffer_set(smsbuffer, 'WeeSMS', '- SMS -') # Nick list initialization contacts = weechat.nicklist_add_group(smsbuffer, '', 'contacts', '', 1) nicklist_init() # /reload_contacts command hook = weechat.hook_command('reload_contacts', "Reload CSV phonebook", '', '', '', 'reload_contacts_cb', '') # Initialize Gammu sm = gammu_init() # SMS check function called every 10 seconds weechat.hook_timer(10 * 1000, 0, 0, 'read_sms_cb', '')
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 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)