Shoutbox

Shoutbox - Wyze

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Shoutbox 
// @namespace    https://realitygaming.fr
// @version      1.1
// @description  Shoutbox - Wyze
// @author       Eh Eh 
// @match        https://realitygaming.fr/chatbox/*
// @grant        none
// ==/UserScript==
var rBot = {
	settings: {
		timeguard: {
			valid: true,
			time: 438
		},
		lottery: {
			valid: false,
			winner: {
				username: undefined,
				id: undefined
			}
		}
	},
	users: {
		newUser: function(id, username){
			this.id = id;
			this.username = username;
			this.wList = API.getWaitListPosition(id) == -1 ? API.getWaitListPosition(id) : API.getWaitListPosition(id) + 1;
			this.join = Date.now();
			rBot.users.listUser[id] = this;
		},
		newDc: function(id){
			this.id = id;
			this.time = Date.now();
			this.wList = rBot.users.getUser(id).wList;
			this.valid = true;
			rBot.users.listDc[id] = this;
			setTimeout(function(){rBot.users.removeDc(id);}, 100000);
		},
		removeUser: function(id){
			delete rBot.users.listUser[id];
		},
		removeDc: function(id){
			delete rBot.users.listDc[id];
		},
		getUser: function(id){
			for(var i in rBot.users.listUser){
				if(id){
					if(rBot.users.listUser[i].id == id){
						return rBot.users.listUser[i];
					}
				}
				else {
					return rBot.users.listUser;
				}
			}
		},
		getDc: function(id){
			for(var i in rBot.users.listDc){
				if(id){
					if(rBot.users.listDc[i].id == id){
						return rBot.users.listDc[i];
					}
				}
				else {
					return rBot.users.listDc;
				}
			}
		},
		listUser: {},
		listDc: {}
	},
	manager_cmd: {
		move: function(un, unt, position){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt && position < 50){
					API.sendChat('[!move] [' + un + '] a modifié la position de ' + unt + ' dans la waitlist !');
					API.moderateMoveDJ(u[i].id, position);
				}
			}
		},
		kill: function(un){
			API.sendChat('[!kill] [' + un + '] a désactivé le bot ! :warning:');
			API.off(API.USER_JOIN);
			API.off(API.USER_LEAVE);
			API.off(API.CHAT);
			API.off(API.ADVANCE);
			rBot = {};
		},
		reload: function(un){
			API.sendChat('[!reload] [' + un + '] a rechargé le bot ! :warning:');
			API.off(API.USER_JOIN);
			API.off(API.USER_LEAVE);
			API.off(API.CHAT);
			API.off(API.ADVANCE);
			rBot = {};
			setTimeout(function(){$.getScript('https://rawgit.com/WayzRG/rBot/master/rBot.js');}, 500);
		},
		clearchat: function(un){
			var msg = $('div#chat-messages').children('div');
			for(var i in msg){
				if(msg.eq(i).data('cid')){
					cid = msg.eq(i).data('cid');
					rBot.deleteChat(cid);
				}
			}
			API.sendChat('[!clearchat] [' + un + '] a supprimé tout les messages du chat ! :warning:');
		},
		grab: function(un){
			API.sendChat('[!grab] [' + un + '] a ajouté une musique dans ma playlist !');
			$("#grab").click();
			$($(".pop-menu.grab").children(".menu").children().children()[0]).mousedown();
		},
		join: function(un){
			API.sendChat('[!join] [' + un + '] m\'a ajouté dans la waitlist !');
			API.djJoin();
		},
		leave: function(un){
			API.sendChat('[!leave] [' + un + '] m\'a retiré dans la waitlist !');
			API.djLeave();
		},
		bot: function(un, message){

			API.sendChat('[!bot] [' + un + '] :warning: ' + message + ' :warning:');
		},
		timeguard: function(un){
			rBot.settings.timeguard.valid = !rBot.settings.timeguard.valid;
			var str = rBot.settings.timeguard.valid ? "activé" : "désactivé";
			API.sendChat('[!timeguard] [' + un + '] a ' + str + ' timeguard !');
		},
		lottery: function(un){
			var alea = Math.floor((API.getWaitList().length)*Math.random());
			var num = (API.getWaitList().length > 3 && alea <= 2) ? alea+2 : alea;
			var u = API.getWaitList();
			for(var i in u){
				if(API.getWaitListPosition(u[i].id) === num){
					API.sendChat('[!lotwin] [' + un + '] @' + u[i].username + ' a gagné la loterie ! Tapez !loterie pour remporter le boost !');
					rBot.settings.lottery.winner.username = u[i].username;
					rBot.settings.lottery.winner.id = u[i].id;
					rBot.settings.lottery.valid = true;
					setTimeout(function(){rBot.settings.lottery.valid = false;}, 300000);
				}
			}
		}
	},
	bouncer_cmd: {
		skip: function(un, position){
			API.sendChat('[!skip] [' + un + '] a passé la musique !');
			var current_dj = API.getDJ().id;
			if(position < 50){
				API.moderateForceSkip();
				setTimeout(function(){API.moderateAddDJ(current_dj);}, 1000);
				setTimeout(function(){API.moderateMoveDJ(current_dj, parseInt(position));}, 1500);
			}
			else{
				API.moderateForceSkip();
			}
		},
		unlock: function(un){
			API.sendChat('[!unlock] [' + un + '] a débloqué la waitlist !');
			API.moderateLockWaitList(false, false);
		},
		remove: function(un, unt){
			var wl = API.getWaitList();
			for(var i in wl){
				if(wl[i].username == unt){
					API.sendChat('[!remove] [' + un + '] a retiré ' + unt + ' de la waitlist !');
					API.moderateRemoveDJ(wl[i].id);
				}
			}
		},
		add: function(un, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					API.sendChat('[!add] [' + un + '] a ajouté ' + unt + ' dans la waitlist !');
					API.moderateAddDJ(u[i].id);
				}
			}
		},
		kick: function(un, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					var username = u[i].username;
					var id = u[i].id;
					API.sendChat('[!kick] [' + un + '] a kick ' + username + ' de la room !');
					setTimeout(function(){API.moderateBanUser(id, 0, -1);}, 1000);
					setTimeout(function(){$('#users-button').click();$('.button.bans').click();setTimeout(function(){ $('.button.room').click(); $('#chat-button').click();}, 100);}, 2000);
					setTimeout(function(){API.moderateUnbanUser(id);}, 3500);
				}
			}
		},
		mute: function(un, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					var username = u[i].username;
					var id = u[i].id;
					API.sendChat('[!mute] [' + un + '] a mute ' + username + ' pendant 15 minutes !');
					API.moderateMuteUser(id, 1, API.MUTE.SHORT);
				}
			}
		},
		unmute: function(un, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					var username = u[i].username;
					var id = u[i].id;
					API.sendChat('[!unmute] [' + un + '] a unmute ' + username + ' !');
					$('#users-button').click();setTimeout(function(){$('.button.mutes').click();setTimeout(function(){$('.button.room').click();$('#chat-button').click();},500);}, 100);
					setTimeout(function(){API.moderateUnmuteUser(id);},800);
				}
			}
		},
		guideline: function(un){
			API.sendChat('[!guideline] [' + un + '] Voici la guideline (règles à respecter) pour le staff : http://goo.gl/8OQxix');
		},
		jointime: function(un, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					var ms = Date.now() - rBot.users.getUser(u[i].id).join,
					// http://stackoverflow.com/a/19700358
					seconds = parseInt((ms/1000)%60),
					minutes = parseInt((ms/(1000*60))%60),
					hours = parseInt((ms/(1000*60*60))%24);

					hours = (hours < 10) ? "0" + hours : hours;
					minutes = (minutes < 10) ? "0" + minutes : minutes;
					seconds = (seconds < 10) ? "0" + seconds : seconds;

					var time = hours + "h:" + minutes + "m:" + seconds + "s";
					API.sendChat('[!jointime] [' + un + '] L\'utilisateur ' + unt + ' est connecté depuis ' + time);
				}
			}
		},
		ban: function(un, id, unt){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == unt){
					if(API.getUser(u[i].id).role < API.getUser(id).role){
						var username = u[i].username;
						var idt = u[i].id;
						API.sendChat('[!ban] [' + un + '] a ban ' + username + ' pendant 1 heure !');
						API.moderateBanUser(idt, 1, API.BAN.HOUR);
					}
					else {
						API.sendChat('[!ban] [' + un + '] Vous n\'avez pas les droits requis pour ban ' + u[i].username + ' !')
					}
				}
			}
		}
	},
	rdj_cmd: {
		rdj: function(un){
			API.sendChat('[!rdj] [' + un + '] Pour devenir Resident DJ, il faut passer des musiques appréciées par la communauté, vous serez prévenu par un membre du staff');
		},
		staff: function(un){
			API.sendChat('[!staff] [' + un + '] Pour devenir staff, il faut respecter les règles, être sérieux mais aussi détendu, et surtout être actif ! Vous serez prévenu par un membre du staff :)');
		},
		tuto: function(un){
			API.sendChat('[!tuto] [' + un + '] Voici une explication de plug.dj en une image : http://i.imgur.com/et4qYhs.jpg');
		},
		lothelp: function(un){
			API.sendChat('[!lothelp] [' + un + '] La loterie est un jeu qui permet de booster une personne en première position dans la liste d\'attente, aléatoirement. Si vous gagnez, tapez !loterie');
		},
		dev: function(un){
			API.sendChat('[!dev] [' + un + '] Le développeur de ce bot est : WAYZ');
		}
	},
	user_cmd: {
		theme: function(un){
			API.sendChat('[!theme] [' + un + '] Tout les styles de musiques sont autorisés sauf : Country, Nightcore, Metal, Jumpstyle, Tekstyle, Hardcore, la musique Classique (chopin et autres) et les sons à caractères racistes !');
		},
		rules: function(un){
			API.sendChat('[!rules] [' + un + '] Voici les règles à respecter : http://goo.gl/uUeNVF');
		},
		op: function(un){
			API.sendChat('[!op] [' + un + '] Voici la liste des musiques interdites : http://goo.gl/eiRdQK');
		},
		emoji: function(un){
			API.sendChat('[!emoji] [' + un + '] Voici la liste des smileys : http://goo.gl/AKDkeo');
		},
		help: function(un){
			API.sendChat('[!help] [' + un + '] Voici la liste des commandes : http://goo.gl/t43eFj');
		},
		adblock: function(un){
			API.sendChat('[!adblock] [' + un + '] Voici l\'add-on adblock qui vous permet de bloquer les publicités ! https://adblockplus.org/fr/');
		},
		support: function(un){
			API.sendChat('[!support] [' + un + '] Voici l\'adresse du support plug.dj : http://support.plug.dj/');
		},
		pic: function(un){
			var media = API.getMedia();
			if(media.format === 1){
				var link = "http://i.ytimg.com/vi/" + media.cid + "/maxresdefault.jpg";
				API.sendChat('[!pic] [' + un + '] Voici le lien de l\'image : ' + link);
			}
		},
		link: function(un){
			var media = API.getMedia();
			if(media.format === 1){
				var base = "http://youtube.com/watch?v=";
				var link = base + media.cid;
				API.sendChat('[!link] [' + un + '] Voici le lien de la musique : ' + link);
			}
			else if(media.format === 2){
				SC.get('/tracks/'+media.cid,function(sound){
					API.sendChat('[!link] [' + un + '] Voici le lien de la musique : ' + sound.permalink_url);
				});
			}
		},
		dc: function(id, un){
			if(rBot.users.getDc(id)){
				if((Date.now() - rBot.users.getDc(id).time) < 600000 && (rBot.users.getDc(id).wList !== 50 || rBot.users.getDc(id).wList !== -1) && rBot.users.getDc(id).valid == true){
					API.sendChat('[!dc] [' + un + '] Voici ton ancienne place lors de la déconnexion : ' + rBot.users.getDc(id).wList);
					API.moderateAddDJ(id);
					setTimeout(function(){API.moderateMoveDJ(id, rBot.users.getDc(id).wList);}, 2000);
					rBot.users.listDc[id].valid = false;
				}
				else {
					API.sendChat('[!dc] [' + un + '] Vous êtes déconnecté depuis trop longtemps ou bien vous n\'étiez pas dans la waitlist');
				}
			}
			else{
				API.sendChat('[!dc] [' + un + '] Je ne vous ai pas vu vous déconnecter !');
			}
		},
		cookie: function(un, unt){
			API.sendChat('[!cookie] [' + unt + '] @' + un + ' vous a envoyé un cookie !');
		},
		kiss: function(un, unt){
			API.sendChat('[!kiss] [' + unt + '] @' + un + ' vous a envoyé un bisous !');
		},
		eta: function(un){
			var u = API.getUsers();
			for(var i in u){
				if(u[i].username == un){
					if(API.getWaitListPosition(u[i].id) !== -1){
						var username = u[i].username;
						var id = u[i].id;
						API.sendChat('[!eta] [' + un + '] Il vous reste environ ' + Math.floor(API.getMedia().duration * 0.017) * (API.getWaitListPosition(id) + 1) + ' minutes à attendre pour être le dj !');
					}
					else {
						API.sendChat('[!eta] [' + un + '] Vous n\'êtes pas dans la waitlist !');
					}
				}
			}
		},
		loterie: function(un){
			if(rBot.settings.lottery.valid){
				if(rBot.settings.lottery.winner.username == un){
					var id = rBot.settings.lottery.winner.id;
					API.sendChat('[!loterie] [' + un + '] Bravo, Vous avez gagné la loterie, vous allez être boosté 2ème de la waitlist !');
					rBot.settings.lottery.valid = false;
					API.moderateAddDJ(id);
					setTimeout(function(){API.moderateMoveDJ(id, 2);}, 500);
				}
				else {
					API.sendChat('[!loterie] [' + un + '] Vous n\'avez pas gagné la loterie !');
				}
			}
			else {
				API.sendChat('[!loterie] [' + un + '] La loterie a expiré ou n\'a pas été lancé !');
			}
		}
	},
	deleteChat: function(id){
		$.ajax({url:'https://plug.dj/_/chat/'+id,type:'DELETE'});
	},
	api_listener: function(){
		API.on(API.USER_JOIN, function(usr){
			new rBot.users.newUser(usr.id, usr.username);
		});
		API.on(API.USER_LEAVE, function(usr){
			new rBot.users.newDc(usr.id);
			rBot.users.removeUser(usr.id);
		});
		API.on(API.CHAT, function(data){
			if(data.message.indexOf('!') == 0){
				var cmds = data.message.split(' ');
				var cmd = cmds[0];
				var attr = data.message.substr(data.message.indexOf(cmds[1]));
				switch(cmd){
					// user_cmd
					case '!ping':
						rBot.deleteChat(data.cid);
						API.sendChat('[!ping] [' + data.un + '] Pong !');
						break;
					case '!theme':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.theme(data.un);
						break;
					case '!rules':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.rules(data.un);
						break;
					case '!op':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.op(data.un);
						break;
					case '!emoji':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.emoji(data.un);
						break;
					case '!help':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.help(data.un);
						break;
					case '!adblock':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.adblock(data.un);
						break;
					case '!support':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.support(data.un);
						break;
					case '!pic':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.pic(data.un);
						break;
					case '!link':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.link(data.un);
						break;
					case '!dc':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.dc(data.uid, data.un);
						break;
					case '!cookie':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.cookie(data.un, attr);
						break;
					case '!kiss':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.kiss(data.un, attr);
						break;
					case '!eta':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.eta(data.un);
						break;
					case '!loterie':
						rBot.deleteChat(data.cid);
						rBot.user_cmd.loterie(data.un);
						break;


					// rdj_cmd
					case '!rdj':
						if(API.hasPermission(data.uid, API.ROLE.DJ)){
							rBot.deleteChat(data.cid);
							rBot.rdj_cmd.rdj(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!staff':
						if(API.hasPermission(data.uid, API.ROLE.DJ)){
							rBot.deleteChat(data.cid);
							rBot.rdj_cmd.staff(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!tuto':
						if(API.hasPermission(data.uid, API.ROLE.DJ)){
							rBot.deleteChat(data.cid);
							rBot.rdj_cmd.tuto(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!lothelp':
						if(API.hasPermission(data.uid, API.ROLE.DJ)){
							rBot.deleteChat(data.cid);
							rBot.rdj_cmd.lothelp(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!dev':
						if(API.hasPermission(data.uid, API.ROLE.DJ)){
							rBot.deleteChat(data.cid);
							rBot.rdj_cmd.dev(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;


					// bouncer_cmd
					case '!unlock':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.unlock(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!skip':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.skip(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!remove':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.remove(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!add':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.add(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!kick':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.kick(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!mute':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.mute(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!unmute':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.unmute(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!guideline':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.guideline(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!jointime':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.jointime(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!ban':
						if(API.hasPermission(data.uid, API.ROLE.BOUNCER)){
							rBot.deleteChat(data.cid);
							rBot.bouncer_cmd.ban(data.un, data.uid, attr);
						} else { rBot.deleteChat(data.cid); }
						break;

					// manager_cmd
					case '!move':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.move(data.un, attr.substr(0, attr.length - 1).trim(), attr.substr(attr.length - 1).trim());
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!kill':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.kill(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!reload':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.reload(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!clearchat':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.clearchat(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!grab':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.grab(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!join':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.join(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!leave':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.leave(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!bot':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.bot(data.un, attr);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!timeguard':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.timeguard(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;
					case '!lotwin':
						if(API.hasPermission(data.uid, API.ROLE.MANAGER)){
							rBot.deleteChat(data.cid);
							rBot.manager_cmd.lottery(data.un);
						} else { rBot.deleteChat(data.cid); }
						break;

					default:
						rBot.deleteChat(data.cid);
						break;
				}
			}
		});
		API.on(API.ADVANCE, function(){
			var u = rBot.users.listUser;
			for(var i in u){
				u[i].wList = API.getWaitListPosition(u[i].id) == -1 ? API.getWaitListPosition(u[i].id) : API.getWaitListPosition(u[i].id) + 1;
			}
			if(rBot.settings.timeguard.valid){
				if(API.getMedia().duration > rBot.settings.timeguard.time){
					API.sendChat(':warning: Musique trop longue, la limite est 7.30 minutes ! Auto-skip dans 7.30 minutes ! :warning:');
					setTimeout(function(){API.moderateForceSkip();}, 438000);
				}
			}
		});
	},
	init: function(){
		if(API.getUser().role >= 3){
			for(var i in API.getUsers()){
				new rBot.users.newUser(API.getUsers()[i].id, API.getUsers()[i].username);
			}
			rBot.api_listener();
			API.sendChat('[rBot] est maintenant en marche ! :)')
		}
		else{
			API.sendChat('[rBot] a besoin d\'être au minimum manager pour fonctionner !');
		}
	}
};

rBot.init();