소스 검색

Use wiki timezone

Markus-Rost 4 년 전
부모
커밋
7173b74136
9개의 변경된 파일22개의 추가작업 그리고 20개의 파일을 삭제
  1. 1 1
      cmds/wiki/diff.js
  2. 1 1
      cmds/wiki/fandom/diff.js
  3. 1 1
      cmds/wiki/fandom/overview.js
  4. 6 4
      cmds/wiki/fandom/user.js
  5. 4 3
      cmds/wiki/overview.js
  6. 7 5
      cmds/wiki/user.js
  7. 0 2
      functions/global_block.js
  8. 2 2
      functions/special_page.js
  9. 0 1
      util/default.json

+ 1 - 1
cmds/wiki/diff.js

@@ -182,7 +182,7 @@ function gamepedia_diff_send(lang, msg, args, wiki, reaction, spoiler, compare)
 			var diff = revisions[0].revid;
 			var diff = revisions[0].revid;
 			var oldid = ( revisions[1] ? revisions[1].revid : 0 );
 			var oldid = ( revisions[1] ? revisions[1].revid : 0 );
 			var editor = [lang.get('diff.info.editor'), ( revisions[0].userhidden !== undefined ? lang.get('diff.hidden') : revisions[0].user )];
 			var editor = [lang.get('diff.info.editor'), ( revisions[0].userhidden !== undefined ? lang.get('diff.hidden') : revisions[0].user )];
-			var timestamp = [lang.get('diff.info.timestamp'), new Date(revisions[0].timestamp).toLocaleString(lang.get('dateformat'), timeoptions)];
+			var timestamp = [lang.get('diff.info.timestamp'), new Date(revisions[0].timestamp).toLocaleString(lang.get('dateformat'), Object.assign({timeZone: body.query.general.timezone}, timeoptions))];
 			var difference = revisions[0].size - ( revisions[1] ? revisions[1].size : 0 );
 			var difference = revisions[0].size - ( revisions[1] ? revisions[1].size : 0 );
 			var size = [lang.get('diff.info.size'), lang.get('diff.info.bytes', ( difference > 0 ? '+' : '' ) + difference.toLocaleString(lang.get('dateformat')), difference)];
 			var size = [lang.get('diff.info.size'), lang.get('diff.info.bytes', ( difference > 0 ? '+' : '' ) + difference.toLocaleString(lang.get('dateformat')), difference)];
 			var comment = [lang.get('diff.info.comment'), ( revisions[0].commenthidden !== undefined ? lang.get('diff.hidden') : ( revisions[0].comment ? toFormatting(revisions[0].comment, msg.showEmbed(), wiki, title) : lang.get('diff.nocomment') ) )];
 			var comment = [lang.get('diff.info.comment'), ( revisions[0].commenthidden !== undefined ? lang.get('diff.hidden') : ( revisions[0].comment ? toFormatting(revisions[0].comment, msg.showEmbed(), wiki, title) : lang.get('diff.nocomment') ) )];

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

@@ -169,7 +169,7 @@ function fandom_diff_send(lang, msg, args, wiki, reaction, spoiler, compare) {
 				var diff = revisions[0].revid;
 				var diff = revisions[0].revid;
 				var oldid = ( revisions[1] ? revisions[1].revid : 0 );
 				var oldid = ( revisions[1] ? revisions[1].revid : 0 );
 				var editor = [lang.get('diff.info.editor'), ( revisions[0].userhidden !== undefined ? lang.get('diff.hidden') : revisions[0].user )];
 				var editor = [lang.get('diff.info.editor'), ( revisions[0].userhidden !== undefined ? lang.get('diff.hidden') : revisions[0].user )];
-				var timestamp = [lang.get('diff.info.timestamp'), new Date(revisions[0].timestamp).toLocaleString(lang.get('dateformat'), timeoptions)];
+				var timestamp = [lang.get('diff.info.timestamp'), new Date(revisions[0].timestamp).toLocaleString(lang.get('dateformat'), Object.assign({timeZone: body.query.general.timezone}, timeoptions))];
 				var difference = revisions[0].size - ( revisions[1] ? revisions[1].size : 0 );
 				var difference = revisions[0].size - ( revisions[1] ? revisions[1].size : 0 );
 				var size = [lang.get('diff.info.size'), lang.get('diff.info.bytes', ( difference > 0 ? '+' : '' ) + difference.toLocaleString(lang.get('dateformat')), difference)];
 				var size = [lang.get('diff.info.size'), lang.get('diff.info.bytes', ( difference > 0 ? '+' : '' ) + difference.toLocaleString(lang.get('dateformat')), difference)];
 				var comment = [lang.get('diff.info.comment'), ( revisions[0].commenthidden !== undefined ? lang.get('diff.hidden') : ( revisions[0].comment ? toFormatting(revisions[0].comment, msg.showEmbed(), wiki, title) : lang.get('diff.nocomment') ) )];
 				var comment = [lang.get('diff.info.comment'), ( revisions[0].commenthidden !== undefined ? lang.get('diff.hidden') : ( revisions[0].comment ? toFormatting(revisions[0].comment, msg.showEmbed(), wiki, title) : lang.get('diff.nocomment') ) )];

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

@@ -56,7 +56,7 @@ function fandom_overview(lang, msg, wiki, reaction, spoiler) {
 					let merge = body.query.allmessages[2]['*'].split('/');
 					let merge = body.query.allmessages[2]['*'].split('/');
 					crossover.push('<https://' + merge[0] + '.fandom.com/' + ( merge[1] ? merge[1] + '/' : '' ) + '>');
 					crossover.push('<https://' + merge[0] + '.fandom.com/' + ( merge[1] ? merge[1] + '/' : '' ) + '>');
 				}
 				}
