Browse Source

Mark Gamepedia wikis as Fandom

close #98
Markus-Rost 4 years ago
parent
commit
8376db9881

+ 2 - 2
cmds/help.js

@@ -106,7 +106,7 @@ function cmd_help(lang, msg, args, line, wiki) {
 			msg.sendChannel( cmdlist, {split:{char:'\n🔹',prepend:'🔹',maxLength}} );
 		}
 		else if ( cmd in helpmap && 
-		( !restrictions.fandom.includes( cmd ) || wiki.isFandom() ) && 
+		( !restrictions.fandom.includes( cmd ) || wiki.isFandom(false) ) && 
 		( !restrictions.minecraft.includes( cmd ) || isMinecraft ) && 
 		( !restrictions.admin.includes( cmd ) || msg.isAdmin() ) ) {
 			var cmdlist = formathelp(helpmap[cmd], msg, lang);
@@ -123,7 +123,7 @@ function cmd_help(lang, msg, args, line, wiki) {
 	else {
 		var cmdlist = lang.get('help.all') + '\n';
 		helplist.default.forEach( cmd => {
-			if ( ( !restrictions.fandom.includes( cmd ) || wiki.isFandom() ) && 
+			if ( ( !restrictions.fandom.includes( cmd ) || wiki.isFandom(false) ) && 
 			( !restrictions.minecraft.includes( cmd ) || isMinecraft ) ) {
 				cmdlist += formathelp(helpmap[cmd], msg, lang) + '\n';
 			}

+ 1 - 2
cmds/link.js

@@ -20,8 +20,7 @@ function cmd_link(lang, msg, title, wiki, cmd = '') {
 		var spoiler = '||';
 	}
 	msg.reactEmoji('⏳').then( reaction => {
-		if ( wiki.isFandom() ) check_wiki.fandom(lang, msg, title, wiki, cmd, reaction, spoiler);
-		else check_wiki.gamepedia(lang, msg, title, wiki, cmd, reaction, spoiler);
+		check_wiki.gamepedia(lang, msg, title, wiki, cmd, reaction, spoiler);
 	} );
 }
 

+ 5 - 5
cmds/rcscript.js

@@ -104,7 +104,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 						if ( reaction ) reaction.removeEmoji();
 						return msg.replyMsg( ( row.reason ? lang.get('rcscript.blocked_reason', row.reason) : lang.get('rcscript.blocked') ), {}, true );
 					}
-					if ( wikinew.isFandom() ) return got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( wiresponse => {
+					if ( wikinew.isFandom(false) ) return got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( wiresponse => {
 						var wibody = wiresponse.body;
 						if ( wiresponse.statusCode !== 200 || !wibody || wibody.exception || !wibody.items || !wibody.items.length ) {
 							console.log( '- ' + wiresponse.statusCode + ': Error while getting the wiki id: ' + wibody?.exception?.details );
@@ -275,7 +275,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 							if ( reaction ) reaction.removeEmoji();
 							return msg.replyMsg( ( row.reason ? lang.get('rcscript.blocked_reason', row.reason) : lang.get('rcscript.blocked') ), {}, true );
 						}
-						if ( wikinew.isFandom() ) return got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( wiresponse => {
+						if ( wikinew.isFandom(false) ) return got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( wiresponse => {
 							var wibody = wiresponse.body;
 							if ( wiresponse.statusCode !== 200 || !wibody || wibody.exception || !wibody.items || !wibody.items.length ) {
 								console.log( '- ' + wiresponse.statusCode + ': Error while getting the wiki id: ' + wibody?.exception?.details );
@@ -377,7 +377,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					msg.replyMsg( lang.get('rcscript.updated_display') + ' `' + args[1] + '`\n`' + cmd + '`', {}, true );
 				} );
 			}
-			if ( new Wiki(selected_row.wiki).isFandom() && args[0] === 'feeds' ) {
+			if ( new Wiki(selected_row.wiki).isFandom(false) && args[0] === 'feeds' ) {
 				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 				if ( args[1] === 'only' ) {
 					if ( selected_row.rcid === -1 ) {
@@ -507,7 +507,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					text += '\n' + lang.get('rcscript.rc') + ' *`' + lang.get('rcscript.disabled' ) + '`*';
 					text += '\n`' + cmd + ' feeds only` ' + lang.get('rcscript.toggle') + '\n';
 				}
-				if ( new Wiki(selected_row.wiki).isFandom() ) {
+				if ( new Wiki(selected_row.wiki).isFandom(false) ) {
 					text += '\n' + lang.get('rcscript.feeds') + ' *`' + lang.get('rcscript.' + ( selected_row.wikiid ? 'enabled' : 'disabled' )) + '`*';
 					text += '\n' + lang.get('rcscript.help_feeds') + '\n`' + cmd + ' feeds` ' + lang.get('rcscript.toggle') + '\n';
 				}
@@ -554,7 +554,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					row_text += '\n' + lang.get('rcscript.rc') + ' *`' + lang.get('rcscript.disabled' ) + '`*';
 					if ( only ) row_text += '\n`' + cmd + ' feeds only` ' + lang.get('rcscript.toggle') + '\n';
 				}
-				if ( new Wiki(row.wiki).isFandom() ) {
+				if ( new Wiki(row.wiki).isFandom(false) ) {
 					row_text += '\n' + lang.get('rcscript.feeds') + ' *`' + lang.get('rcscript.' + ( row.wikiid ? 'enabled' : 'disabled' )) + '`*';
 					if ( only ) row_text += '\n' + lang.get('rcscript.help_feeds') + '\n`' + cmd + ' feeds` ' + lang.get('rcscript.toggle') + '\n';
 				}

+ 2 - 2
cmds/settings.js

@@ -120,7 +120,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 						let site = allSites.find( site => site.wiki_domain === wikinew.hostname );
 						if ( site ) wikinew = new Wiki('https://' + ( site.wiki_crossover || site.wiki_domain ) + '/');
 					}
-					else if ( wikinew.isFandom() && !isForced ) {
+					else if ( wikinew.isFandom(false) && !isForced ) {
 						let crossover = '';
 						if ( body.query.allmessages[0]['*'] ) {
 							crossover = 'https://' + body.query.allmessages[0]['*'] + '.gamepedia.com/';
@@ -132,7 +132,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 						if ( crossover ) wikinew = new Wiki(crossover);
 					}
 					var embed;
-					if ( !wikinew.isFandom() && !wikinew.isGamepedia() ) {
+					if ( !wikinew.isFandom() ) {
 						var notice = [];
 						if ( body.query.general.generator.replace( /^MediaWiki 1\.(\d\d).*$/, '$1' ) <= 30 ) {
 							console.log( '- This wiki is using ' + body.query.general.generator + '.' );

+ 1 - 1
cmds/test.js

@@ -53,7 +53,7 @@ function cmd_test(lang, msg, args, line, wiki) {
 						ping += ' <:error:505887261200613376>';
 					}
 				}
-				else if ( ( msg.isAdmin() || msg.isOwner() ) && !wiki.isFandom() && !wiki.isGamepedia() ) {
+				else if ( ( msg.isAdmin() || msg.isOwner() ) && !wiki.isFandom() ) {
 					if ( body.query.general.generator.replace( /^MediaWiki 1\.(\d\d).*$/, '$1' ) <= 30 ) {
 						console.log( '- This wiki is using ' + body.query.general.generator + '.' );
 						notice.push(lang.get('test.MediaWiki', '[MediaWiki 1.30](https://www.mediawiki.org/wiki/MediaWiki_1.30)', body.query.general.generator));

+ 13 - 30
cmds/verify.js

@@ -37,7 +37,7 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 			msg.replyMsg( lang.get('verify.error_reply'), {embed}, false, false ).then( message => message.reactEmoji('error') );
 			return dberror;
 		}
-		if ( !rows.length ) return msg.replyMsg( lang.get('verify.missing') + ( msg.isAdmin() ? '\n`' + ( patreons[msg.guild.id] || process.env.prefix ) + lang.localNames.verification + '`' : '' ) );
+		if ( !rows.length ) return msg.replyMsg( lang.get('verify.missing') + ( msg.isAdmin() ? '\n`' + ( patreons[msg.guild.id] || process.env.prefix ) + 'verification`' : '' ) );
 		
 		if ( !username.trim() ) {
 			args[0] = line.split(' ')[0];
@@ -71,7 +71,7 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 			if ( body.query.users.length !== 1 || queryuser.missing !== undefined || queryuser.invalid !== undefined ) {
 				username = ( body.query.users.length === 1 ? queryuser.name : username );
 				embed.setTitle( ( old_username || username ).escapeFormatting() ).setColor('#0000FF').setDescription( lang.get('verify.user_missing', ( old_username || username ).escapeFormatting()) );
-				if ( ( wiki.isFandom() || wiki.isGamepedia() ) && !old_username ) return got.get( 'https://community.fandom.com/api/v1/User/UsersByName?limit=1&query=' + encodeURIComponent( username ) + '&format=json' ).then( wsresponse => {
+				if ( wiki.isFandom() && !old_username ) return got.get( 'https://community.fandom.com/api/v1/User/UsersByName?limit=1&query=' + encodeURIComponent( username ) + '&format=json' ).then( wsresponse => {
 					var wsbody = wsresponse.body;
 					if ( wsresponse.statusCode !== 200 || wsbody?.exception || wsbody?.users?.[0]?.name?.length !== username.length ) {
 						if ( !wsbody?.users ) console.log( '- ' + wsresponse.statusCode + ': Error while searching the user: ' + wsbody?.exception?.details );
@@ -104,14 +104,7 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 			}
 			
 			var comment = [];
-			var url = '';
-			if ( wiki.isGamepedia() ) {
-				url = 'https://commons.gamepedia.com/Special:GlobalBlockList/' + encodeURIComponent( username ) + '?uselang=qqx&cache=' + Date.now();
-			}
-			else if ( wiki.isFandom() ) {
-				url = 'https://community.fandom.com/Special:Contributions/' + encodeURIComponent( username ) + '?limit=1&cache=' + Date.now();
-			}
-			if ( url ) return got.get( url, {
+			if ( wiki.isFandom() ) return got.get( 'https://community.fandom.com/Special:Contributions/' + encodeURIComponent( username ) + '?limit=1&cache=' + Date.now(), {
 				responseType: 'text'
 			} ).then( gbresponse => {
 				if ( gbresponse.statusCode !== 200 || !gbresponse.body ) {
@@ -120,27 +113,17 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 				}
 				else {
 					let $ = cheerio.load(gbresponse.body);
-					if ( wiki.isGamepedia() ) {
-						if ( $('.mw-blocklist').length ) {
-							return Promise.reject({
-								desc: lang.get('verify.user_gblocked', '[' + username.escapeFormatting() + '](' + pagelink + ')', queryuser.gender),
-								reply: lang.get('verify.user_gblocked_reply', username.escapeFormatting(), queryuser.gender)
-							});
-						}
+					if ( $('#mw-content-text .errorbox').length ) {
+						return Promise.reject({
+							desc: lang.get('verify.user_disabled', '[' + username.escapeFormatting() + '](' + pagelink + ')'),
+							reply: lang.get('verify.user_disabled_reply', username.escapeFormatting())
+						});
 					}
-					else if ( wiki.isFandom() ) {
-						if ( $('#mw-content-text .errorbox').length ) {
-							return Promise.reject({
-								desc: lang.get('verify.user_disabled', '[' + username.escapeFormatting() + '](' + pagelink + ')'),
-								reply: lang.get('verify.user_disabled_reply', username.escapeFormatting())
-							});
-						}
-						else if ( $('.mw-warning-with-logexcerpt').length && !$(".mw-warning-with-logexcerpt .mw-logline-block").length ) {
-							return Promise.reject({
-								desc: lang.get('verify.user_gblocked', '[' + username.escapeFormatting() + '](' + pagelink + ')', queryuser.gender),
-								reply: lang.get('verify.user_gblocked_reply', username.escapeFormatting(), queryuser.gender)
-							});
-						}
+					if ( $('.mw-warning-with-logexcerpt').length && !$(".mw-warning-with-logexcerpt .mw-logline-block").length ) {
+						return Promise.reject({
+							desc: lang.get('verify.user_gblocked', '[' + username.escapeFormatting() + '](' + pagelink + ')', queryuser.gender),
+							reply: lang.get('verify.user_gblocked_reply', username.escapeFormatting(), queryuser.gender)
+						});
 					}
 				}
 			}, error => {

+ 1 - 4
cmds/wiki/fandom.js

@@ -87,9 +87,6 @@ function fandom_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '',
 			return;
 		}
 		wiki.updateWiki(body.query.general);
-		if ( body.query.general.generator.startsWith( 'MediaWiki 1.3' ) ) {
-			return this.gamepedia(lang, msg, title, wiki, cmd, reaction, spoiler, querystring, fragment, selfcall);
-		}
 		if ( aliasInvoke === 'search' ) {
 			return fn.search(lang, msg, full_title.split(' ').slice(1).join(' '), wiki, body.query, reaction, spoiler);
 		}
@@ -425,7 +422,7 @@ function fandom_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '',
 						let path = ( regex[1] || '' );
 						let iwtitle = decodeURIComponent( iw.pathname.replace( regex[0], '' ) ).replace( /_/g, ' ' );
 						cmd = ( iw.hostname.endsWith( '.wikia.org' ) ? '??' : '?' ) + ( path ? path.substring(1) + '.' : '' ) + iw.hostname.replace( /\.(?:fandom\.com|wikia\.org)/, ' ' );
-						return this.fandom(lang, msg, iwtitle, new Wiki(iw.origin + path + '/'), cmd, reaction, spoiler, iw.searchParams, fragment, iw.href, selfcall);
+						return this.gamepedia(lang, msg, iwtitle, new Wiki(iw.origin + path + '/'), cmd, reaction, spoiler, iw.searchParams, fragment, iw.href, selfcall);
 					}
 				}
 				if ( iw.hostname.endsWith( '.gamepedia.com' ) ) {

+ 0 - 4
cmds/wiki/fandom/overview.js

@@ -1,5 +1,4 @@
 const {MessageEmbed} = require('discord.js');
-const gamepedia_overview = require('../gamepedia/overview.js').run;
 const {timeoptions} = require('../../../util/default.json');
 
 var allSites = [];
@@ -31,9 +30,6 @@ function fandom_overview(lang, msg, wiki, reaction, spoiler) {
 			
 			if ( reaction ) reaction.removeEmoji();
 		}
-		else if ( body.query.general.generator.startsWith( 'MediaWiki 1.3' ) ) {
-			return gamepedia_overview(lang, msg, wiki, reaction, spoiler);
-		}
 		else got.get( 'https://community.fandom.com/api/v1/Wikis/Details?ids=' + body.query.wikidesc.id + '&format=json&cache=' + Date.now() ).then( ovresponse => {
 			wiki.updateWiki(body.query.general);
 			var ovbody = ovresponse.body;

+ 0 - 4
cmds/wiki/fandom/random.js

@@ -1,6 +1,5 @@
 const htmlparser = require('htmlparser2');
 const {MessageEmbed} = require('discord.js');
-const gamepedia_random = require('../gamepedia/random.js').run;
 
 /**
  * Sends a random Fandom page.
@@ -26,9 +25,6 @@ function fandom_random(lang, msg, wiki, reaction, spoiler) {
 			
 			if ( reaction ) reaction.removeEmoji();
 		}
-		else if ( body.query.general.generator.startsWith( 'MediaWiki 1.3' ) ) {
-			return gamepedia_random(lang, msg, wiki, reaction, spoiler);
-		}
 		else {
 			var querypage = Object.values(body.query.pages)[0];
 			var pagelink = wiki.updateWiki(body.query.general).toLink(querypage.title);

+ 1 - 1
cmds/wiki/fandom/user.js

@@ -268,7 +268,7 @@ function fandom_user(lang, msg, namespace, username, wiki, querystring, fragment
 						blockexpiry = new Date(blockexpirydate).toLocaleString(lang.get('dateformat'), timeoptions);
 						if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 					}
-					var blockedby = '[[User:' + queryuser.blockedby + '|' + queryuser.blockedby + ']]';
+					var blockedby = queryuser.blockedby;
 					var blockreason = queryuser.blockreason;
 					var block = {
 						header: lang.get('user.block.header', username, queryuser.gender).escapeFormatting(),

+ 10 - 4
cmds/wiki/gamepedia.js

@@ -81,7 +81,7 @@ function gamepedia_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '
 		if ( reaction ) reaction.removeEmoji();
 		return;
 	}
-	if ( aliasInvoke === 'diff' && args.join('') && !querystring.toString() && !fragment ) {
+	if ( aliasInvoke === 'diff' && !wiki.isFandom(false) && args.join('') && !querystring.toString() && !fragment ) {
 		return fn.diff(lang, msg, args, wiki, reaction, spoiler);
 	}
 	var noRedirect = ( querystring.getAll('redirect').pop() === 'no' || ( querystring.has('action') && querystring.getAll('action').pop() !== 'view' ) );
@@ -89,7 +89,10 @@ function gamepedia_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '
 		var body = response.body;
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( response.statusCode !== 200 || !body || body.batchcomplete === undefined || !body.query ) {
-			if ( interwiki ) msg.sendChannel( spoiler + ' ' + interwiki + ' ' + spoiler );
+			if ( body?.query?.general?.generator === 'MediaWiki 1.19.24' && wiki.isFandom(false) ) {
+				return this.fandom(lang, msg, title, wiki, cmd, reaction, spoiler, querystring, fragment, selfcall);
+			}
+			else if ( interwiki ) msg.sendChannel( spoiler + ' ' + interwiki + ' ' + spoiler );
 			else if ( wiki.noWiki(response.url) || response.statusCode === 410 ) {
 				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
@@ -106,7 +109,10 @@ function gamepedia_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '
 		if ( aliasInvoke === 'search' ) {
 			return fn.search(lang, msg, full_title.split(' ').slice(1).join(' '), wiki, body.query, reaction, spoiler);
 		}
-		if ( aliasInvoke === 'discussion' && wiki.isFandom() && !querystring.toString() && !fragment ) {
+		if ( aliasInvoke === 'diff' && args.join('') && !querystring.toString() && !fragment ) {
+			return fn.diff(lang, msg, args, wiki, reaction, spoiler);
+		}
+		if ( aliasInvoke === 'discussion' && wiki.isFandom(false) && !querystring.toString() && !fragment ) {
 			return fn.discussion(lang, msg, wiki, args.join(' '), body.query, reaction, spoiler);
 		}
 		if ( body.query.pages ) {
@@ -349,7 +355,7 @@ function gamepedia_check_wiki(lang, msg, title, wiki, cmd, reaction, spoiler = '
 						let path = ( regex[1] || '' );
 						let iwtitle = decodeURIComponent( iw.pathname.replace( regex[0], '' ) ).replace( /_/g, ' ' );
 						cmd = ( iw.hostname.endsWith( '.wikia.org' ) ? '??' : '?' ) + ( path ? path.substring(1) + '.' : '' ) + iw.hostname.replace( /\.(?:fandom\.com|wikia\.org)/, ' ' );
-						return this.fandom(lang, msg, iwtitle, new Wiki(iw.origin + path + '/'), cmd, reaction, spoiler, iw.searchParams, fragment, iw.href, selfcall);
+						return this.gamepedia(lang, msg, iwtitle, new Wiki(iw.origin + path + '/'), cmd, reaction, spoiler, iw.searchParams, fragment, iw.href, selfcall);
 					}
 				}
 				let project = wikiProjects.find( project => iw.hostname.endsWith( project.name ) );

+ 5 - 1
cmds/wiki/gamepedia/overview.js

@@ -1,4 +1,5 @@
 const {MessageEmbed} = require('discord.js');
+const fandom_overview = require('../fandom/overview.js').run;
 const {timeoptions} = require('../../../util/default.json');
 
 var allSites = [];
@@ -23,6 +24,9 @@ function gamepedia_overview(lang, msg, wiki, reaction, spoiler) {
 				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
 			}
+			else if ( body?.query?.general?.generator === 'MediaWiki 1.19.24' && wiki.isFandom(false) ) {
+				return fandom_overview(lang, msg, wiki, reaction, spoiler);
+			}
 			else {
 				console.log( '- ' + response.statusCode + ': Error while getting the statistics: ' + ( body && body.error && body.error.info ) );
 				msg.sendChannelError( spoiler + '<' + wiki.toLink('Special:Statistics') + '>' + spoiler );
@@ -67,7 +71,7 @@ function gamepedia_overview(lang, msg, wiki, reaction, spoiler) {
 				var text = '<' + pagelink + '>\n\n';
 			}
 			
-			if ( wiki.isFandom() ) got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?expand=true&includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( ovresponse => {
+			if ( wiki.isFandom(false) ) got.get( 'https://community.fandom.com/api/v1/Wikis/ByString?expand=true&includeDomain=true&limit=10&string=' + body.query.general.servername + body.query.general.scriptpath + '&format=json&cache=' + Date.now() ).then( ovresponse => {
 				var manager = [lang.get('overview.manager'), body.query.allmessages[0]['*']];
 				var crossover = [lang.get('overview.crossover')];
 				if ( body.query.allmessages[1]['*'] ) {

+ 4 - 0
cmds/wiki/gamepedia/random.js

@@ -1,4 +1,5 @@
 const {MessageEmbed} = require('discord.js');
+const fandom_random = require('../fandom/random.js').run;
 const parse_page = require('../../../functions/parse_page.js');
 const {htmlToPlain, htmlToDiscord} = require('../../../util/functions.js');
 const extract_desc = require('../../../util/extract_desc.js');
@@ -20,6 +21,9 @@ function gamepedia_random(lang, msg, wiki, reaction, spoiler) {
 				console.log( '- This wiki doesn\'t exist!' );
 				msg.reactEmoji('nowiki');
 			}
+			else if ( body?.query?.general?.generator === 'MediaWiki 1.19.24' && wiki.isFandom(false) ) {
+				return fandom_random(lang, msg, wiki, reaction, spoiler);
+			}
 			else {
 				console.log( '- ' + response.statusCode + ': Error while getting the search results: ' + ( body && body.error && body.error.info ) );
 				msg.sendChannelError( spoiler + '<' + wiki.toLink('Special:Random') + '>' + spoiler );

+ 1 - 1
cmds/wiki/gamepedia/user.js

@@ -156,7 +156,7 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 				} );
 			}
 			
-			if ( msg.channel.isGuild() && msg.guild.id in patreons && ( wiki.isFandom() || wiki.isGamepedia() ) ) {
+			if ( msg.channel.isGuild() && msg.guild.id in patreons && wiki.isFandom() ) {
 				if ( msg.showEmbed() ) embed.addField( '\u200b', '<a:loading:641343250661113886> **' + lang.get('user.info.loading') + '**' );
 				else text += '\n\n<a:loading:641343250661113886> **' + lang.get('user.info.loading') + '**';
 

+ 26 - 68
functions/global_block.js

@@ -14,7 +14,7 @@ const toTitle = require('../util/wiki.js').toTitle;
  * @param {String} [gender] - The gender of the user.
  */
 function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
-	if ( !msg || !msg.channel.isGuild() || !( msg.guild.id in patreons ) ) return;
+	if ( !msg || !msg.channel.isGuild() || !( msg.guild.id in patreons ) || !wiki.isFandom() ) return;
 	
 	var isUser = true;
 	if ( !gender ) {
@@ -29,7 +29,7 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 		text = splittext.join('\n\n');
 	}
 	
-	if ( wiki.isFandom() ) Promise.all([
+	Promise.all([
 		got.get( 'https://community.fandom.com/Special:Contributions/' + encodeURIComponent( username ) + '?limit=1', {
 			responseType: 'text'
 		} ).then( response => {
@@ -51,7 +51,7 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 		}, error => {
 			console.log( '- Error while getting the global block: ' + error );
 		} ),
-		( isUser ? got.get( 'https://community.fandom.com/wiki/Special:Editcount/' + encodeURIComponent( username ), {
+		( isUser ? ( wiki.isGamepedia() ? got.get( 'https://help.gamepedia.com/UserProfile:' + encodeURIComponent( username ), {
 			responseType: 'text'
 		} ).then( gresponse => {
 			var gbody = gresponse.body;
@@ -60,7 +60,20 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 			}
 			else {
 				let $ = cheerio.load(gbody);
-				var globaledits = $('#editcount .TablePager th').eq(7).text().replace( /[,\.]/g, '' );
+				var wikisedited = $('.curseprofile .rightcolumn .section.stats dd').eq(0).text().replace( /[,\.]/g, '' );
+				if ( wikisedited ) {
+					if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
+						name: lang.get('user.info.wikisedited'),
+						value: wikisedited,
+						inline: true
+					});
+					else {
+						let splittext = text.split('\n');
+						splittext.splice(5, 0, lang.get('user.info.wikisedited') + ' ' + wikisedited);
+						text = splittext.join('\n');
+					}
+				}
+				var globaledits = $('.curseprofile .rightcolumn .section.stats dd').eq(2).text().replace( /[,\.]/g, '' );
 				if ( globaledits ) {
 					if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
 						name: lang.get('user.info.globaleditcount'),
@@ -73,54 +86,16 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 						text = splittext.join('\n');
 					}
 				}
-			}
-		}, error => {
-			console.log( '- Error while getting the global edit count: ' + error );
-		} ) : undefined )
-	]).finally( () => {
-		msg.edit( spoiler + text + spoiler, {embed,allowedMentions:{parse:[]}} ).catch(log_error);
-	} );
-	else if ( wiki.isGamepedia() ) Promise.all([
-		got.get( 'https://commons.gamepedia.com/Special:GlobalBlockList/' + encodeURIComponent( username ) + '?uselang=qqx', {
-			responseType: 'text'
-		} ).then( response => {
-			var body = response.body;
-			if ( response.statusCode !== 200 || !body ) {
-				console.log( '- ' + response.statusCode + ': Error while getting the global block.' );
-			}
-			else {
-				let $ = cheerio.load(body);
-				var gblocklist = $('.mw-blocklist');
-				let splittext = text.split('\n\n');
-				if ( gblocklist.length ) gblocklist.find('tbody tr').each( (i, gblock) => {
-					gblock = $(gblock);
-					var reason = gblock.find('.TablePager_col_reason').text().replace( /\)$/, '' ).split(', ');
-					var timestamp = new Date(gblock.find('.TablePager_col_timestamp').text().replace( /(\d{2}:\d{2}), (\d{1,2}) \((\w+)\) (\d{4})/, '$3 $2, $4 $1 UTC' )).toLocaleString(lang.get('dateformat'), timeoptions);
-					var expiry = gblock.find('.TablePager_col_expiry').text();
-					if ( expiry.startsWith( '(infiniteblock)' ) ) expiry = lang.get('user.block.until_infinity');
-					else expiry = new Date(expiry.replace( /(\d{2}:\d{2}), (\d{1,2}) \((\w+)\) (\d{4})/, '$3 $2, $4 $1 UTC' )).toLocaleString(lang.get('dateformat'), timeoptions);
-					if ( msg.showEmbed() ) {
-						var gblocktitle = lang.get('user.gblock.header', username, gender).escapeFormatting();
-						var globalblock = embed.fields.find( field => field.inline === false && field.name === lang.get('user.block.header', username, gender).escapeFormatting() && field.value.replace( /\[([^\]]*)\]\([^\)]*\)/g, '$1' ) === lang.get('user.block.' + ( reason.length > 4 ? 'text' : 'noreason' ), timestamp, expiry, reason[1].escapeFormatting(), reason.slice(4).join(', ').escapeFormatting()) );
-						if ( globalblock ) globalblock.name = gblocktitle;
-						else {
-							var block_wiki = reason[3].replace( /Special:BlockList$/, '' );
-							var gblocktext = lang.get('user.gblock.' + ( reason.length > 4 ? 'text' : 'noreason' ), timestamp, expiry, '[' + reason[1] + '](' + block_wiki + 'User:' + toTitle(reason[1]) + ')', '[' + reason[2] + '](' + block_wiki + 'Special:Contribs/' + toTitle(username) + ')', reason.slice(4).join(', ').escapeFormatting());
-							embed.addField( gblocktitle, gblocktext );
-						}
-					}
-					else {
-						var globalblock = splittext.indexOf('**' + lang.get('user.block.header', username, gender).escapeFormatting() + '**\n' + lang.get('user.block.' + ( reason.length > 4 ? 'text' : 'noreason' ), timestamp, expiry, reason[1].escapeFormatting(), reason.slice(4).join(', ').escapeFormatting()));
-						if ( globalblock !== -1 ) splittext[globalblock] = '**' + lang.get('user.gblock.header', username, gender).escapeFormatting() + '**\n' + lang.get('user.block.' + ( reason.length > 4 ? 'text' : 'noreason' ), timestamp, expiry, reason[1].escapeFormatting(), reason.slice(4).join(', ').escapeFormatting());
-						else splittext.push('**' + lang.get('user.gblock.header', username, gender).escapeFormatting() + '**\n' + lang.get('user.gblock.' + ( reason.length > 4 ? 'text' : 'noreason' ), timestamp, expiry, reason[1].escapeFormatting(), reason[2], reason.slice(4).join(', ').escapeFormatting()));
+				if ( msg.showEmbed() ) {
+					let avatar = $('.curseprofile .mainavatar img').prop('src');
+					if ( avatar ) {
+						embed.setThumbnail( avatar.replace( /^(?:https?:)?\/\//, 'https://' ).replace( '?d=mm&s=96', '?d=' + encodeURIComponent( embed?.thumbnail?.url || '404' ) ) );
 					}
-				} );
-				text = splittext.join('\n\n');
+				}
 			}
 		}, error => {
-			console.log( '- Error while getting the global block: ' + error );
-		} ),
-		( isUser ? got.get( 'https://commons.gamepedia.com/UserProfile:' + encodeURIComponent( username ), {
+			console.log( '- Error while getting the global edit count: ' + error );
+		} ) : got.get( 'https://community.fandom.com/wiki/Special:Editcount/' + encodeURIComponent( username ), {
 			responseType: 'text'
 		} ).then( gresponse => {
 			var gbody = gresponse.body;
@@ -129,20 +104,7 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 			}
 			else {
 				let $ = cheerio.load(gbody);
-				var wikisedited = $('.curseprofile .rightcolumn .section.stats dd').eq(0).text().replace( /[,\.]/g, '' );
-				if ( wikisedited ) {
-					if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
-						name: lang.get('user.info.wikisedited'),
-						value: wikisedited,
-						inline: true
-					});
-					else {
-						let splittext = text.split('\n');
-						splittext.splice(5, 0, lang.get('user.info.wikisedited') + ' ' + wikisedited);
-						text = splittext.join('\n');
-					}
-				}
-				var globaledits = $('.curseprofile .rightcolumn .section.stats dd').eq(2).text().replace( /[,\.]/g, '' );
+				var globaledits = $('#editcount .TablePager th').eq(7).text().replace( /[,\.]/g, '' );
 				if ( globaledits ) {
 					if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
 						name: lang.get('user.info.globaleditcount'),
@@ -155,14 +117,10 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender) {
 						text = splittext.join('\n');
 					}
 				}
-				if ( msg.showEmbed() ) {
-					var avatar = $('.curseprofile .mainavatar img').prop('src');
-					if ( avatar ) embed.setThumbnail( avatar.replace( /^(?:https?:)?\/\//, 'https://' ).replace( '?d=mm&s=96', '?d=404' ) );
-				}
 			}
 		}, error => {
 			console.log( '- Error while getting the global edit count: ' + error );
-		} ) : undefined )
+		} ) ) : undefined )
 	]).finally( () => {
 		msg.edit( spoiler + text + spoiler, {embed,allowedMentions:{parse:[]}} ).catch(log_error);
 	} );

+ 1 - 3
i18n/en.json

@@ -599,9 +599,7 @@
         },
         "gblock": {
             "disabled": "This account is currently disabled!",
-            "header": "$1 is currently globally blocked!",
-            "noreason": "Blocked on $1 until $2 by $3 on $4.",
-            "text": "Blocked on $1 until $2 by $3 on $4 with reason \"$5\"."
+            "header": "$1 is currently globally blocked!"
         },
         "gender": {
             "female": "Female",

+ 1 - 0
util/default.json

@@ -48,6 +48,7 @@
 			"content-reviewer",
 			"imagereviewer",
 			"restricted-login",
+			"restricted-login-auto",
 			"restricted-login-exempt",
 			"council",
 			"*"

+ 4 - 9
util/newMessage.js

@@ -191,7 +191,7 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 			}
 		} );
 		
-		if ( embeds.length ) got.get( wiki + 'api.php?action=query&meta=siteinfo&siprop=general' + ( wiki.isFandom() || wiki.isGamepedia() ? '' : '|variables' ) + '&titles=' + encodeURIComponent( embeds.map( embed => embed.title + '|Template:' + embed.title ).join('|') ) + '&format=json' ).then( response => {
+		if ( embeds.length ) got.get( wiki + 'api.php?action=query&meta=siteinfo&siprop=general' + ( wiki.isFandom() ? '' : '|variables' ) + '&titles=' + encodeURIComponent( embeds.map( embed => embed.title + '|Template:' + embed.title ).join('|') ) + '&format=json' ).then( response => {
 			var body = response.body;
 			if ( response.statusCode !== 200 || !body || !body.query ) {
 				if ( wiki.noWiki(response.url) || response.statusCode === 410 ) {
@@ -225,14 +225,9 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 					msg.sendChannel( missing.map( embed => embed.spoiler + '<' + ( embed.template || wiki.toLink(embed.title, 'action=edit&redlink=1') ) + '>' + embed.spoiler ).join('\n'), {split:true} );
 				}
 			}
-			if ( embeds.length ) {
-				if ( wiki.isFandom() ) embeds.forEach( embed => msg.reactEmoji('⏳').then( reaction => {
-					check_wiki.fandom(lang, msg, embed.title, wiki, '', reaction, embed.spoiler, new URLSearchParams(), embed.section);
-				} ) );
-				else embeds.forEach( embed => msg.reactEmoji('⏳').then( reaction => {
-					check_wiki.gamepedia(lang, msg, embed.title, wiki, '', reaction, embed.spoiler, new URLSearchParams(), embed.section);
-				} ) );
-			}
+			if ( embeds.length ) embeds.forEach( embed => msg.reactEmoji('⏳').then( reaction => {
+				check_wiki.gamepedia(lang, msg, embed.title, wiki, '', reaction, embed.spoiler, new URLSearchParams(), embed.section);
+			} ) );
 		}, error => {
 			if ( wiki.noWiki(error.message) ) {
 				console.log( '- This wiki doesn\'t exist!' );

+ 5 - 3
util/wiki.js

@@ -68,10 +68,12 @@ class Wiki extends URL {
 
 	/**
 	 * Check for a Fandom wiki.
+	 * @param {Boolean} [includeGP] - If Gamepedia wikis are included.
 	 * @returns {Boolean}
 	 */
-	isFandom() {
-		return ( this.hostname.endsWith( '.fandom.com' ) || this.hostname.endsWith( '.wikia.org' ) );
+	isFandom(includeGP = true) {
+		return ( this.hostname.endsWith( '.fandom.com' ) || this.hostname.endsWith( '.wikia.org' )
+		|| ( includeGP && this.hostname.endsWith( '.gamepedia.com' ) ) );
 	}
 
 	/**
@@ -88,7 +90,7 @@ class Wiki extends URL {
 	 * @returns {Boolean}
 	 */
 	noWiki(message = '') {
-		if ( !( this.isGamepedia() || this.isFandom() ) ) return false;
+		if ( !this.isFandom() ) return false;
 		if ( this.hostname.startsWith( 'www.' ) || message.startsWith( 'https://www.' ) ) return true;
 		return [
 			'https://community.fandom.com/wiki/Community_Central:Not_a_valid_community?from=' + this.hostname,