1
0
Эх сурвалжийг харах

show description for some special pages

Markus-Rost 5 жил өмнө
parent
commit
04d0f3f749
10 өөрчлөгдсөн 78 нэмэгдсэн , 33 устгасан
  1. 1 2
      i18n/de.json
  2. 0 1
      i18n/en.json
  3. 0 1
      i18n/fr.json
  4. 0 1
      i18n/nl.json
  5. 0 1
      i18n/pl.json
  6. 0 1
      i18n/pt.json
  7. 0 1
      i18n/ru.json
  8. 0 1
      i18n/tr.json
  9. 76 23
      main.js
  10. 1 1
      package.json

+ 1 - 2
i18n/de.json

@@ -48,7 +48,6 @@
 		"left": "%1$s hat den Sprachkanal \"%2$s\" verlassen."
 		"left": "%1$s hat den Sprachkanal \"%2$s\" verlassen."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "für dieses Wiki ist noch keine Übersicht verfügbar.",
 		"inaccurate": "Statistiken können ungenau sein",
 		"inaccurate": "Statistiken können ungenau sein",
 		"name": "Vollständiger Name:",
 		"name": "Vollständiger Name:",
 		"created": "Erstellt:",
 		"created": "Erstellt:",
@@ -169,7 +168,7 @@
 		"admin": "Diese Befehle können nur Administratoren ausführen:",
 		"admin": "Diese Befehle können nur Administratoren ausführen:",
 		"noadmin": "du benötigst die `Server verwalten`-Berechtigung für diese Befehle!",
 		"noadmin": "du benötigst die `Server verwalten`-Berechtigung für diese Befehle!",
 		"pause": "**Ich bin auf diesem Server derzeit pausiert!**\nNur diese Befehle können ausgeführt werden:",
 		"pause": "**Ich bin auf diesem Server derzeit pausiert!**\nNur diese Befehle können ausgeführt werden:",
