cb.limitCam… Functions

cb.limitCam_start(message, [allowed_users])

Hides the cam feed from viewers and shows them a custom message. You can optionally pass in an array of usernames of whom you’d like to be able to view the cam.

cb.limitCam_stop()

Stops the camera from being hidden from viewers, returning the broadcaster to public broadcasting.

cb.limitCam_addUsers(allowed_users):

Add an array of usernames to allow viewing of the cam while it is hidden to others. You can use this before, during, or after you start/stop limiting the cam.

cb.limitCam_removeUsers(removed_users):

Remove an array of usernames to no longer be able to view the cam.

cb.limitCam_removeAllUsers():

Remove all viewers from being able to view the cam.

cb.limitCam_userHasAccess(user):

Check if a particular username is in the list of those allowed to view the cam.

cb.limitCam_allUsersWithAccess():

Get an array of the usernames that are allowed to view the cam.

cb.limitCam_isRunning():

Check if the cam is viewable by those not in the allowed list.

Example Usage

You can see an example bot that demonstrates how to use the limitCam api here: https://chaturbate.com/apps/app_details/secret-show/

The source code is also listed here:

cb.settings_choices = [
    {name: 'min_start_tokens', type: 'int', minValue: 1, maxValue: 1000, defaultValue: 100, label: "Cost to Join Before Show Starts"},
    {name: 'min_join_tokens', type: 'int', minValue: 0, maxValue: 1000, defaultValue: 100, label: "Cost to Join During Show. Set to 0 to Disable Joining During Show."},
    {name: 'hide_message', label: 'Cam Message', type: 'str', minLength: 1, maxLength: 256, defaultValue: 'Secret Show in progress! Tip at least 100 tokens to join in on the fun!' },
];

cb.onTip(function(tip) {
    if (!cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), tip['from_user'])) {
        if(!cb.limitCam_isRunning() && parseInt(tip['amount']) >= cb.settings.min_start_tokens) {
            output('Added '+ tip['from_user'] + ' to secret show!');
            cb.limitCam_addUsers([tip['from_user']]);
        }
        if(cb.limitCam_isRunning() && parseInt(tip['amount']) >= cb.settings.min_join_tokens && cb.settings.min_join_tokens > 0) {
            output('Added '+ tip['from_user'] + ' to secret show!');
            cb.limitCam_addUsers([tip['from_user']]);
        }
    }
});

cb.onMessage(function (msg) {
    var message = msg['m'];
    var user = msg['user'];
    var username = "";

    if (cb.room_slug === user && message == '/start' && !cb.limitCam_isRunning()) {
        output(cb.room_slug + ' has started the show!');
        cb.limitCam_start(cb.settings.hide_message);
    }

    if (cb.room_slug === user && message == '/stop' && cb.limitCam_isRunning()) {
        output(cb.room_slug + ' has stopped the show!');
        cb.limitCam_stop();
    }

    if (cb.room_slug === user && message.substring(0, 7) == '/remove' && cb.limitCam_allUsersWithAccess().length > 0 && cb.limitCam_isRunning()) {
        username = message.substring(8, message.length);
        if (cbjs.arrayContains(cb.limitCam_allUsersWithAccess(), username)) {
            cb.limitCam_removeUsers([username]);
            output(cb.room_slug + ' has removed ' + username + ' from the show!');
        }
    }

    if (cb.room_slug === user && message.substring(0, 6) == '/check') {
        username = message.substring(7, message.length);
        if (cb.limitCam_userHasAccess(username)) {
            output(username + " is in the show!");
        }
        else {
            output(username + " is not in the show!");
        }
    }

    if (cb.room_slug === user && message === '/list') {
        var userlist = cb.limitCam_allUsersWithAccess();
        if (userlist.length > 0) {
            output("" + userlist.length + (userlist.length > 1 ? " users" : " user") + " in show: " + cbjs.arrayJoin(userlist, ", "));
        }
        else {
            output("No users in show.");
        }
    }

    if (message[0] == '/') {
        msg['X-Spam'] = true;
    }
    return msg;
});

function output(message) {
    cb.sendNotice(message);
}