Skip to content
This repository has been archived by the owner on Jul 3, 2021. It is now read-only.

Commit

Permalink
BREAKING: humanized / jsdoc more events
Browse files Browse the repository at this point in the history
Fixed / Humanized modBan, modMute, modStaff. Previous usage of objects will break.
  • Loading branch information
thedark1337 committed Mar 10, 2017
1 parent b095179 commit af3b9d7
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 10 deletions.
58 changes: 53 additions & 5 deletions lib/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -1141,10 +1141,10 @@ class PlugAPI extends EventEmitter3 {
this.logger.warning('plugAPI', `plug.dj is going into maintenance in ${data} minutes`);
break;
case PlugAPI.events.MODERATE_STAFF:
for (i = 0; i < data.u.length; i++) {
for (i = 0; i < data.users.length; i++) {
store(this)._room.updateUser({
i: data.u[i].i,
role: data.u[i].p
i: data.users[i].user.id,
role: data.users[i].role
});
}
break;
Expand Down Expand Up @@ -1177,6 +1177,7 @@ class PlugAPI extends EventEmitter3 {
store(this)._authCode = null;
this.connect(slug);
break;
case PlugAPI.events.GIFTED_EARN:
case PlugAPI.events.EARN:
store(this)._room.setEarn(data);
break;
Expand Down Expand Up @@ -3089,7 +3090,7 @@ PlugAPI.prototype.moderateLockWaitList = PlugAPI.prototype.moderateLockBooth;
/**
* This is emitted when the room welcome message has changed.
*
* @event PlugAPI.EVENTS.ROOM_WELCOME_UPDATE
* @event PlugAPI.events.ROOM_WELCOME_UPDATE
*
* @prop {Object} data.raw The raw data object from plug.dj
* @prop {User} data.user The user that updated the welcome message.
Expand All @@ -3100,10 +3101,57 @@ PlugAPI.prototype.moderateLockWaitList = PlugAPI.prototype.moderateLockBooth;
* console.log(`${data.user.username} changed the room welcome message to ${data.welcome}`);
* });
*/
/**
* This is emitted when a user is muted
*
* @event PlugAPI.events.MODERATE_MUTE
* @prop {Object} data.raw The raw data object from plug.dj.
* @prop {String} data.user The username of the user that was muted.
* @prop {User} data.moderator The moderator that muted the user.
* @prop {String} data.duration How long the user was muted for (Short, Medium, Long)
*
* @example
* bot.on(PlugAPI.events.MODERATE_MUTE, (data) => {
* console.log(`${data.moderator.username} has ${data.duration !== 'Unmuted' ? `muted ${data.user} - ${data.duration}` : `unmuted ${data.user}`}`);
* });
*/
/**
* This is emitted when a user is banned
*
* @event PlugAPI.events.MODERATE_BAN
* @prop {Object} data.raw The raw data object from plug.dj.
* @prop {String} data.user The username of the user that was banned.
* @prop {User} data.moderator The moderator that banned the user.
* @prop {String} data.duration How long the user was banned for (Hour, Day, Forever)
*
* @example
* bot.on(PlugAPI.events.MODERATE_BAN, (data) => {
* console.log(`${data.moderator.username} banned ${data.user} ${data.duration}`);
* });
*/
/**
* This event is emitted when staff roles are changed.
*
* @event PlugAPI.events.MODERATE_STAFF
*
* @prop {Object} data.raw The raw object data from plug.dj
* @prop {User} data.moderator The moderator that changed staff roles.
* @prop {Array<User>} data.users an array of users that have had their roles changed. Object is in the format of {role: newRole, user: User Object}
*
* @example
*
* bot.on(PlugAPI.events.MODERATE_STAFF, (data) => {
* if (data.users.length > 0) {
* console.log(`${data.moderator.username} has changed ${data.users.map((item) => {
* return `${item.user.username} to ${item.role}`;
* })}`);
* }
* });
*/
/**
* This is emitted when the room name has changed.
*
* @event PlugAPI.EVENTS.ROOM_NAME_UPDATE
* @event PlugAPI.events.ROOM_NAME_UPDATE
*
* @prop {Object} data.raw The raw data object from plug.dj
* @prop {User} data.user The user that updated the room name.
Expand Down
50 changes: 48 additions & 2 deletions lib/eventObjectTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,38 @@ module.exports = {
},

/**
* @param {{mi: Number, m: String}} data the raw socket data of the modSkip event.
* @param {{m: String, mi: Number, t: Number, d: String}} data The raw socket data of the modBan event
* @param {Room} room PlugAPI's internal room.js functions
* @returns {{raw: Object, user: Object}} A humanized form of the modSkip event sent in from plug.dj
* @returns {{raw: Object, duration: String, moderator: Object, user: Object}} A humanized form of the modBan event sent in from plug.dj
*/
modBan(data, room) {
return {
raw: data,
duration: data.d === 'f' ? 'Forever' : data.d === 'd' ? 'Day' : data.d === 'h' ? 'Hour' : null,
moderator: room.getUser(data.mi),
user: data.t
};
},

/**
* @param {{m: String, mi: Number, i: Number, d: String, r: Number}} data The raw socket data of the modMute event
* @param {Room} room PlugAPI's internal room.js functions
* @returns {{raw: Object, duration: String, reason: Number, moderator: Object, user: Object}} A humanized form of the modMute event sent in from plug.dj
*/
modMute(data, room) {
return {
raw: data,
duration: data.d === 's' ? 'Short' : data.d === 'm' ? 'Medium' : data.d === 'l' ? 'Long' : data.d === 'o' ? 'Unmuted' : null,
moderator: room.getUser(data.mi),
reason: data.r,
user: room.getUser(data.i)
};
},

/**
* @param {{mi: Number, m: String}} data The raw socket data of the modSkip event.
* @param {Room} room PlugAPI's internal room.js functions
* @returns {{raw: Object, user: Object}} A humanized form of the modSkip event sent in from plug.dj
*/
modSkip(data, room) {
return {
Expand All @@ -112,6 +140,24 @@ module.exports = {
};
},

/**
* @param {{mi: Number, m: String, u: Array<Object>}} data The raw socket data of the modStaff event.
* @param {Room} room PlugAPI's internal room.js functions
* @returns {{raw: Object, moderator: Object, users: Array<Object>}} A humanized form of the modStaff event sent in from plug.dj
*/
modStaff(data, room) {
return {
raw: data,
moderator: room.getUser(data.mi),
users: data.u.map((user) => {
return {
role: user.p,
user: room.getUser(user.i)
};
})
};
},

/**
* @param {{i: Number, v: Number}} data the raw socket data of the Vote event.
* @param {Room} room PlugAPI's internal room.js functions
Expand Down
1 change: 1 addition & 0 deletions lib/events.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"FLOOD_CHAT": "floodChat",
"FRIEND_REQUEST": "friendRequest",
"GIFTED": "gifted",
"GIFTED_EARN": "gift",
"GRAB": "grab",
"KILL_SESSION": "killSession",
"MAINT_MODE": "plugMaintenance",
Expand Down
12 changes: 9 additions & 3 deletions lib/room.js
Original file line number Diff line number Diff line change
Expand Up @@ -603,9 +603,15 @@ class Room {
}

setEarn(data) {
this.mySelf.xp = data.xp;
this.mySelf.ep = data.ep;
this.mySelf.level = data.level;
if (isFinite(data.xp) && data.xp > 0) {
this.mySelf.xp = data.xp;
}
if ((isFinite(data.pp) && data.pp > 0) || (isFinite(data) && data > 0)) {
this.mySelf.pp = data.pp || data;
}
if (isFinite(data.level) && data.level > 0) {
this.mySelf.level = data.level;
}
}

/**
Expand Down

0 comments on commit af3b9d7

Please sign in to comment.