-				var created = [lang.get('overview.created'), new Date(site.creation_date).toLocaleString(lang.get('dateformat'), timeoptions)];
+				var created = [lang.get('overview.created'), new Date(site.creation_date).toLocaleString(lang.get('dateformat'), Object.assign({timeZone: body.query.general.timezone}, timeoptions))];
 				var articles = [lang.get('overview.articles'), body.query.statistics.articles.toLocaleString(lang.get('dateformat'))];
 				var articles = [lang.get('overview.articles'), body.query.statistics.articles.toLocaleString(lang.get('dateformat'))];
 				var pages = [lang.get('overview.pages'), body.query.statistics.pages.toLocaleString(lang.get('dateformat'))];
 				var pages = [lang.get('overview.pages'), body.query.statistics.pages.toLocaleString(lang.get('dateformat'))];
 				var edits = [lang.get('overview.edits'), body.query.statistics.edits.toLocaleString(lang.get('dateformat'))];
 				var edits = [lang.get('overview.edits'), body.query.statistics.edits.toLocaleString(lang.get('dateformat'))];

+ 6 - 4
cmds/wiki/fandom/user.js

@@ -75,16 +75,17 @@ function fandom_user(lang, msg, namespace, username, wiki, querystring, fragment
 			}
 			}
 			else {
 			else {
 				if ( !querypage.noRedirect || ( querypage.missing === undefined && querypage.ns !== -1 ) ) namespace = contribs;
 				if ( !querypage.noRedirect || ( querypage.missing === undefined && querypage.ns !== -1 ) ) namespace = contribs;
+				var localtimeoptions = Object.assign({timeZone: body.query.general.timezone}, timeoptions);
 				var blocks = body.query.blocks.map( block => {
 				var blocks = body.query.blocks.map( block => {
 					var isBlocked = false;
 					var isBlocked = false;
-					var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.get('dateformat'), timeoptions);
+					var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.get('dateformat'), localtimeoptions);
 					var blockexpiry = block.expiry;
 					var blockexpiry = block.expiry;
 					if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 					if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 						blockexpiry = lang.get('user.block.until_infinity');
 						blockexpiry = lang.get('user.block.until_infinity');
 						isBlocked = true;
 						isBlocked = true;
 					} else if ( blockexpiry ) {
 					} else if ( blockexpiry ) {
 						if ( Date.parse(blockexpiry) > Date.now() ) isBlocked = true;
 						if ( Date.parse(blockexpiry) > Date.now() ) isBlocked = true;
-						blockexpiry = new Date(blockexpiry).toLocaleString(lang.get('dateformat'), timeoptions);
+						blockexpiry = new Date(blockexpiry).toLocaleString(lang.get('dateformat'), localtimeoptions);
 					}
 					}
 					if ( isBlocked ) return {
 					if ( isBlocked ) return {
 						header: lang.get('user.block.header', block.user, 'unknown').escapeFormatting(),
 						header: lang.get('user.block.header', block.user, 'unknown').escapeFormatting(),
@@ -239,7 +240,8 @@ function fandom_user(lang, msg, namespace, username, wiki, querystring, fragment
 						default: 
 						default: 
 							gender.push(lang.get('user.gender.unknown'));
 							gender.push(lang.get('user.gender.unknown'));
 					}
 					}
-					var registration = [lang.get('user.info.registration'), new Date(queryuser.registration).toLocaleString(lang.get('dateformat'), timeoptions)];
+					var localtimeoptions = Object.assign({timeZone: body.query.general.timezone}, timeoptions);
+					var registration = [lang.get('user.info.registration'), new Date(queryuser.registration).toLocaleString(lang.get('dateformat'), localtimeoptions)];
 					var editcount = [lang.get('user.info.editcount'), queryuser.editcount.toLocaleString(lang.get('dateformat'))];
 					var editcount = [lang.get('user.info.editcount'), queryuser.editcount.toLocaleString(lang.get('dateformat'))];
 					var groups = queryuser.groups;
 					var groups = queryuser.groups;
 					var group = [lang.get('user.info.group', groups.length)];
 					var group = [lang.get('user.info.group', groups.length)];
@@ -265,7 +267,7 @@ function fandom_user(lang, msg, namespace, username, wiki, querystring, fragment
 						isBlocked = true;
 						isBlocked = true;
 					} else if ( blockexpiry ) {
 					} 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' );
 						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.get('dateformat'), timeoptions);
+						blockexpiry = new Date(blockexpirydate).toLocaleString(lang.get('dateformat'), localtimeoptions);
 						if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 						if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 					}
 					}
 					var blockedby = queryuser.blockedby;
 					var blockedby = queryuser.blockedby;

