Exemplo n.º 1
0
def drop(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    player_list_lock.acquire()
    if (name in player_list):
        player_list.remove(name)
        if (qwindow is not None):
            qwindow.set_list(player_list)
        player_list_lock.release()

        ret = create_msg(
            channel,
            "@{:s}: You have been removed from the line!".format(name))
        send_msg(socket, ret)
    else:
        player_list_lock.release()
        ret = create_msg(channel,
                         "@{:s}: You were not in the line!".format(name))
        send_msg(socket, ret)

    save_to_file()
Exemplo n.º 2
0
def eta(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    current_player_lock.acquire()
    if (name == current_player):
        ret = create_msg(
            channel,
            "@{:s}: You are the current player! Go on stream!".format(name))
        send_msg(socket, ret)
    current_player_lock.release()

    player_list_lock.acquire()
    if (name not in player_list):
        player_list_lock.release()
        ret = create_msg(channel,
                         "@{:s}: You are not in the line!".format(name))
        send_msg(socket, ret)
        return
    eta_index = player_list.index(name)
    player_list_lock.release()
    ret = create_msg(
        channel,
        "@{:s}: You are on position #{:d}".format(name, eta_index + 1))
    send_msg(socket, ret)
Exemplo n.º 3
0
def next_player(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    player_list_lock.acquire()
    if (len(player_list) <= 0):
        player_list_lock.release()
        ret = create_msg(channel, "@{:s}: Line is empty!".format(name))
        send_msg(socket, ret)

        player_name = "None"
    else:
        player_name = player_list.pop(0)
        if (qwindow is not None):
            qwindow.set_list(player_list)
        player_list_lock.release()

    player_NNID_lock.acquire()
    try:
        nnid = player_NNID[player_name]['NNID']
    except KeyError:
        nnid = "???"
    try:
        mii_name = player_NNID[player_name]['Mii name']
    except KeyError:
        mii_name = "???"
    player_NNID_lock.release()

    current_player_lock.acquire()
    current_player = player_name
    current_player_lock.release()

    played_list_lock.acquire()
    played_list.append(player_name)
    played_list_lock.release()

    ret = create_msg(
        channel, "@{:s}: Next player: {:s}, NNID: {:s}, Mii name: {:s}".format(
            channel, player_name, nnid, mii_name))
    send_msg(socket, ret)

    if (qwindow is not None):
        qwindow.player_name_line_edit.setText(player_name)
        qwindow.player_NNID_line_edit.setText(nnid)
        qwindow.mii_name_line_edit.setText(mii_name)

    save_to_file()
Exemplo n.º 4
0
def move(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 2):
        ret = create_msg(
            channel, "@{:s}: Usage: !move <player> <position>. "
            "Example: !move bob 1".format(name))
        send_msg(socket, ret)
        return

    player_name = args[0].lower()
    try:
        new_position = int(args[1]) - 1
        if (new_position < 0):
            new_position = 0
    except ValueError:
        ret = create_msg(channel, "@{:s}: Invalid line number!".format(name))
        send_msg(socket, ret)
        return

    player_list_lock.acquire()
    if (player_name not in player_list):
        player_list_lock.release()
        ret = create_msg(channel,
                         "@{:s}: Player not in the line!".format(name))
        send_msg(socket, ret)
        return

    player_list.remove(player_name)
    player_list.insert(new_position, player_name)
    if (qwindow is not None):
        qwindow.set_list(player_list)
    player_list_lock.release()

    ret = create_msg(
        channel,
        "@{:s}: Player set to position {:d}!".format(name, new_position + 1))
    send_msg(socket, ret)

    save_to_file()
Exemplo n.º 5
0
def set_limit_reentry(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 1):
        ret = create_msg(channel,
                         "@{:s}: Usage: !subsonly <ON/OFF>".format(name))
        send_msg(socket, ret)
        return

    if (args[0].lower() in ["on", "yes", "y", "true", "1"]):
        new_limit = True
    elif (args[0].lower() in ["off", "no", "n", "false", "0"]):
        new_limit = False
    else:
        ret = create_msg(channel, "@{:s}: Usage: !limit <ON/OFF>".format(name))
        send_msg(socket, ret)
        return

    limit_reentry_lock.acquire()
    limit_reentry = new_limit
    limit_reentry_lock.release()

    if (qwindow is not None):
        qwindow.update_limit_reentry(new_limit)

    if (new_limit):
        ret = create_msg(
            channel,
            "@{:s}: Line is now limited to once per stream!".format(name))
    else:
        ret = create_msg(
            channel,
            "@{:s}: Line is no longer limited to once per stream!".format(
                name))
    send_msg(socket, ret)

    save_to_file()
Exemplo n.º 6
0
def set_cap(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 1):
        ret = create_msg(
            channel,
            "@{:s}: Usage: '!setcap <number>', 0 for infinity".format(name))
        send_msg(socket, ret)
        return

    try:
        player_list_cap_lock.acquire()
        new_cap = int(args[0])
        if (new_cap <= 0):
            new_cap = None
        if (new_cap == player_list_cap):
            return
        player_list_cap = None
        player_list_cap = new_cap
    except ValueError:
        ret = create_msg(
            channel,
            "@{:s}: Usage: '!setcap <number>', 0 for infinity".format(name))
        send_msg(socket, ret)
    finally:
        player_list_cap_lock.release()

    ret = create_msg(channel,
                     "@{:s}: Line cap set to {:s}!".format(name, str(new_cap)))
    send_msg(socket, ret)

    if (qwindow is not None):
        qwindow.update_line_cap(new_cap)

    save_to_file()
Exemplo n.º 7
0
def swap(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 2):
        ret = create_msg(
            channel, "@{:s}: Usage: !swap <player1> <player2>".format(name))
        send_msg(socket, ret)
        return

    name1 = args[0].lower()
    name2 = args[1].lower()

    player_list_lock.acquire()
    if (name1 not in player_list or name2 not in player_list):
        player_list_lock.release()
        return

    index1 = player_list.index(name1)
    index2 = player_list.index(name2)

    player_list[index1], player_list[index2] = \
        player_list[index2], player_list[index1]
    if (qwindow is not None):
        qwindow.set_list(player_list)
    player_list_lock.release()

    ret = create_msg(
        channel,
        "@{:s}: {:s} and {:s} have exchanged position in the line!".format(
            name, name1, name2))
    send_msg(socket, ret)

    save_to_file()
Exemplo n.º 8
0
def reset_info(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 1):
        ret = create_msg(channel,
                         "@{:s}: Usage: !resetinfo <Twitch name>".format(name))
        send_msg(socket, ret)
        return

    player_name = args[0]

    player_NNID_lock.acquire()
    if (player_name in player_NNID):
        del player_NNID[player_name]
        ret = create_msg(
            channel, "@{!s}: {!s}'s information has been reset!".format(
                name, player_name))
    else:
        ret = create_msg(
            channel, "@{!s}: {!s} did not have any information.".format(
                name, player_name))

    player_NNID_lock.release()
    send_msg(socket, ret)
Exemplo n.º 9
0
def list_entered(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    current_list = []
    player_list_lock.acquire()
    for player_name in player_list:
        current_list.append(player_name)
    player_list_lock.release()
    ret = create_msg(
        channel, "Current player: {:s} Current line: {:s}".format(
            current_player, ", ".join(current_list)))
    send_msg(socket, ret)
Exemplo n.º 10
0
def remove(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 1):
        ret = create_msg(channel,
                         "@{:s}: Usage: !remove <player>".format(name))
        send_msg(socket, ret)
        return

    drop(socket, channel, args[0].lower(), [])
Exemplo n.º 11
0
def reset_list(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (name != channel):
        return

    player_list_lock.acquire()
    player_list = []
    if (qwindow is not None):
        qwindow.set_list(player_list)
    player_list_lock.release()

    ret = create_msg(channel, "@{:s}: Line reset!".format(name))
    send_msg(socket, ret)

    save_to_file()
Exemplo n.º 12
0
def close_list(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (qwindow is not None):
        qwindow.update_line_opened(False)

    line_opened_lock.acquire()
    line_opened = False
    line_opened_lock.release()

    ret = create_msg(channel, "@{:s}: Line is now closed!".format(name))
    send_msg(socket, ret)
Exemplo n.º 13
0
def enter(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    player_NNID_lock.acquire()
    if (len(args) < 2 and name not in player_NNID.keys()):
        player_NNID_lock.release()
        ret = create_msg(
            channel, "@{:s}: Usage: '!enter <NNID> <Mii name>'. "
            "You have not been entered.".format(name))
        send_msg(socket, ret)
        return
    elif (name not in player_NNID.keys()):
        nnid = args[0].replace("<", "").replace(">", "")
        mii_name = args[1].replace("<", "").replace(">", "")
        player_NNID[name] = {'NNID': nnid, 'Mii name': mii_name}
    player_NNID_lock.release()

    line_opened_lock.acquire()
    if (not line_opened):
        line_opened_lock.release()
        ret = create_msg(channel, "@{:s}: Line is not opened".format(name))
        send_msg(socket, ret)
        return
    line_opened_lock.release()

    player_list_cap_lock.acquire()
    player_list_lock.acquire()
    if (player_list_cap is not None and len(player_list) >= player_list_cap):
        player_list_cap_lock.release()
        player_list_lock.release()
        ret = create_msg(channel, "@{:s}: Line is currently full".format(name))
        send_msg(socket, ret)
        return
    player_list_cap_lock.release()
    player_list_lock.release()

    subs_only_lock.acquire()
    if (subs_only and not tags.get('subscriber', False)):
        subs_only_lock.release()
        ret = create_msg(
            channel, "@{:s}: Line is currently subscribers only! "
            "You can subscribe at http://twitch.tv/{:s}/subscribe".format(
                name, channel))
        send_msg(socket, ret)
        return
    subs_only_lock.release()

    limit_reentry_lock.acquire()
    if (limit_reentry):
        played_list_lock.acquire()
        if (name in played_list):
            played_list_lock.release()
            limit_reentry_lock.release()
            ret = create_msg(
                channel, "@{:s}: You have already played this stream, "
                "and the line can currently not be reentered.".format(name))
            send_msg(socket, ret)
            return
        played_list_lock.release()
    limit_reentry_lock.release()

    player_list_lock.acquire()
    if (name not in player_list):
        player_list.append(name)
        if (qwindow is not None):
            qwindow.set_list(player_list)
        ret = create_msg(
            channel,
            "@{:s}: Added to the line at #{:d}".format(name, len(player_list)))
        player_list_lock.release()
        send_msg(socket, ret)
    else:
        player_list_lock.release()
        ret = create_msg(channel, "@{:s}: You are already added".format(name))
        send_msg(socket, ret)

    save_to_file()
Exemplo n.º 14
0
def add(socket, channel, name, args, tags={}):
    global current_player
    global player_list
    global player_list_cap
    global player_NNID
    global line_opened
    global subs_only
    global qwindow
    global limit_reentry
    global played_list

    if (not (name == channel
             or tags.get('user-type', user_type.empty) == user_type.mod)):
        return

    if (len(args) < 1):
        ret = create_msg(
            channel,
            "@{:s}: Usage: '!add <TwitchName> <NNID> <Mii name>'".format(name))
        send_msg(socket, ret)
        return

    player_name = args[0].lower()

    player_NNID_lock.acquire()
    if (len(args) < 3 and player_name not in player_NNID.keys()):
        player_NNID_lock.release()
        ret = create_msg(
            channel,
            "@{:s}: Usage: '!add <TwitchName> <NNID> <Mii name>'".format(name))
        send_msg(socket, ret)
        return
    elif (len(args) >= 3):
        nnid = args[1].replace("<", "").replace(">", "")
        mii_name = args[2].replace("<", "").replace(">", "")
        player_NNID[player_name] = {'NNID': nnid, 'Mii name': mii_name}
    player_NNID_lock.release()

    player_list_lock.acquire()
    if (player_name not in player_list):
        player_list.append(player_name)
        if (qwindow is not None):
            qwindow.set_list(player_list)
        ret = create_msg(
            channel,
            "@{:s}: Added to the line at #{:d}".format(player_name,
                                                       len(player_list)))
        player_list_lock.release()
        send_msg(socket, ret)

        ret2 = create_msg(
            channel,
            "{:s}: {:s} has been added to the line!".format(name, player_name))
        send_msg(socket, ret2)
    else:
        player_list_lock.release()
        ret = create_msg(channel,
                         "@{:s}: You are already added".format(player_name))
        send_msg(socket, ret)

    save_to_file()
Exemplo n.º 15
0
def print_mod_commands(socket, channel, name, args, qwindow=None, tags={}):
    global commands
    ret = create_msg(
        channel,
        "Available commands: " + ", ".join(sorted(list(mod_commands.keys()))))
    send_msg(socket, ret)
Exemplo n.º 16
0
def hello(socket, channel, name, args):
    if len(args) == 0:
        reply = create_msg(channel, "Hello {:s}!".format(name))
    else:
        reply = create_msg(channel, "Hello {:s}!".format(" ".join(args)))
    send_msg(socket, reply)