-		"footer": "Falls du ein ungewolltest Ergebnis bekommen hast, kannst du mit 🗑 auf meine Nachricht reagieren und ich werde sie löschen.",
+		"footer": "Falls du ein ungewolltes Ergebnis bekommen hast, kannst du mit 🗑 auf meine Nachricht reagieren und ich werde sie löschen.",
 		"list": [
 		"list": [
 			{ "cmd": "<Suchbegriff>", "desc": "Ich antworte mit einem Link auf einen passenden Artikel im Wiki.", "unsearchable": true },
 			{ "cmd": "<Suchbegriff>", "desc": "Ich antworte mit einem Link auf einen passenden Artikel im Wiki.", "unsearchable": true },
 			{ "cmd": "!<Wiki> <Suchbegriff>", "desc": "Ich antworte mit einem Link auf einen passenden Artikel im angegebenen Gamepedia-Wiki: `https://<Wiki>.gamepedia.com/`", "unsearchable": true },
 			{ "cmd": "!<Wiki> <Suchbegriff>", "desc": "Ich antworte mit einem Link auf einen passenden Artikel im angegebenen Gamepedia-Wiki: `https://<Wiki>.gamepedia.com/`", "unsearchable": true },

+ 0 - 1
i18n/en.json

@@ -43,7 +43,6 @@
 		"left": "%1$s left the voice channel \"%2$s\"."
 		"left": "%1$s left the voice channel \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "there is no overview available for this wiki yet.",
 		"inaccurate": "Statistics may be inaccurate",
 		"inaccurate": "Statistics may be inaccurate",
 		"name": "Full name:",
 		"name": "Full name:",
 		"created": "Created:",
 		"created": "Created:",

+ 0 - 1
i18n/fr.json

@@ -46,7 +46,6 @@
 		"left": "%1$s a quitté le salon vocal \"%2$s\"."
 		"left": "%1$s a quitté le salon vocal \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "il n'y a pas encore d'aperçu disponible pour ce wiki.",
 		"inaccurate": "Les statistiques peuvent être inexactes",
 		"inaccurate": "Les statistiques peuvent être inexactes",
 		"name": "Nom complet :",
 		"name": "Nom complet :",
 		"created": "Créé :",
 		"created": "Créé :",

+ 0 - 1
i18n/nl.json

@@ -46,7 +46,6 @@
 		"left": "%1$s verlaatte het spraakkanaal \"%2$s\"."
 		"left": "%1$s verlaatte het spraakkanaal \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "voor deze wiki is nog geen overzicht beschikbaar.",
 		"inaccurate": "Statistieken zijn mogelijk inaccuraat",
 		"inaccurate": "Statistieken zijn mogelijk inaccuraat",
 		"name": "Volledige naam:",
 		"name": "Volledige naam:",
 		"created": "Gecreëerd:",
 		"created": "Gecreëerd:",

+ 0 - 1
i18n/pl.json

@@ -47,7 +47,6 @@
 		"left": "%1$s wyszedł z \"%2$s\"."
 		"left": "%1$s wyszedł z \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "brak dostępnych informacji na temat wiki.",
 		"inaccurate": "Statystuki mogą być niedokładne",
 		"inaccurate": "Statystuki mogą być niedokładne",
 		"name": "Pełna nazwa:",
 		"name": "Pełna nazwa:",
 		"created": "Stworzona:",
 		"created": "Stworzona:",

+ 0 - 1
i18n/pt.json

@@ -53,7 +53,6 @@
 		"left": "%1$s deixou o canal de voz \"%2$s\"."
 		"left": "%1$s deixou o canal de voz \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "para está wiki ainda não há uma visão geral disponível.",
 		"inaccurate": "Estatísticas podem ser imprecisas",
 		"inaccurate": "Estatísticas podem ser imprecisas",
 		"name": "Nome completo:",
 		"name": "Nome completo:",
 		"created": "Criado:",
 		"created": "Criado:",

+ 0 - 1
i18n/ru.json

@@ -44,7 +44,6 @@
 		"left": "%1$s покинул голосовой канал \"%2$s\"."
 		"left": "%1$s покинул голосовой канал \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "there is no overview available for this wiki yet.",
 		"inaccurate": "Статистика может быть неточной ",
 		"inaccurate": "Статистика может быть неточной ",
 		"name": "Full name:",
 		"name": "Full name:",
 		"created": "Создано:",
 		"created": "Создано:",

+ 0 - 1
i18n/tr.json

@@ -48,7 +48,6 @@
 		"left": "%1$s ses kanalından ayrıldı \"%2$s\"."
 		"left": "%1$s ses kanalından ayrıldı \"%2$s\"."
 	},
 	},
 	"overview": {
 	"overview": {
-		"missing": "Bu wiki için henüz bir genel bakış yok.",
 		"inaccurate": "İstatistikler yanlış olabilir",
 		"inaccurate": "İstatistikler yanlış olabilir",
 		"name": "Tam isim:",
 		"name": "Tam isim:",
 		"created": "Oluşturuldu:",
 		"created": "Oluşturuldu:",

+ 76 - 23
main.js

@@ -615,7 +615,7 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 		else cmd_befehl(lang, mclang, msg, invoke.substring(1), 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 ( aliasInvoke === 'random' && !args.join('') && !linksuffix ) cmd_random(lang, msg, wiki, reaction, spoiler);
 	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/' ) ) {
+	else if ( aliasInvoke === 'overview' && !args.join('') && !linksuffix ) {
 		if ( allSites.some( site => 'https://' + site.wiki_domain + '/' === wiki ) ) cmd_overview(lang, msg, wiki, reaction, spoiler);
 		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 getAllSites(cmd_overview, lang, msg, wiki, reaction, spoiler);
 	}
 	}
@@ -628,7 +628,7 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 		msg.sendChannel( spoiler + '<' + wiki.toLink() + 'Special:Search?search=' + args.join(' ').toSearch() + linksuffix + '>' + spoiler );
 		msg.sendChannel( spoiler + '<' + wiki.toLink() + 'Special:Search?search=' + args.join(' ').toSearch() + linksuffix + '>' + spoiler );
 		if ( reaction ) reaction.removeEmoji();
 		if ( reaction ) reaction.removeEmoji();
 	}
 	}
-	else if ( aliasInvoke === 'diff' && args.join('') ) cmd_diff(lang, msg, args, wiki, reaction, spoiler);
+	else if ( aliasInvoke === 'diff' && args.join('') && !linksuffix ) cmd_diff(lang, msg, args, wiki, reaction, spoiler);
 	else {
 	else {
 		var noRedirect = ( /(?:^|&)redirect=no(?:&|$)/.test(querystring) || /(?:^|&)action=(?!view(?:&|$))/.test(querystring) );
 		var noRedirect = ( /(?:^|&)redirect=no(?:&|$)/.test(querystring) || /(?:^|&)action=(?!view(?:&|$))/.test(querystring) );
 		request( {
 		request( {
@@ -781,8 +781,14 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 							if ( reaction ) reaction.removeEmoji();
 							if ( reaction ) reaction.removeEmoji();
 						} );
 						} );
 					}
 					}
