Explorar o código

Minor improvements

Markus-Rost %!s(int64=6) %!d(string=hai) anos
pai
achega
816e547e53
Modificáronse 8 ficheiros con 99 adicións e 85 borrados
  1. 9 7
      i18n/de.json
  2. 5 7
      i18n/en.json
  3. 6 7
      i18n/fr.json
  4. 9 7
      i18n/nl.json
  5. 7 7
      i18n/pl.json
  6. 7 7
      i18n/pt.json
  7. 7 7
      i18n/tr.json
  8. 49 36
      main.js

+ 9 - 7
i18n/de.json

@@ -3,10 +3,16 @@
 		"MarkusRost"
 	],
 	"lang": "de",
+	"dateformat": "de-DE",
 	"aliase": {
 		"purge": "delete",
 		"hilfe": "help",
-		"umfrage": "poll"
+		"umfrage": "poll",
+		"seite": "page",
+		"suche": "search",
+		"🎲": "random",
+		"zufall": "random",
+		"übersicht": "overview"
 	},
 	"missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
 	"limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n%s, deine Nachricht enthält zu viele Befehle!",
@@ -54,7 +60,8 @@
 		"articles": "Artikel:",
 		"pages": "Seiten insgesamt:",
 		"edits": "Bearbeitungen:",
-		"users": "Aktive Benutzer:"
+		"users": "Aktive Benutzer:",
+		"none": "*Niemand*"
 	},
 	"user": {
 		"gender": {
@@ -62,7 +69,6 @@
 			"male": "Männlich",
 			"female": "Weiblich"
 		},
-		"dateformat": "de-DE",
 		"groups": [
 			["global_bot", "Gamepedia-Bot"],
 			["hydra_staff", "Gamepedia-Mitarbeiter"],
@@ -113,10 +119,6 @@
 		}
 	},
 	"search": {
-		"page": "seite",
-		"search": "suche",
-		"random": "zufall",
-		"overview": "übersicht",
 		"infopage": "Nicht das richtige Ergebnis? Nutze %s für einen direkten Link.",
 		"infosearch": "Nicht das richtige Ergebnis? Nutze %1$s für einen direkten Link oder %2$s für eine Liste mit allen Treffern.",
 		"category": {

+ 5 - 7
i18n/en.json

@@ -4,8 +4,10 @@
 		"violine1101"
 	],
 	"lang": "en",
+	"dateformat": "en-US",
 	"aliase": {
-		"purge": "delete"
+		"purge": "delete",
+		"🎲": "random"
 	},
 	"missingperm": "I'm missing some permissions for this command:",
 	"limit": "🚨 **Stop, you hit a limit!** 🚨\n\n%s, your message contained too many commands!",
@@ -53,7 +55,8 @@
 		"articles": "Articles:",
 		"pages": "Total pages:",
 		"edits": "Edits:",
-		"users": "Active users:"
+		"users": "Active users:",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -61,7 +64,6 @@
 			"male": "Male",
 			"female": "Female"
 		},
-		"dateformat": "en-US",
 		"groups": [
 			["global_bot", "Gamepedia bot"],
 			["hydra_staff", "Gamepedia staff"],
@@ -112,10 +114,6 @@
 		}
 	},
 	"search": {
-		"page": "page",
-		"search": "search",
-		"random": "random",
-		"overview": "overview",
 		"infopage": "Not the correct result? Use %s for a direct link.",
 		"infosearch": "Not the correct result? Use %1$s for a direct link or %2$s for a list of all hits.",
 		"category": {

+ 6 - 7
i18n/fr.json

@@ -4,10 +4,13 @@
 		"JSBM"
 	],
 	"lang": "fr",
+	"dateformat": "fr-FR",
 	"aliase": {
 		"purge": "delete",
 		"sondage": "poll",
-		"aide": "help"
+		"aide": "help",
+		"chercher": "search",
+		"🎲": "random"
 	},
 	"missingperm": "Il me manque certaines permissions pour cette commande :",
 	"limit": "🚨 **Halte ! Vous avez dépassé la limite !** 🚨\n\n%s, votre message contient beaucoup trop de commandes !",
@@ -55,7 +58,8 @@
 		"articles": "Articles :",
 		"pages": "Nombre de pages total :",
 		"edits": "Modifications :",
-		"users": "Utilisateurs actifs :"
+		"users": "Utilisateurs actifs :",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -63,7 +67,6 @@
 			"male": "Homme",
 			"female": "Femme"
 		},
