Ejemplo n.º 1
0
	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()))
Ejemplo n.º 2
0
    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(),
                )
            )
Ejemplo n.º 3
0
    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,
            )
        )