+					else if ( querypage.ns === -1 ) {
+						var pagelink = wiki.toLink() + querypage.title.toTitle() + linksuffix;
+						var embed =  new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( querypage.title.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo );
+						var specialpage = body.query.specialpagealiases.find( sp => body.query.namespaces['-1']['*'] + ':' + sp.aliases[0].replace( /\_/g, ' ' ) === querypage.title.split('/')[0] ).realname.toLowerCase();
+						special_page(lang, msg, querypage.title, specialpage, embed, wiki, reaction, spoiler);
+					}
 					else {
 					else {
-						var pagelink = wiki.toLink() + querypage.title.toTitle() + ( querystring ? '?' + querystring.toTitle() : '' ) + ( body.query.redirects && body.query.redirects[0].tofragment ? '#' + body.query.redirects[0].tofragment.toSection() : ( fragment ? '#' + fragment.toSection() : '' ) );
+						var pagelink = wiki.toLink() + querypage.title.toTitle() + ( querystring ? '?' + querystring.toTitle() : '' ) + ( fragment ? '#' + fragment.toSection() : ( body.query.redirects && body.query.redirects[0].tofragment ? '#' + body.query.redirects[0].tofragment.toSection() : '' ) );
 						var text = '';
 						var text = '';
 						var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( querypage.title.escapeFormatting() ).setURL( pagelink );
 						var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( querypage.title.escapeFormatting() ).setURL( pagelink );
 						if ( querypage.pageprops && querypage.pageprops.displaytitle ) {
 						if ( querypage.pageprops && querypage.pageprops.displaytitle ) {
@@ -870,6 +876,14 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 						}
 						}
 					}
 					}
 				}
 				}
+				else if ( body.query.redirects ) {
+					var pagelink = wiki.toLink() + body.query.redirects[0].to.toTitle() + ( querystring ? '?' + querystring.toTitle() : '' ) + ( fragment ? '#' + fragment.toSection() : ( body.query.redirects[0].tofragment ? '#' + body.query.redirects[0].tofragment.toSection() : '' ) );
+					var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( body.query.redirects[0].to.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo );
+					
+					msg.sendChannel( spoiler + '<' + pagelink + '>' + spoiler, embed );
+					
+					if ( reaction ) reaction.removeEmoji();;
+				}
 				else {
 				else {
 					var pagelink = wiki.toLink() + body.query.general.mainpage.toTitle() + linksuffix;
 					var pagelink = wiki.toLink() + body.query.general.mainpage.toTitle() + linksuffix;
 					var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( body.query.general.mainpage.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo );
 					var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( body.query.general.mainpage.escapeFormatting() ).setURL( pagelink ).setThumbnail( ( body.query.general.logo.startsWith( '//' ) ? 'https:' : '' ) + body.query.general.logo );
@@ -909,6 +923,39 @@ function check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '', queryst
 	}
 	}
 }
 }
 
 
