rooms[room].joinRoom(socket);
}
});
+ socket.on('kick', function(baduser, callback) {
+ if (socket.roomname && typeof baduser === 'string' && typeof callback === 'function') {
+ rooms[socket.roomname].kick(baduser, socket.nickname, callback);
+ }
+ });
socket.on('loggedin', function(callback) {
if (typeof callback !== 'function') {
return;
addUser(socket, true);
};
+ // Kick a user
+ this.kick = function(baduser, executor, callback) {
+ usersdb.hget('user:'+executor, 'role', function (err, role) {
+ if (role > 0) { // Check role
+ if (usersData[baduser]) {
+ var notice = 'you have been kicked by '+executor+'.';
+ var recipient = sockets[baduser];
+ recipient.emit('chatmsg', notice, 'binb', baduser);
+ recipient.disconnect();
+ }
+ return;
+ }
+ callback();
+ });
+ };
+
// A user has left (DCed, etc.)
this.removeUser = function(nickname) {
// Delete the references
return sendLoadTrack();
}
playedtracks.push(res);
- songsdb.hmget('song:'+res, 'artistName', 'trackName', 'collectionName', 'previewUrl',
- 'artworkUrl60', 'trackViewUrl', function(e, replies) {
+ songsdb.hmget('song:'+res, 'artistName', 'trackName', 'collectionName',
+ 'previewUrl', 'artworkUrl60', 'trackViewUrl', function(e, replies) {
artistName = replies[0];
artist = artistName.toLowerCase();
trackName = replies[1];
this.unignore = function(baduser, executor) {
if (usersData[baduser]) {
- // Inform the wicked player that he/she is no longer ignored
- var recipient = sockets[baduser];
+ // Inform the bad player that he/she is no longer ignored
var notice = executor+' has stopped ignoring you.';
+ var recipient = sockets[baduser];
recipient.emit('chatmsg', notice, 'binb', baduser);
}
};
, jplayer
, nickname
, pvtmsgto
+ , subscriber = false
, roundpoints = 0
, socket
, stopanimation = false
socket.emit('loggedin', function(data) {
if (data) {
nickname = data;
+ subscriber = true;
return socket.emit('joinroom', roomname);
}
joinAnonymously();
});
};
+ // Kick a player
+ var kick = function(baduser, outcome) {
+ socket.emit('kick', baduser, function() {
+ outcome.append('you are not allowed to kick a player.');
+ addChatEntry(outcome);
+ });
+ };
+
var loadTrack = function(previewUrl) {
jplayer.jPlayer('mute');
jplayer.jPlayer('setMedia', {m4a: previewUrl});
outcome.text('(From binb): '+argument+' is already ignored.');
break;
case '/kick':
- // TO DO
+ if (subscriber) {
+ return kick(argument, outcome);
+ }
+ outcome.append('you are not allowed to kick a player.');
break;
case '/unignore':
if (ignoredplayers[argument]) {
}
}
else {
- outcome.append('unknown command '+command+'.');
+ outcome.text('(From binb): unknown command '+command+'.');
}
addChatEntry(outcome);
};