+ 4 - 3
cmds/wiki/overview.js

@@ -42,9 +42,10 @@ function gamepedia_overview(lang, msg, wiki, reaction, spoiler) {
 		var version = [lang.get('overview.version'), body.query.general.generator];
 		var version = [lang.get('overview.version'), body.query.general.generator];
 		var creation_date = null;
 		var creation_date = null;
 		var created = [lang.get('overview.created'), lang.get('overview.unknown')];
 		var created = [lang.get('overview.created'), lang.get('overview.unknown')];
+		var localtimeoptions = Object.assign({timeZone: body.query.general.timezone}, timeoptions);
 		if ( body.query.logevents?.[0]?.timestamp ) {
 		if ( body.query.logevents?.[0]?.timestamp ) {
 			creation_date = new Date(body.query.logevents[0].timestamp);
 			creation_date = new Date(body.query.logevents[0].timestamp);
-			created[1] = creation_date.toLocaleString(lang.get('dateformat'), timeoptions);
+			created[1] = creation_date.toLocaleString(lang.get('dateformat'), localtimeoptions);
 		}
 		}
 		var language = [lang.get('overview.lang'), body.query.languages.find( language => {
 		var language = [lang.get('overview.lang'), body.query.languages.find( language => {
 			return language.code === body.query.general.lang;
 			return language.code === body.query.general.lang;
@@ -121,7 +122,7 @@ function gamepedia_overview(lang, msg, wiki, reaction, spoiler) {
 				official[1] = lang.get('overview.' + ( site.official_wiki ? 'yes' : 'no' ));
 				official[1] = lang.get('overview.' + ( site.official_wiki ? 'yes' : 'no' ));
 				if ( site.created && creation_date > new Date(parseInt(site.created + '000', 10)) ) {
 				if ( site.created && creation_date > new Date(parseInt(site.created + '000', 10)) ) {
 					creation_date = new Date(parseInt(site.created + '000', 10));
 					creation_date = new Date(parseInt(site.created + '000', 10));
-					created[1] = creation_date.toLocaleString(lang.get('dateformat'), timeoptions);
+					created[1] = creation_date.toLocaleString(lang.get('dateformat'), localtimeoptions);
 				}
 				}
 				if ( site.wiki_crossover ) crossover[1] = '<https://' + site.wiki_crossover + '/>';
 				if ( site.wiki_crossover ) crossover[1] = '<https://' + site.wiki_crossover + '/>';
 				if ( site.wiki_description ) {
 				if ( site.wiki_description ) {
@@ -145,7 +146,7 @@ function gamepedia_overview(lang, msg, wiki, reaction, spoiler) {
 				founder[1] = site.founding_user_id;
 				founder[1] = site.founding_user_id;
 				if ( site.creation_date && creation_date > new Date(site.creation_date) ) {
 				if ( site.creation_date && creation_date > new Date(site.creation_date) ) {
 					creation_date = new Date(site.creation_date);
 					creation_date = new Date(site.creation_date);
-					created[1] = creation_date.toLocaleString(lang.get('dateformat'), timeoptions);
+					created[1] = creation_date.toLocaleString(lang.get('dateformat'), localtimeoptions);
 				}
 				}
 				if ( site.desc ) {
 				if ( site.desc ) {
 					description[1] = site.desc.escapeFormatting();
 					description[1] = site.desc.escapeFormatting();

+ 7 - 5
cmds/wiki/user.js

@@ -87,16 +87,17 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 			return;
 			return;
 		}
 		}
 		if ( !querypage.noRedirect || ( querypage.missing === undefined && querypage.ns !== -1 ) ) namespace = contribs;
 		if ( !querypage.noRedirect || ( querypage.missing === undefined && querypage.ns !== -1 ) ) namespace = contribs;
+		var localtimeoptions = Object.assign({timeZone: body.query.general.timezone}, timeoptions);
 		var blocks = body.query.blocks.map( block => {
 		var blocks = body.query.blocks.map( block => {
 			var isBlocked = false;
 			var isBlocked = false;
-			var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.get('dateformat'), timeoptions);
+			var blockedtimestamp = new Date(block.timestamp).toLocaleString(lang.get('dateformat'), localtimeoptions);
 			var blockexpiry = block.expiry;
 			var blockexpiry = block.expiry;
 			if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 			if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 				blockexpiry = lang.get('user.block.until_infinity');
 				blockexpiry = lang.get('user.block.until_infinity');
 				isBlocked = true;
 				isBlocked = true;
 			} else if ( blockexpiry ) {
 			} else if ( blockexpiry ) {
 				if ( Date.parse(blockexpiry) > Date.now() ) isBlocked = true;
 				if ( Date.parse(blockexpiry) > Date.now() ) isBlocked = true;
-				blockexpiry = new Date(blockexpiry).toLocaleString(lang.get('dateformat'), timeoptions);
+				blockexpiry = new Date(blockexpiry).toLocaleString(lang.get('dateformat'), localtimeoptions);
 			}
 			}
 			if ( isBlocked ) return {
 			if ( isBlocked ) return {
 				header: lang.get('user.block.header', block.user, 'unknown').escapeFormatting(),
 				header: lang.get('user.block.header', block.user, 'unknown').escapeFormatting(),
@@ -263,7 +264,8 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 			default: 
 			default: 
 				gender.push(lang.get('user.gender.unknown'));
 				gender.push(lang.get('user.gender.unknown'));
 		}
 		}
-		var registration = [lang.get('user.info.registration'), new Date(queryuser.registration).toLocaleString(lang.get('dateformat'), timeoptions)];
+		var localtimeoptions = Object.assign({timeZone: body.query.general.timezone}, timeoptions);
+		var registration = [lang.get('user.info.registration'), new Date(queryuser.registration).toLocaleString(lang.get('dateformat'), localtimeoptions)];
 		var editcount = [lang.get('user.info.editcount'), queryuser.editcount.toLocaleString(lang.get('dateformat'))];
 		var editcount = [lang.get('user.info.editcount'), queryuser.editcount.toLocaleString(lang.get('dateformat'))];
 		var groups = queryuser.groups.filter( group => !usergroups.ignored.includes( group ) );
 		var groups = queryuser.groups.filter( group => !usergroups.ignored.includes( group ) );
 		var globalgroups = [];
 		var globalgroups = [];
@@ -332,14 +334,14 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 				}
 				}
 			}
 			}
 			var isBlocked = false;
 			var isBlocked = false;
-			var blockedtimestamp = new Date(queryuser.blockedtimestamp).toLocaleString(lang.get('dateformat'), timeoptions);
+			var blockedtimestamp = new Date(queryuser.blockedtimestamp).toLocaleString(lang.get('dateformat'), localtimeoptions);
 			var blockexpiry = queryuser.blockexpiry;
 			var blockexpiry = queryuser.blockexpiry;
 			if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 			if ( ['infinite', 'indefinite', 'infinity', 'never'].includes(blockexpiry) ) {
 				blockexpiry = lang.get('user.block.until_infinity');
 				blockexpiry = lang.get('user.block.until_infinity');
 				isBlocked = true;
 				isBlocked = true;
 			} else if ( blockexpiry ) {
 			} 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' );
 				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.get('dateformat'), timeoptions);
+				blockexpiry = new Date(blockexpirydate).toLocaleString(lang.get('dateformat'), localtimeoptions);
 				if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 				if ( Date.parse(blockexpirydate) > Date.now() ) isBlocked = true;
 			}
 			}
 			var blockedby = queryuser.blockedby;
 			var blockedby = queryuser.blockedby;

+ 0 - 2
functions/global_block.js

@@ -1,6 +1,4 @@
 const cheerio = require('cheerio');
 const cheerio = require('cheerio');
-const {timeoptions} = require('../util/default.json');
-const toTitle = require('../util/wiki.js').toTitle;
 
 
 /**
 /**
  * Add global blocks to user messages.
  * Add global blocks to user messages.

+ 2 - 2
functions/special_page.js

@@ -32,7 +32,7 @@ const queryfunctions = {
 		return '[' + result.title.replace( / /g, '_' ).escapeFormatting() + '](' + wiki.toLink(result.title, 'redirect=no', '', true) + ')' + ( result.databaseResult && result.databaseResult.b_title && result.databaseResult.c_title ? ' → ' + result.databaseResult.b_title.escapeFormatting() + ' → ' + result.databaseResult.c_title.escapeFormatting() : '' );
 		return '[' + result.title.replace( / /g, '_' ).escapeFormatting() + '](' + wiki.toLink(result.title, 'redirect=no', '', true) + ')' + ( result.databaseResult && result.databaseResult.b_title && result.databaseResult.c_title ? ' → ' + result.databaseResult.b_title.escapeFormatting() + ' → ' + result.databaseResult.c_title.escapeFormatting() : '' );
 	} ).join('\n'),
 	} ).join('\n'),
 	timestamp: (query, wiki, lang) => query.querypage.results.map( result => {
 	timestamp: (query, wiki, lang) => query.querypage.results.map( result => {
-		return new Date(result.timestamp).toLocaleString(lang.get('dateformat'), timeoptions).escapeFormatting() + ': [' + result.title.escapeFormatting() + '](' + wiki.toLink(result.title, '', '', true) + ')';
+		return new Date(result.timestamp).toLocaleString(lang.get('dateformat'), Object.assign({timeZone: query.general.timezone}, timeoptions)).escapeFormatting() + ': [' + result.title.escapeFormatting() + '](' + wiki.toLink(result.title, '', '', true) + ')';
 	} ).join('\n'),
 	} ).join('\n'),
 	media: (query, wiki, lang) => query.querypage.results.map( result => {
 	media: (query, wiki, lang) => query.querypage.results.map( result => {
 		var ms = result.title.split(';');
 		var ms = result.title.split(';');
@@ -132,7 +132,7 @@ function special_page(lang, msg, title, specialpage, embed, wiki, reaction, spoi
 	if ( specialpage === 'recentchanges' && msg.isAdmin() ) {
 	if ( specialpage === 'recentchanges' && msg.isAdmin() ) {
 		embed.addField( lang.get('rcscript.title'), lang.get('rcscript.ad', ( patreons[msg?.guild?.id] || process.env.prefix ), '[RcGcDw](https://gitlab.com/piotrex43/RcGcDw)') );
 		embed.addField( lang.get('rcscript.title'), lang.get('rcscript.ad', ( patreons[msg?.guild?.id] || process.env.prefix ), '[RcGcDw](https://gitlab.com/piotrex43/RcGcDw)') );
 	}
 	}
-	got.get( wiki + 'api.php?action=query&meta=allmessages&amenableparser=true&amtitle=' + encodeURIComponent( title ) + '&ammessages=' + ( descriptions.hasOwnProperty(specialpage) ? descriptions[specialpage] : encodeURIComponent( specialpage ) + '-summary' ) + ( querypages.hasOwnProperty(specialpage) ? querypages[specialpage][0] : '' ) + '&format=json' ).then( response => {
+	got.get( wiki + 'api.php?action=query&meta=allmessages|siteinfo&siprop=general&amenableparser=true&amtitle=' + encodeURIComponent( title ) + '&ammessages=' + ( descriptions.hasOwnProperty(specialpage) ? descriptions[specialpage] : encodeURIComponent( specialpage ) + '-summary' ) + ( querypages.hasOwnProperty(specialpage) ? querypages[specialpage][0] : '' ) + '&format=json' ).then( response => {
 		var body = response.body;
 		var body = response.body;
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( body && body.warnings ) log_warn(body.warnings);
 		if ( response.statusCode !== 200 || !body ) {
 		if ( response.statusCode !== 200 || !body ) {

+ 0 - 1
util/default.json

@@ -37,7 +37,6 @@
 		"day": "numeric",
 		"day": "numeric",
 		"hour": "2-digit",
 		"hour": "2-digit",
 		"minute": "2-digit",
 		"minute": "2-digit",
-		"timeZone": "UTC",
 		"timeZoneName": "short"
 		"timeZoneName": "short"
 	},
 	},
 	"usergroups": {
 	"usergroups": {