-		"dateformat": "fr-FR",
 		"groups": [
 			["global_bot", "Robot de Gamepedia"],
 			["hydra_staff", "Staff de Gamepedia"],
@@ -114,10 +117,6 @@
 		}
 	},
 	"search": {
-		"page": "page",
-		"search": "chercher",
-		"random": "random",
-		"overview": "overview",
 		"infopage": "Pas le bon résultat ? Utilisez %s pour un lien direct.",
 		"infosearch": "Pas le bon résultat ? Utilisez %1$s pour un lien direct ou %2$s pour une liste de toutes les correspondances.",
 		"category": {

+ 9 - 7
i18n/nl.json

@@ -3,8 +3,14 @@
 		"Jack_McKalling"
 	],
 	"lang": "nl",
+	"dateformat": "nl-NL",
 	"aliase": {
-		"purge": "delete"
+		"purge": "delete",
+		"pagina": "page",
+		"zoeken": "search",
+		"🎲": "random",
+		"willekeurig": "random",
+		"overzicht": "overview"
 	},
 	"missingperm": "Ik mis een aantal permissies voor deze opdracht:",
 	"limit": "🚨 **Stop, je hebt een limiet bereikt!** 🚨\n\n%s, je bericht bevatte te veel opdrachten!",
@@ -52,7 +58,8 @@
 		"articles": "Artikelen:",
 		"pages": "Totaal pagina's:",
 		"edits": "Bewerkingen:",
-		"users": "Actieve gebruikers:"
+		"users": "Actieve gebruikers:",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -60,7 +67,6 @@
 			"male": "Man",
 			"female": "Vrouw"
 		},
-		"dateformat": "nl-NL",
 		"groups": [
 			["global_bot", "Gamepedia bot"],
 			["hydra_staff", "Gamepedia staff"],
@@ -111,10 +117,6 @@
 		}
 	},
 	"search": {
-		"page": "pagina",
-		"search": "zoeken",
-		"random": "willekeurig",
-		"overview": "overzicht",
 		"infopage": "Niet het gewenste resultaat? Gebruik %s voor een rechtstreekse link.",
 		"infosearch": "Niet het gewenste resultaat? Gebruik %1$s voor een rechtstreekse link of %2$s voor een lijst van alle overeenkomsten.",
 		"category": {

+ 7 - 7
i18n/pl.json

@@ -3,11 +3,15 @@
 		"Frisk"
 	],
 	"lang": "pl",
+	"dateformat": "pl-PL",
 	"aliase": {
 		"purge": "delete",
 		"pomoc": "help",
 		"ankieta": "poll",
-		"usuń": "delete"
+		"usuń": "delete",
+		"strona": "page",
+		"szukaj": "search",
+		"🎲": "random"
 	},
 	"missingperm": "Brakuje mi upawnień:",
 	"limit": "🚨 **Chwila moment! Osiągnięto limit!** 🚨\n\n%s, Twoja wiadomość zawiera zbyt wiele komend!",
@@ -55,7 +59,8 @@
 		"articles": "Artykułów:",
 		"pages": "Stron:",
 		"edits": "Edycji:",
-		"users": "Aktywnych użytkowników:"
+		"users": "Aktywnych użytkowników:",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -63,7 +68,6 @@
 			"male": "Mężczyzna",
 			"female": "Kobieta"
 		},
-		"dateformat": "pl-PL",
 		"groups": [
 			["global_bot", "bot Gamepedii"],
 			["hydra_staff", "personel Gamepedii"],
@@ -114,10 +118,6 @@
 		}
 	},
 	"search": {
-		"page": "strona",
-		"search": "szukaj",
-		"random": "random",
-		"overview": "overview",
 		"infopage": "Nie to czego szukałeś? Użyj %s dla bezpośredniego linku.",
 		"infosearch": "Nie to czego szukałeś? Użyj %1$s dla bezpośredniego linku lub %2$s dla listy wszystkich wyników.",
 		"category": {

+ 7 - 7
i18n/pt.json

@@ -4,6 +4,7 @@
 		"Jhonabf"
 	],
 	"lang": "pt",
+	"dateformat": "pt-PT",
 	"aliase": {
 		"purge": "delete",
 		"ajuda": "help",
@@ -13,7 +14,10 @@
 		"excluir": "delete",
 		"purgue": "delete",
 		"purgar": "delete",
-		"limpar": "delete"
+		"limpar": "delete",
+		"página": "page",
+		"pesquisar": "search",
+		"🎲": "random"
 	},
 	"missingperm": "eu estou perdendo algumas permissões para este comando:",
 	"limit": "🚨 **Pare, você atingiu um limite!** 🚨\n\n%s, sua mensagem continha muitos comandos!",
@@ -61,7 +65,8 @@
 		"articles": "Artigos:",
 		"pages": "Total de páginas:",
 		"edits": "Edições:",
-		"users": "Usuário ativos:"
+		"users": "Usuário ativos:",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -69,7 +74,6 @@
 			"male": "Masculino",
 			"female": "Feminino"
 		},
