Beispiel #1
0
def handle_324(irc, args):
    # ['falco', '#test', '+ntlk', '2', 'test']
    chan = args.args[1]
    modes = args.args[2:]
    irc.channels[chan]["modes"] = parse_modes(irc, modes)["add"]
    if "extended-join" in irc.cap:
        irc.send("WHO {} %tcuihnar,314".format(chan))
    else:
        irc.send("WHO {}".format(chan))
Beispiel #2
0
def handle_MODE(irc, args):
    # falco
    # ['+xB']
    # {'add': [], 'rem': [('B', None)]}
    target = args.args[0]
    raw_modes = args.args[1:]
    parsed_modes = parse_modes(irc, raw_modes)

    if target == irc.nick:
        for mode in parsed_modes["add"]:
            irc.modes.append(mode[0])
        for mode in parsed_modes["rem"]:
            irc.modes.remove(mode[0])

    elif target[0] == "#":
        for mode in parsed_modes["add"]:
            if mode[0] not in ["b", "q", "e", "I", "o", "h", "v"]:
                pass
                #irc.channels[target]["modes"].append(mode)
            else:
                if mode[0] in ["o", "v", "h"]:
                    #if irc.channels"][target]["nicks"][mode[1]]
                    irc.channels[target]["nicks"][mode[1]] = mode[0]

        for mode in parsed_modes["rem"]:
            if mode[0] not in ["b", "q", "e", "I", "o", "h", "v"]:
                try:
                    irc.channels[target]["modes"].remove(mode)
                except:
                    pass
            else:
                irc.channels[target]["nicks"][mode[1]] = ""

        if ("o", irc.nick) in parsed_modes["add"]:
            if target in irc.chanmodes:
                doOpStuff(irc, target)
                time.sleep(3)
                irc.send("MODE {} -o {}".format(target, irc.nick))