Преглед на файлове

Add discussions stats to user info

close #70
Markus-Rost преди 4 години
родител
ревизия
936c0b3a3d
променени са 3 файла, в които са добавени 38 реда и са изтрити 25 реда
  1. 22 22
      cmds/wiki/gamepedia/user.js
  2. 15 3
      functions/global_block.js
  3. 1 0
      i18n/en.json

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

@@ -326,38 +326,38 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 						
 						if ( reaction ) reaction.removeEmoji();
 					} );
-					else if ( wiki.isFandom() ) got.get( 'https://services.fandom.com/user-attribute/user/' + queryuser.userid + '?format=json&cache=' + Date.now(), {
-						headers: {
-							Accept: 'application/hal+json'
-						}
-					} ).then( presponse => {
+					else if ( wiki.isFandom() ) got.get( wiki + 'wikia.php?controller=UserProfile&method=getUserData&userId=' + queryuser.userid + '&format=json&cache=' + Date.now() ).then( presponse => {
 						var pbody = presponse.body;
-						if ( presponse.statusCode !== 200 || !pbody || pbody.title || !pbody._embedded || !pbody._embedded.properties ) {
-							if ( !( pbody && pbody.status === 404 ) ) {
-								console.log( '- ' + presponse.statusCode + ': Error while getting the user profile: ' + ( pbody && pbody.title ) );
-							}
-						}
+						if ( presponse.statusCode !== 200 || !pbody || !pbody.userData || !pbody.userData.id ) console.log( '- ' + presponse.statusCode + ': Error while getting the user profile.' );
 						else {
-							var profile = pbody._embedded.properties;
-							var discordfield = profile.find( field => field.name === 'discordHandle' );
-							var avatarfield = profile.find( field => field.name === 'avatar' );
-							var biofield = profile.find( field => field.name === 'bio' );
-							if ( discordfield && discordfield.value ) {
-								discordfield.value = htmlToPlain( discordfield.value ).replace( /^\s*([^@#:]{2,32}?)\s*#(\d{4,6})\s*$/, '$1#$2' );
-								if ( discordfield.value.length > 50 ) discordfield.value = discordfield.value.substring(0, 50) + '\u2026';
+							if ( pbody.userData.posts ) {
+								if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
+									name: lang.get('user.info.postcount'),
+									value: '[' + pbody.userData.posts + '](' + wiki + 'f/u/' + queryuser.userid + ')',
+									inline: true
+								});
+								else {
+									let splittext = text.split('\n');
+									splittext.splice(5, 0, lang.get('user.info.postcount') + ' ' + pbody.userData.posts);
+									text = splittext.join('\n');
+								}
+							}
+							if ( pbody.userData.discordHandle ) {
+								let discord = pbody.userData.discordHandle.replace( /^\s*([^@#:]{2,32}?)\s*#(\d{4,6})\s*$/, '$1#$2' );
+								if ( discord.length > 50 ) discord = discord.substring(0, 50) + '\u2026';
 								if ( msg.channel.type === 'text' ) var discordmember = msg.guild.members.cache.find( member => {
-									return member.user.tag.escapeFormatting() === discordfield.value;
+									return member.user.tag.escapeFormatting() === discord;
 								} );
-								var discordname = [lang.get('user.info.discord'),discordfield.value];
+								let discordname = [lang.get('user.info.discord'),discord];
 								if ( discordmember ) discordname[1] = discordmember.toString();
 								
 								if ( msg.showEmbed() ) embed.addField( discordname[0], discordname[1], true );
 								else text += '\n' + discordname.join(' ');
 							}
 							if ( msg.showEmbed() ) {
-								if ( avatarfield && avatarfield.value ) embed.setThumbnail( avatarfield.value );
-								if ( biofield && biofield.value && !embed.description ) {
-									var bio = biofield.value.escapeFormatting();
+								if ( pbody.userData.avatar ) embed.setThumbnail( pbody.userData.avatar.replace( '/thumbnail/width/400/height/400', '' ) );
+								if ( pbody.userData.bio && !embed.description ) {
+									let bio = pbody.userData.bio.escapeFormatting();
 									if ( bio.length > 2000 ) bio = bio.substring(0, 2000) + '\u2026';
 									embed.setDescription( bio );
 								}

+ 15 - 3
functions/global_block.js

@@ -55,7 +55,11 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender =
 					let $ = cheerio.load(gbody);
 					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'),value:'[' + globaledits + '](https://community.fandom.com/wiki/Special:Editcount/' + username.toTitle(true) + ')',inline:true});
+						if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
+							name: lang.get('user.info.globaleditcount'),
+							value: '[' + globaledits + '](https://community.fandom.com/wiki/Special:Editcount/' + username.toTitle(true) + ')',
+							inline: true
+						});
 						else {
 							let splittext = text.split('\n');
 							splittext.splice(5, 0, lang.get('user.info.globaleditcount') + ' ' + globaledits);
@@ -122,7 +126,11 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender =
 					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});
+						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);
@@ -131,7 +139,11 @@ function global_block(lang, msg, username, text, embed, wiki, spoiler, gender =
 					}
 					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'),value:'[' + globaledits + '](https://help.gamepedia.com/Gamepedia_Help_Wiki:Global_user_tracker#' + wiki.replace( /^https:\/\/([a-z\d-]{1,50})\.gamepedia\.com\/$/, '$1/' ) + username.toTitle(true) + ')',inline:true});
+						if ( msg.showEmbed() ) embed.spliceFields(1, 0, {
+							name: lang.get('user.info.globaleditcount'),
+							value: '[' + globaledits + '](https://help.gamepedia.com/Gamepedia_Help_Wiki:Global_user_tracker#' + wiki.replace( /^https:\/\/([a-z\d-]{1,50})\.gamepedia\.com\/$/, '$1/' ) + username.toTitle(true) + ')',
+							inline: true
+						});
 						else {
 							let splittext = text.split('\n');
 							splittext.splice(5, 0, lang.get('user.info.globaleditcount') + ' ' + globaledits);

+ 1 - 0
i18n/en.json

@@ -663,6 +663,7 @@
             "globaleditcount": "Global edit count:",
             "group": "Group:",
             "loading": "Loading global statistics…",
+            "postcount": "Discussion posts:",
             "registration": "Registration date:",
             "wikisedited": "Wikis edited:"
         }