-		"dateformat": "pt-PT",
 		"groups": [
 			["global_bot", "Robô da Gamepedia"],
 			["hydra_staff", "Equipe da Gamepedia"],
@@ -120,10 +124,6 @@
 		}
 	},
 	"search": {
-		"page": "página",
-		"search": "pesquisar",
-		"random": "random",
-		"overview": "overview",
 		"infopage": "Não é o resultado correto? Use %s para um link direto.",
 		"infosearch": "Não é o resultado correto? Use %1$s para um link direto ou %2$s para uma lista de todos os acessos.",
 		"category": {

+ 7 - 7
i18n/tr.json

@@ -3,12 +3,16 @@
 		"Doğukan Karakaş"
 	],
 	"lang": "tr",
+	"dateformat": "tr-TR",
 	"aliase": {
 		"purge": "delete",
 		"temizleme": "delete",
 		"bilgi": "info",
 		"yardım": "help",
-		"anket": "poll"
+		"anket": "poll",
+		"sayfa": "page",
+		"arama": "search",
+		"🎲": "random"
 	},
 	"missingperm": "Bu komutu uygulamak için ihtiyacım olan birkaç izin eksik:",
 	"limit": "🚨 **Dur, limite ulaştın!** 🚨\n\n%s, mesajın çok fazla komut içeriyor!",
@@ -56,7 +60,8 @@
 		"articles": "Makaleler:",
 		"pages": "Toplam sayfalar:",
 		"edits": "Düzenlemeler:",
-		"users": "Aktif kullanıcılar:"
+		"users": "Aktif kullanıcılar:",
+		"none": "*none*"
 	},
 	"user": {
 		"gender": {
@@ -64,7 +69,6 @@
 			"male": "erkek",
 			"female": "kadın"
 		},
-		"dateformat": "tr-TR",
 		"groups": [
 			["global_bot", "Gamepedia bot"],
 			["hydra_staff", "Gamepedia personeli"],
@@ -115,10 +119,6 @@
 		}
 	},
 	"search": {
-		"page": "sayfa",
-		"search": "arama",
-		"random": "random",
-		"overview": "overview",
 		"infopage": "Doğru sonucu alamadın mı? Doğrudan bir bağlantı için %s kullan.",
 		"infosearch": "Doğru sonucu alamadın mı? Doğrudan bir bağlantı için %1$s, tüm isabetlerin listesi için %2$s kullan.",
 		"category": {

+ 49 - 36
main.js

@@ -79,10 +79,10 @@ function setStatus() {
 
 var allSites = [];
 
-function getAllSites() {
+function getAllSites(callback, ...args) {
 	ready.allSites = true;
 	request( {
-		uri: 'https://help.gamepedia.com/api.php?action=allsites&formatversion=2&do=getSiteStats&filter=wikis|wiki_domain,wiki_display_name,wiki_managers,official_wiki,created,ss_good_articles,ss_total_pages,ss_total_edits,ss_active_users&format=json',
+		uri: 'https://help.gamepedia.com/api.php?action=allsites&formatversion=2&do=getSiteStats&filter=wikis|wiki_domain,wiki_display_name,wiki_managers,official_wiki,created&format=json',
 		json: true
 	}, function( error, response, body ) {
 		if ( error || !response || response.statusCode !== 200 || !body || body.status !== 'okay' || !body.data || !body.data.wikis ) {
@@ -95,8 +95,8 @@ function getAllSites() {
 			allSites.filter( site => site.wiki_domain in multiManager ).forEach( function(site) {
 				site.wiki_managers = multiManager[site.wiki_domain].concat(site.wiki_managers).filter( (value, index, self) => self.indexOf(value) === index );
 			} );
-			allSites.filter( site => site.wiki_managers.length === 0 ).forEach( site => site.wiki_managers.push('MediaWiki default') );
 		}
+		if ( callback ) callback(...args);
 	} );
 }
 
@@ -363,6 +363,11 @@ function cmd_help(lang, msg, args, line) {
 				msg.replyMsg( lang.help.noadmin );
 			}
 		}
+		else if ( args[0].toLowerCase() === 'minecraft' ) {
+			var cmdlist = '<' + minecraft[lang.lang].link + '>\n' + cmds.filter( cmd => cmd.minecraft && !cmd.hide ).map( cmd => cmdintro + cmd.cmd + '`\n\t' + cmd.desc ).join('\n');
+			cmdlist = cmdlist.replaceSave( /@mention/g, '@' + ( msg.channel.type === 'text' ? msg.guild.me.displayName : client.user.username ) );
+			msg.sendChannel( cmdlist, {split:true} );
+		}
 		else {
 			var cmdlist = cmds.filter( cmd => cmd.cmd.split(' ')[0] === args[0].toLowerCase() && !cmd.unsearchable && ( msg.channel.type !== 'text' || !cmd.admin || msg.isAdmin() ) && ( !cmd.minecraft || isMinecraft ) ).map( cmd => cmdintro + cmd.cmd + '`\n\t' + cmd.desc ).join('\n');
 			cmdlist = cmdlist.replaceSave( /@mention/g, '@' + ( msg.channel.type === 'text' ? msg.guild.me.displayName : client.user.username ) );
@@ -483,7 +488,7 @@ function cmd_test(lang, msg, args, line) {
 				var ping = ( then - now ) + 'ms';
 				if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !( body instanceof Object ) ) {
 					if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-						console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+						console.log( '- This wiki doesn\'t exist!' );
 						ping += ' <:unknown_wiki:505887262077353984>';
 					}
 					else {
@@ -599,26 +604,30 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 		msg.reactEmoji('⚠');
 	}
 	var invoke = title.split(' ')[0].toLowerCase();
+	var aliasInvoke = ( lang.aliase[invoke] || invoke );
 	var args = title.split(' ').slice(1);
 	
 	var mclang = minecraft[lang.lang];
-	var aliasInvoke = ( mclang.aliase[invoke] || invoke );
-	if ( !msg.notminecraft && wiki === mclang.link && ( aliasInvoke in minecraftcmdmap || invoke.startsWith( '/' ) ) ) {
-		if ( aliasInvoke in minecraftcmdmap ) minecraftcmdmap[aliasInvoke](lang, mclang, msg, args, title, cmd, querystring, fragment, reaction, spoiler);
+	var mcaliasInvoke = ( mclang.aliase[invoke] || invoke );
+	if ( !msg.notminecraft && wiki === mclang.link && ( mcaliasInvoke in minecraftcmdmap || invoke.startsWith( '/' ) ) ) {
+		if ( mcaliasInvoke in minecraftcmdmap ) minecraftcmdmap[mcaliasInvoke](lang, mclang, msg, args, title, cmd, querystring, fragment, reaction, spoiler);
 		else cmd_befehl(lang, mclang, msg, invoke.substring(1), args, title, cmd, querystring, fragment, reaction, spoiler);
 	}
-	else if ( ( invoke === 'random' || invoke === '🎲' || invoke === lang.search.random ) && !args.join('') && !linksuffix ) cmd_random(lang, msg, wiki, reaction, spoiler);
-	else if ( ( invoke === 'overview' || invoke === lang.search.overview ) && !args.join('') && !linksuffix && wiki.endsWith( '.gamepedia.com/' ) ) cmd_overview(lang, msg, wiki, reaction, spoiler);
-	else if ( invoke === 'page' || invoke === lang.search.page ) {
+	else if ( aliasInvoke === 'random' && !args.join('') && !linksuffix ) cmd_random(lang, msg, wiki, reaction, spoiler);
+	else if ( aliasInvoke === 'overview' && !args.join('') && !linksuffix && wiki.endsWith( '.gamepedia.com/' ) ) {
+		if ( allSites.some( site => 'https://' + site.wiki_domain + '/' === wiki ) ) cmd_overview(lang, msg, wiki, reaction, spoiler);
+		else getAllSites(cmd_overview, lang, msg, wiki, reaction, spoiler);
+	}
+	else if ( aliasInvoke === 'page' ) {
 		msg.sendChannel( spoiler + '<' + wiki.toLink() + args.join('_').toTitle() + linksuffix + '>' + spoiler );
 		if ( reaction ) reaction.removeEmoji();
 	}
-	else if ( invoke === 'search' || invoke === lang.search.search ) {
+	else if ( aliasInvoke === 'search' ) {
 		linksuffix = ( linksuffix.startsWith( '?' ) ? '&' + linksuffix.substring(1) : linksuffix );
 		msg.sendChannel( spoiler + '<' + wiki.toLink() + 'Special:Search?search=' + args.join(' ').toSearch() + linksuffix + '>' + spoiler );
 		if ( reaction ) reaction.removeEmoji();
 	}
-	else if ( invoke === 'diff' && args.join('') ) cmd_diff(lang, msg, args, wiki, reaction, spoiler);
+	else if ( aliasInvoke === 'diff' && args.join('') ) cmd_diff(lang, msg, args, wiki, reaction, spoiler);
 	else {
 		var noRedirect = ( /(?:^|&)redirect=no(?:&|$)/.test(querystring) || /(?:^|&)action=(?!view(?:&|$))/.test(querystring) );
 		request( {
@@ -628,7 +637,7 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 			if ( body && body.warnings ) log_warn(body.warnings);
 			if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query ) {
 				if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-					console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+					console.log( '- This wiki doesn\'t exist!' );
 					msg.reactEmoji('nowiki');
 				}
 				else {
@@ -908,7 +917,7 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 			if ( body && body.warnings ) log_warn(body.warnings);
 			if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query || !body.query.blocks ) {
 				if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-					console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+					console.log( '- This wiki doesn\'t exist!' );
 					msg.reactEmoji('nowiki');
 				}
 				else if ( body && body.error && ( body.error.code === 'param_ip' || body.error.code === 'cidrtoobroad' ) ) {
@@ -950,14 +959,14 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 				if ( !querypage.noRedirect || ( querypage.missing === undefined && querypage.ns !== -1 ) ) namespace = contribs;
 				var blocks = body.query.blocks.map( function(block) {
 					var isBlocked = false;
-					var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.user.dateformat, timeoptions);
+					var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.dateformat, timeoptions);
 					var blockexpiry = block.expiry;
 					if ( blockexpiry === 'infinity' ) {
 						blockexpiry = lang.user.block.until_infinity;
 						isBlocked = true;
 					} else if ( blockexpiry ) {
 						if ( Date.parse(blockexpiry) > Date.now() ) isBlocked = true;
-						blockexpiry = new Date(blockexpiry).toLocaleString(lang.user.dateformat, timeoptions);
+						blockexpiry = new Date(blockexpiry).toLocaleString(lang.dateformat, timeoptions);
 					}
 					if ( isBlocked ) return [lang.user.block.header.replaceSave( '%s', block.user ), lang.user.block.text.replaceSave( '%1$s', blockedtimestamp ).replaceSave( '%2$s', blockexpiry ).replaceSave( '%3$s', '[[User:' + block.by + '|' + block.by + ']]' ).replaceSave( '%4$s', block.reason )];
 				} ).filter( block => block !== undefined );
@@ -1026,7 +1035,7 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 			if ( body && body.warnings ) log_warn(body.warnings);
 			if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query || !body.query.users[0] ) {
 				if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-					console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+					console.log( '- This wiki doesn\'t exist!' );
 					msg.reactEmoji('nowiki');
 				}
 				else {
@@ -1078,27 +1087,29 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 						default: 
 							gender.push(lang.user.gender.unknown);
 					}
-					var registration = [lang.user.info.registration, new Date(body.query.users[0].registration).toLocaleString(lang.user.dateformat, timeoptions)];
+					var registration = [lang.user.info.registration, new Date(body.query.users[0].registration).toLocaleString(lang.dateformat, timeoptions)];
 					var editcount = [lang.user.info.editcount, body.query.users[0].editcount];
 					var groups = body.query.users[0].groups;
 					var group = [lang.user.info.group];
 					for ( var i = 0; i < lang.user.groups.length; i++ ) {
 						if ( groups.includes( lang.user.groups[i][0] ) ) {
 							var thisSite = allSites.find( site => site.wiki_domain === body.query.general.servername );
-							if ( lang.user.groups[i][0] === 'hydra_staff' && thisSite && thisSite.wiki_managers.includes( username ) ) group.push(lang.user.manager);
+							if ( lang.user.groups[i][0] === 'hydra_staff' && thisSite && thisSite.wiki_managers.includes( username ) ) {
+								group.push(lang.user.manager);
+							}
 							else group.push(lang.user.groups[i][1]);
 							break;
 						}
 					}
 					var isBlocked = false;
-					var blockedtimestamp = new Date(body.query.users[0].blockedtimestamp).toLocaleString(lang.user.dateformat, timeoptions);
+					var blockedtimestamp = new Date(body.query.users[0].blockedtimestamp).toLocaleString(lang.dateformat, timeoptions);
 					var blockexpiry = body.query.users[0].blockexpiry;
 					if ( blockexpiry === 'infinity' ) {
 						blockexpiry = lang.user.block.until_infinity;
 						isBlocked = true;
 					} else if ( blockexpiry ) {
 						var blockexpirydate = blockexpiry.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2,3})/, '$1-$2-$3T$4:$5:$6Z');
-						blockexpiry = new Date(blockexpirydate).toLocaleString(lang.user.dateformat, timeoptions);
+						blockexpiry = new Date(blockexpirydate).toLocaleString(lang.dateformat, timeoptions);
 						if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 					}
 					var blockedby = '[[User:' + body.query.users[0].blockedby + '|' + body.query.users[0].blockedby + ']]';
@@ -1224,7 +1235,7 @@ function cmd_diff(lang, msg, args, wiki, reaction, spoiler) {
 						}
 					}
 					if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-						console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+						console.log( '- This wiki doesn\'t exist!' );
 						msg.reactEmoji('nowiki');
 					}
 					else if ( noerror ) {
@@ -1355,7 +1366,7 @@ function cmd_diffsend(lang, msg, args, wiki, reaction, spoiler, compare) {
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query ) {
 			if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-				console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
 			}
 			else {
@@ -1384,7 +1395,7 @@ function cmd_diffsend(lang, msg, args, wiki, reaction, spoiler, compare) {
 					var diff = revisions[0].revid;
 					var oldid = ( revisions[1] ? revisions[1].revid : 0 );
 					var editor = [lang.diff.info.editor, ( revisions[0].userhidden !== undefined ? lang.diff.hidden : revisions[0].user )];
-					var timestamp = [lang.diff.info.timestamp, new Date(revisions[0].timestamp).toLocaleString(lang.user.dateformat, timeoptions)];
+					var timestamp = [lang.diff.info.timestamp, new Date(revisions[0].timestamp).toLocaleString(lang.dateformat, timeoptions)];
 					var difference = revisions[0].size - ( revisions[1] ? revisions[1].size : 0 );
 					var size = [lang.diff.info.size, lang.diff.info.bytes.replace( '%s', ( difference > 0 ? '+' : '' ) + difference )];
 					var comment = [lang.diff.info.comment, ( revisions[0].commenthidden !== undefined ? lang.diff.hidden : ( revisions[0].comment ? revisions[0].comment.toFormatting(msg.showEmbed(), wiki, title) : lang.diff.nocomment ) )];
@@ -1582,7 +1593,7 @@ function cmd_random(lang, msg, wiki, reaction, spoiler) {
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query || !body.query.pages ) {
 			if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-				console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
 			}
 			else {
@@ -1623,13 +1634,13 @@ function cmd_random(lang, msg, wiki, reaction, spoiler) {
 
 function cmd_overview(lang, msg, wiki, reaction, spoiler) {
 	request( {
-		uri: wiki + 'api.php?action=query&meta=siteinfo&siprop=general&titles=Special:Statistics&format=json',
+		uri: wiki + 'api.php?action=query&meta=siteinfo&siprop=general|statistics&titles=Special:Statistics&format=json',
 		json: true
 	}, function( error, response, body ) {
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( error || !response || response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query || !body.query.pages ) {
 			if ( response && response.request && response.request.uri && response.request.uri.href === 'https://www.gamepedia.com/' ) {
-				console.log( '- This wiki doesn\'t exist! ' + ( error || body && body.error && body.error.info ) );
+				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
 			}
 			else {
@@ -1641,24 +1652,24 @@ function cmd_overview(lang, msg, wiki, reaction, spoiler) {
 			var site = allSites.find( site => site.wiki_domain === body.query.general.servername );
 			
 			var name = [lang.overview.name, site.wiki_display_name];
-			var created = [lang.overview.created, new Date(parseInt(site.created + '000', 10)).toLocaleString(lang.user.dateformat, timeoptions)];
+			var created = [lang.overview.created, new Date(parseInt(site.created + '000', 10)).toLocaleString(lang.dateformat, timeoptions)];
 			var manager = [lang.overview.manager, site.wiki_managers];
 			var official = [lang.overview.official, ( site.official_wiki ? lang.overview.yes : lang.overview.no )];
-			var articles = [lang.overview.articles, site.ss_good_articles];
-			var pages = [lang.overview.pages, site.ss_total_pages];
-			var edits = [lang.overview.edits, site.ss_total_edits];
-			var users = [lang.overview.users, site.ss_active_users];
+			var articles = [lang.overview.articles, body.query.statistics.articles];
+			var pages = [lang.overview.pages, body.query.statistics.pages];
+			var edits = [lang.overview.edits, body.query.statistics.edits];
+			var users = [lang.overview.users, body.query.statistics.activeusers];
 			
 			var title = body.query.pages['-1'].title;
 			var pagelink = wiki.toLink() + title.toTitle();
 			if ( msg.showEmbed() ) {
 				var text = '<' + pagelink + '>';
 				var managerlist = manager[1].map( manager => '[' + manager + '](' + wiki.toLink() + 'User:' + manager.toTitle(true) + ') ([' + lang.overview.talk + '](' + wiki.toLink() + 'User_talk:' + manager.toTitle(true) + '))' ).join('\n');
-				var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( title.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo ).addField( name[0], name[1], true ).addField( created[0], created[1], true ).addField( manager[0], managerlist, true ).addField( official[0], official[1], true ).addField( articles[0], articles[1], true ).addField( pages[0], pages[1], true ).addField( edits[0], edits[1], true ).addField( users[0], users[1], true ).setTimestamp( client.readyTimestamp ).setFooter( lang.overview.inaccurate );
+				var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( title.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo ).addField( name[0], name[1], true ).addField( created[0], created[1], true ).addField( manager[0], ( managerlist || lang.overview.none ), true ).addField( official[0], official[1], true ).addField( articles[0], articles[1], true ).addField( pages[0], pages[1], true ).addField( edits[0], edits[1], true ).addField( users[0], users[1], true ).setTimestamp( client.readyTimestamp ).setFooter( lang.overview.inaccurate );
 			}
 			else {
 				var embed = {};
-				var text = '<' + pagelink + '>\n\n' + name.join(' ') + '\n' + created.join(' ') + '\n' + manager[0] + ' ' + manager[1].join(', ') + '\n' + official.join(' ') + '\n' + articles.join(' ') + '\n' + pages.join(' ') + '\n' + edits.join(' ') + '\n' + users.join(' ') + '\n\n*' + lang.overview.inaccurate + '*';
+				var text = '<' + pagelink + '>\n\n' + name.join(' ') + '\n' + created.join(' ') + '\n' + manager[0] + ' ' + ( manager[1].join(', ') || lang.overview.none ) + '\n' + official.join(' ') + '\n' + articles.join(' ') + '\n' + pages.join(' ') + '\n' + edits.join(' ') + '\n' + users.join(' ') + '\n\n*' + lang.overview.inaccurate + '*';
 			}
 			
 			msg.sendChannel( spoiler + text + spoiler, embed );
@@ -2125,7 +2136,7 @@ String.prototype.hasPrefix = function(flags = '') {
 };
 
 client.on( 'message', msg => {
-	if ( stop || !msg.content.hasPrefix('m') || msg.webhookID || msg.author.id === client.user.id ) return;
+	if ( stop || msg.type !== 'DEFAULT' || !msg.content.hasPrefix('m') || msg.webhookID || msg.author.id === client.user.id ) return;
 	
 	var cont = msg.content;
 	var author = msg.author;
@@ -2270,7 +2281,9 @@ client.login(process.env.token).catch( error => log_error(error, true, 'LOGIN-')
 client.on( 'error', error => log_error(error, true) );
 client.on( 'warn', warning => log_warn(warning, false) );
 
-if ( isDebug ) client.on( 'debug', debug => console.log( '- Debug: ' + debug ) );
+if ( isDebug ) client.on( 'debug', debug => {
+	if ( isDebug ) console.log( '- Debug: ' + debug );
+} );
 
 
 function log_error(error, isBig = false, type = '') {