def _324(server, raw_string, code, server_url, target, data): #channelmodeis data = data.split(None, 1) channel = server.getChannel(data[0]) if not channel: return channel.setModes(common.splitModes(data[1])) if not server.getStash().getChannel(channel.getName()): #Forward the channel's modes as a separate event. server.addEvent(outboundDictionaries.IRC_Channel_Modes(server.getContextID(), server.getName(), channel.getName(), channel.getModeStringFull(), channel.getModeStringSafe(), channel.getModes()))
def _MODE(server, data, target, nickname): modes = common.splitModes(data) if target[0] in GLOBAL.IRC_CHANNEL_PREFIX: channel = server.getChannel(target) if not channel: return channel.updateModes(modes) user_data = channel.getUserData(nickname) if not user_data: user_data = user_functions.generateUserData(user_functions.splitUserData(nickname)) server.addEvent( outboundDictionaries.IRC_Channel_Modes_Update( server.getContextID(), server.getName(), target, modes, data, {}, channel.getModes(), channel.getModeStringFull(), channel.getModeStringSafe(), user_data, ) ) else: server.updateUserModes(modes) server.addEvent( outboundDictionaries.IRC_User_Modes( server.getContextID(), server.getName(), nickname, modes, data, server.getUserModes(), server.getUserModeString(), ) )
def _MODE(server, data, target, user_data): channel = server.getChannel(target) if not channel: return modes = common.splitModes(data) (added_channel_modes, removed_channel_modes, added_user_modes, removed_user_modes) = channel.updateModes(modes) changestring = "" addedstring_post = "" removedstring_post = "" if added_channel_modes or added_user_modes: changestring += "+" for i in added_channel_modes + added_user_modes: changestring += i[0] if i[1]: addedstring_post += " %s" % i[1] if removed_channel_modes or removed_user_modes: changestring += "-" for i in removed_channel_modes + removed_user_modes: changestring += i[0] if i[1]: removedstring_post += " %s" % i[1] user_mode_changes = {} for i in added_user_modes + removed_user_modes: user_list = user_mode_changes.get((i[2], i[0])) if not user_list: user_list = [] user_mode_changes[(i[2], i[0])] = user_list user_list.append(i[1]) for i in user_mode_changes: user_mode_changes[i].sort() if addedstring_post: changestring += addedstring_post if removedstring_post: changestring += " |%s" % removedstring_post elif removedstring_post: changestring += removedstring_post channel_user_data = channel.getUserData(user_data["username"]) if channel_user_data: user_data = channel_user_data server.addEvent( outboundDictionaries.IRC_Channel_Modes_Update( server.getContextID(), server.getName(), channel.getName(), modes, changestring, user_mode_changes, channel.getModes(), channel.getModeStringFull(), channel.getModeStringSafe(), user_data, ) )