Selaa lähdekoodia

decode interwiki URI

Markus-Rost 4 vuotta sitten
vanhempi
sitoutus
4d5707042e
2 muutettua tiedostoa jossa 6 lisäystä ja 5 poistoa
  1. 5 4
      interactions/inline.js
  2. 1 1
      util/newMessage.js

+ 5 - 4
interactions/inline.js

@@ -11,8 +11,6 @@ const {limitLength, partialURIdecode} = require('../util/functions.js');
  */
  */
 function slash_inline(interaction, lang, wiki, guild) {
 function slash_inline(interaction, lang, wiki, guild) {
 	var text = ( interaction.data.options?.[0]?.value || '' ).replace( /\]\(/g, ']\\(' ).trim();
 	var text = ( interaction.data.options?.[0]?.value || '' ).replace( /\]\(/g, ']\\(' ).trim();
-	console.log( ( interaction.guild_id || '@' + interaction.user.id ) + ': Slash: ' + text );
-	logging(wiki, interaction.guild_id, 'slash', 'inline');
 	if ( !text ) {
 	if ( !text ) {
 		return got.post( `https://discord.com/api/v8/interactions/${interaction.id}/${interaction.token}/callback`, {
 		return got.post( `https://discord.com/api/v8/interactions/${interaction.id}/${interaction.token}/callback`, {
 			json: {
 			json: {
@@ -111,6 +109,7 @@ function slash_inline(interaction, lang, wiki, guild) {
 				}
 				}
 				return;
 				return;
 			}
 			}
+			logging(wiki, interaction.guild_id, 'slash', 'inline');
 			wiki.updateWiki(body.query.general);
 			wiki.updateWiki(body.query.general);
 			if ( body.query.normalized ) {
 			if ( body.query.normalized ) {
 				body.query.normalized.forEach( title => {
 				body.query.normalized.forEach( title => {
@@ -122,10 +121,10 @@ function slash_inline(interaction, lang, wiki, guild) {
 			if ( body.query.interwiki ) {
 			if ( body.query.interwiki ) {
 				body.query.interwiki.forEach( interwiki => {
 				body.query.interwiki.forEach( interwiki => {
 					templates.filter( link => link.title === interwiki.title ).forEach( link => {
 					templates.filter( link => link.title === interwiki.title ).forEach( link => {
-						link.url = interwiki.url;
+						link.url = decodeURI(interwiki.url)
 					} );
 					} );
 					links.filter( link => link.title === interwiki.title ).forEach( link => {
 					links.filter( link => link.title === interwiki.title ).forEach( link => {
-						link.url = ( link.section ? interwiki.url.split('#')[0] + Wiki.toSection(link.section) : interwiki.url );
+						link.url = ( link.section ? decodeURI(interwiki.url.split('#')[0]) + Wiki.toSection(link.section) : decodeURI(interwiki.url) );
 					} );
 					} );
 				} );
 				} );
 			}
 			}
@@ -175,6 +174,7 @@ function slash_inline(interaction, lang, wiki, guild) {
 						let rawTitle = title.replace( /\u200b<replacement\u200b\d+\u200b(.+?)>\u200b/g, '$1' ).trim();
 						let rawTitle = title.replace( /\u200b<replacement\u200b\d+\u200b(.+?)>\u200b/g, '$1' ).trim();
 						let link = templates.find( link => link.raw === rawTitle );
 						let link = templates.find( link => link.raw === rawTitle );
 						if ( !link ) return fullLink;
 						if ( !link ) return fullLink;
+						console.log( ( interaction.guild_id || '@' + interaction.user.id ) + ': Slash: ' + fullLink );
 						title = title.replace( /\u200b<replacement\u200b(\d+)\u200b(.+?)>\u200b/g, (replacement, id, arg) => {
 						title = title.replace( /\u200b<replacement\u200b(\d+)\u200b(.+?)>\u200b/g, (replacement, id, arg) => {
 							links.splice(id - emojiReplacements, 1);
 							links.splice(id - emojiReplacements, 1);
 							emojiReplacements++;
 							emojiReplacements++;
@@ -194,6 +194,7 @@ function slash_inline(interaction, lang, wiki, guild) {
 						let rawTitle = title.replace( /\u200b<replacement\u200b\d+\u200b(.+?)>\u200b/g, '$1' ).split('#')[0].trim();
 						let rawTitle = title.replace( /\u200b<replacement\u200b\d+\u200b(.+?)>\u200b/g, '$1' ).split('#')[0].trim();
 						let link = links.find( link => link.raw === rawTitle );
 						let link = links.find( link => link.raw === rawTitle );
 						if ( !link ) return fullLink;
 						if ( !link ) return fullLink;
+						console.log( ( interaction.guild_id || '@' + interaction.user.id ) + ': Slash: ' + fullLink );
 						title = title.replace( /\u200b<replacement\u200b(\d+)\u200b(.+?)>\u200b/g, (replacement, id, arg) => {
 						title = title.replace( /\u200b<replacement\u200b(\d+)\u200b(.+?)>\u200b/g, (replacement, id, arg) => {
 							links.splice(id - emojiReplacements, 1);
 							links.splice(id - emojiReplacements, 1);
 							emojiReplacements++;
 							emojiReplacements++;

+ 1 - 1
util/newMessage.js

@@ -173,7 +173,7 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 			if ( body.query.interwiki ) {
 			if ( body.query.interwiki ) {
 				body.query.interwiki.forEach( interwiki => links.filter( link => link.title === interwiki.title ).forEach( link => {
 				body.query.interwiki.forEach( interwiki => links.filter( link => link.title === interwiki.title ).forEach( link => {
 					logging(wiki, msg.guild?.id, 'inline', 'interwiki');
 					logging(wiki, msg.guild?.id, 'inline', 'interwiki');
-					link.url = ( link.section ? interwiki.url.split('#')[0] + Wiki.toSection(link.section) : interwiki.url );
+					link.url = ( link.section ? decodeURI(interwiki.url.split('#')[0]) + Wiki.toSection(link.section) : decodeURI(interwiki.url) );
 				} ) );
 				} ) );
 			}
 			}
 			if ( body.query.pages ) {
 			if ( body.query.pages ) {