+function special_page(lang, msg, title, specialpage, embed, wiki, reaction, spoiler) {
+	var overwrites = {
+		randompage: (lang, msg, args, embed, wiki, reaction, spoiler) => cmd_random(lang, msg, wiki, reaction, spoiler),
+		diff: (lang, msg, args, embed, wiki, reaction, spoiler) => cmd_diff(lang, msg, args, wiki, reaction, spoiler, embed),
+		statistics: (lang, msg, args, embed, wiki, reaction, spoiler) => cmd_overview(lang, msg, wiki, reaction, spoiler)
+	}
+	if ( specialpage in overwrites ) {
+		var args = title.split('/').slice(1,3);
+		overwrites[specialpage](lang, msg, args, embed, wiki, reaction, spoiler);
+		return;
+	}
+	request( {
+		uri: wiki + 'api.php?action=query&meta=allmessages&amenableparser=true&amtitle=' + encodeURIComponent( title ) + '&ammessages=' + encodeURIComponent( specialpage ) + '-summary&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 ) {
+			console.log( '- ' + ( response && response.statusCode ) + ': Error while getting the special page: ' + ( error || body && body.error && body.error.info ) );
+		}
+		else {
+			if ( body.query.allmessages[0]['*'] ) {
+				var description = body.query.allmessages[0]['*'].toPlaintext();
+				if ( description.length > 2000 ) description = description.substring(0, 2000) + '\u2026';
+				embed.setDescription( description );
+			}
+		}
+		
+		msg.sendChannel( spoiler + '<' + embed.url + '>' + spoiler, embed );
+		
+		if ( reaction ) reaction.removeEmoji();
+	} );
+}
+
 function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, contribs, reaction, spoiler) {
 function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, contribs, reaction, spoiler) {
 	if ( /^(?:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{2})?|(?:[\dA-F]{1,4}:){7}[\dA-F]{1,4}(?:\/\d{2,3})?)$/.test(username) ) {
 	if ( /^(?:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{2})?|(?:[\dA-F]{1,4}:){7}[\dA-F]{1,4}(?:\/\d{2,3})?)$/.test(username) ) {
 		request( {
 		request( {
@@ -1012,7 +1059,7 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 						var pagelink = wiki.toLink() + namespace + username.toTitle() + linksuffix;
 						var pagelink = wiki.toLink() + namespace + username.toTitle() + linksuffix;
 						if ( msg.showEmbed() ) {
 						if ( msg.showEmbed() ) {
 							var text = '<' + pagelink + '>';
 							var text = '<' + pagelink + '>';
-							var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( username ).setURL( pagelink ).addField( editcount[0], '[' + editcount[1] + '](' + wiki.toLink() + contribs + username.toTitle() + ')' );
+							var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( username ).setURL( pagelink ).addField( editcount[0], '[' + editcount[1] + '](' + wiki.toLink() + contribs + username.toTitle(true) + ')' );
 							if ( blocks.length ) blocks.forEach( block => embed.addField( block[0], block[1].toMarkdown(wiki) ) );
 							if ( blocks.length ) blocks.forEach( block => embed.addField( block[0], block[1].toMarkdown(wiki) ) );
 						}
 						}
 						else {
 						else {
@@ -1120,7 +1167,7 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 					var pagelink = wiki.toLink() + namespace + username.toTitle() + linksuffix;
 					var pagelink = wiki.toLink() + namespace + username.toTitle() + linksuffix;
 					if ( msg.showEmbed() ) {
 					if ( msg.showEmbed() ) {
 						var text = '<' + pagelink + '>';
 						var text = '<' + pagelink + '>';
-						var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( username.escapeFormatting() ).setURL( pagelink ).addField( editcount[0], '[' + editcount[1] + '](' + wiki.toLink() + contribs + username.toTitle() + ')', true ).addField( group[0], group[1], true ).addField( gender[0], gender[1], true ).addField( registration[0], registration[1], true );
+						var embed = new Discord.RichEmbed().setAuthor( body.query.general.sitename ).setTitle( username.escapeFormatting() ).setURL( pagelink ).addField( editcount[0], '[' + editcount[1] + '](' + wiki.toLink() + contribs + username.toTitle(true) + ')', true ).addField( group[0], group[1], true ).addField( gender[0], gender[1], true ).addField( registration[0], registration[1], true );
 					}
 					}
 					else {
 					else {
 						var embed = {};
 						var embed = {};
@@ -1173,7 +1220,7 @@ function cmd_user(lang, msg, namespace, username, wiki, linksuffix, querypage, c
 	}
 	}
 }
 }
 
 
-function cmd_diff(lang, msg, args, wiki, reaction, spoiler) {
+function cmd_diff(lang, msg, args, wiki, reaction, spoiler, embed) {
 	if ( args[0] ) {
 	if ( args[0] ) {
 		var error = false;
 		var error = false;
 		var title = '';
 		var title = '';
@@ -1355,7 +1402,8 @@ function cmd_diff(lang, msg, args, wiki, reaction, spoiler) {
 		}
 		}
 	}
 	}
 	else {
 	else {
-		msg.reactEmoji('error');
+		if ( embed ) msg.sendChannel( spoiler + '<' + embed.url + '>' + spoiler, embed );
+		else msg.reactEmoji('error');
 		
 		
 		if ( reaction ) reaction.removeEmoji();
 		if ( reaction ) reaction.removeEmoji();
 	}
 	}
@@ -1407,7 +1455,7 @@ function cmd_diffsend(lang, msg, args, wiki, reaction, spoiler, compare) {
 					var pagelink = wiki.toLink() + title.toTitle() + '?diff=' + diff + '&oldid=' + oldid;
 					var pagelink = wiki.toLink() + title.toTitle() + '?diff=' + diff + '&oldid=' + oldid;
 					if ( msg.showEmbed() ) {
 					if ( msg.showEmbed() ) {
 						var text = '<' + pagelink + '>';
 						var text = '<' + pagelink + '>';
-						var editorlink = '[' + editor[1] + '](' + wiki.toLink() + 'User:' + editor[1].toTitle() + ')';
+						var editorlink = '[' + editor[1] + '](' + wiki.toLink() + 'User:' + editor[1].toTitle(true) + ')';
 						if ( revisions[0].anon !== undefined ) {
 						if ( revisions[0].anon !== undefined ) {
 							editorlink = '[' + editor[1] + '](' + wiki.toLink() + 'Special:Contributions/' + editor[1].toTitle(true) + ')';
 							editorlink = '[' + editor[1] + '](' + wiki.toLink() + 'Special:Contributions/' + editor[1].toTitle(true) + ')';
 						}
 						}
@@ -1651,13 +1699,16 @@ function cmd_overview(lang, msg, wiki, reaction, spoiler) {
 				msg.sendChannelError( spoiler + '<' + wiki.toLink() + 'Special:Statistics>' + spoiler );
 				msg.sendChannelError( spoiler + '<' + wiki.toLink() + 'Special:Statistics>' + spoiler );
 			}
 			}
 		}
 		}
-		else if ( allSites.some( site => site.wiki_domain === body.query.general.servername ) ) {
-			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.dateformat, timeoptions)];
-			var manager = [lang.overview.manager, site.wiki_managers];
-			var official = [lang.overview.official, ( site.official_wiki ? lang.overview.yes : lang.overview.no )];
+		else {
+			var site = false;
+			if ( allSites.some( site => site.wiki_domain === body.query.general.servername ) ) {
+				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.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, body.query.statistics.articles];
 			var articles = [lang.overview.articles, body.query.statistics.articles];
 			var pages = [lang.overview.pages, body.query.statistics.pages];
 			var pages = [lang.overview.pages, body.query.statistics.pages];
 			var edits = [lang.overview.edits, body.query.statistics.edits];
 			var edits = [lang.overview.edits, body.query.statistics.edits];
@@ -1667,20 +1718,22 @@ function cmd_overview(lang, msg, wiki, reaction, spoiler) {
 			var pagelink = wiki.toLink() + title.toTitle();
 			var pagelink = wiki.toLink() + title.toTitle();
 			if ( msg.showEmbed() ) {
 			if ( msg.showEmbed() ) {
 				var text = '<' + pagelink + '>';
 				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 || 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 );
+				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 );
+				if ( site ) {
+					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');
+					embed.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 );
+				}
+				embed.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 {
 			else {
 				var embed = {};
 				var embed = {};
-				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 + '*';
+				var text = '<' + pagelink + '>\n\n';
+				if ( site ) text += name.join(' ') + '\n' + created.join(' ') + '\n' + manager[0] + ' ' + ( manager[1].join(', ') || lang.overview.none ) + '\n' + official.join(' ') + '\n';
+				text += articles.join(' ') + '\n' + pages.join(' ') + '\n' + edits.join(' ') + '\n' + users.join(' ') + '\n\n*' + lang.overview.inaccurate + '*';
 			}
 			}
 			
 			
 			msg.sendChannel( spoiler + text + spoiler, embed );
 			msg.sendChannel( spoiler + text + spoiler, embed );
 		}
 		}
-		else {
-			console.log( '- This site isn\'t listed: ' + wiki )
-			msg.replyMsg( lang.overview.missing );
-		}
 		
 		
 		if ( reaction ) reaction.removeEmoji();
 		if ( reaction ) reaction.removeEmoji();
 	} );
 	} );
@@ -2320,7 +2373,7 @@ function log_warn(warning, api = true) {
 	}
 	}
 }
 }
 
 
-async function graceful(code = 1) {
+async function graceful(code = 0) {
 	stop = true;
 	stop = true;
 	console.log( '- SIGTERM: Preparing to close...' );
 	console.log( '- SIGTERM: Preparing to close...' );
 	setTimeout( async () => {
 	setTimeout( async () => {

+ 1 - 1
package.json

@@ -15,7 +15,7 @@
     "dotenv": "^6.2.0",
     "dotenv": "^6.2.0",
     "full-icu": "^1.3.0",
     "full-icu": "^1.3.0",
     "htmlparser2": "^3.10.1",
     "htmlparser2": "^3.10.1",
-    "npm": "^6.9.0",
+    "npm": "^6.10.3",
     "request": "^2.88.0"
     "request": "^2.88.0"
   },
   },
   "repository": {
   "repository": {