Markus-Rost il y a 4 ans
Parent
commit
a0861cb332
2 fichiers modifiés avec 34 ajouts et 16 suppressions
  1. 28 12
      dashboard/slash.js
  2. 6 4
      functions/parse_page.js

+ 28 - 12
dashboard/slash.js

@@ -178,7 +178,7 @@ function dashboard_slash(res, $, guild, args, dashboardLang) {
  * @param {Function} res - The server response
  * @param {Function} res - The server response
  * @param {import('./util.js').Settings} userSettings - The settings of the user
  * @param {import('./util.js').Settings} userSettings - The settings of the user
  * @param {String} guild - The id of the guild
  * @param {String} guild - The id of the guild
- * @param {String|Number} type - The setting to change
+ * @param {String} type - The setting to change
  * @param {Object} settings - The new settings
  * @param {Object} settings - The new settings
  */
  */
 function update_slash(res, userSettings, guild, type, settings) {
 function update_slash(res, userSettings, guild, type, settings) {
@@ -252,20 +252,36 @@ function update_slash(res, userSettings, guild, type, settings) {
 					return res(`/guild/${guild}/slash/${type}`, 'savefail');
 					return res(`/guild/${guild}/slash/${type}`, 'savefail');
 				}
 				}
 				res(`/guild/${guild}/slash/${type}`, 'save');
 				res(`/guild/${guild}/slash/${type}`, 'save');
+				var changes = [
+					...permissions.map( perm => {
+						var oldPerm = oldPermissions.find( oldPerm => oldPerm.id === perm.id );
+						if ( !oldPerm ) return {
+							role: ( perm.id === guild ? '@everyone' : `<@&${perm.id}>` ),
+							old: 'default',
+							new: ( perm.permission ? 'allow' : 'deny' )
+						};
+						if ( perm.permission === oldPerm.permission ) return null;
+						return {
+							role: ( perm.id === guild ? '@everyone' : `<@&${perm.id}>` ),
+							old: ( oldPerm.permission ? 'allow' : 'deny' ),
+							new: ( perm.permission ? 'allow' : 'deny' )
+						};
+					} ).filter( change => change ),
+					...oldPermissions.filter( oldPerm => !permissions.some( perm => perm.id === oldPerm.id ) ).map( oldPerm => {
+						return {
+							role: ( oldPerm.id === guild ? '@everyone' : `<@&${oldPerm.id}>` ),
+							old: ( oldPerm.permission ? 'allow' : 'deny' ),
+							new: 'default'
+						};
+					} )
+				];
+				if ( !changes.length ) return;
 				return db.query( 'SELECT lang FROM discord WHERE guild = $1 AND channel IS NULL', [guild] ).then( ({rows:[channel]}) => {
 				return db.query( 'SELECT lang FROM discord WHERE guild = $1 AND channel IS NULL', [guild] ).then( ({rows:[channel]}) => {
 					var lang = new Lang(channel?.lang);
 					var lang = new Lang(channel?.lang);
 					var text = lang.get('interaction.dashboard.updated', `<@${userSettings.user.id}>`, '/' + commandName);
 					var text = lang.get('interaction.dashboard.updated', `<@${userSettings.user.id}>`, '/' + commandName);
-					text += permissions.map( perm => {
-						var oldPerm = oldPermissions.find( oldPerm => oldPerm.id === perm.id );
-						if ( !oldPerm ) {
-							return '\n' + ( perm.id === guild ? '@everyone' : `<@&${perm.id}>` ) + ': ~~`' + lang.get('interaction.dashboard.perm_default') + '`~~ → `' + lang.get('interaction.dashboard.perm_' + ( perm.permission ? 'allow' : 'deny' )) + '`';
-						}
-						if ( perm.permission === oldPerm.permission ) return '';
-						return '\n' + ( perm.id === guild ? '@everyone' : `<@&${perm.id}>` ) + ': ~~`' + lang.get('interaction.dashboard.perm_' + ( oldPerm.permission ? 'allow' : 'deny' )) + '`~~ → `' + lang.get('interaction.dashboard.perm_' + ( perm.permission ? 'allow' : 'deny' )) + '`';
-					} ).join('');
-					text += oldPermissions.filter( oldPerm => !permissions.some( perm => perm.id === oldPerm.id ) ).map( oldPerm => {
-						return '\n' + ( oldPerm.id === guild ? '@everyone' : `<@&${oldPerm.id}>` ) + ': ~~`' + lang.get('interaction.dashboard.perm_' + ( oldPerm.permission ? 'allow' : 'deny' )) + '`~~ → `' + lang.get('interaction.dashboard.perm_default') + '`';
-					} ).join('');
+					text += '\n' + changes.map( change => {
+						return change.role + ': ~~`' + lang.get('interaction.dashboard.perm_' + change.old) + '`~~ → `' + lang.get('interaction.dashboard.perm_' + change.new) + '`';
+					} ).join('\n');
 					text += `\n<${new URL(`/guild/${guild}/slash/${type}`, process.env.dashboard).href}>`;
 					text += `\n<${new URL(`/guild/${guild}/slash/${type}`, process.env.dashboard).href}>`;
 					sendMsg( {
 					sendMsg( {
 						type: 'notifyGuild', guild, text
 						type: 'notifyGuild', guild, text

+ 6 - 4
functions/parse_page.js

@@ -231,6 +231,7 @@ function parse_page(lang, msg, content, embed, wiki, reaction, {title, contentmo
 				let rows = infobox.find([
 				let rows = infobox.find([
 					'> tbody > tr',
 					'> tbody > tr',
 					'> tbody > tr > th.mainheader',
 					'> tbody > tr > th.mainheader',
+					'> tbody > tr > th.infobox-header',
 					'> table > tbody > tr',
 					'> table > tbody > tr',
 					'div.section > div.title',
 					'div.section > div.title',
 					'div.section > table > tbody > tr',
 					'div.section > table > tbody > tr',
@@ -243,19 +244,20 @@ function parse_page(lang, msg, content, embed, wiki, reaction, {title, contentmo
 				for ( let i = 0; i < rows.length; i++ ) {
 				for ( let i = 0; i < rows.length; i++ ) {
 					if ( embed.fields.length >= 25 || embed.length > 5400 ) break;
 					if ( embed.fields.length >= 25 || embed.length > 5400 ) break;
 					let row = rows.eq(i);
 					let row = rows.eq(i);
-					if ( row.is('th.mainheader, div.title, h2.pi-header') ) {
+					if ( row.is('th.mainheader, th.infobox-header, div.title, h2.pi-header') ) {
 						row.find(removeClasses.join(', ')).remove();
 						row.find(removeClasses.join(', ')).remove();
-						let label = htmlToPlain(row).trim();
+						let label = htmlToDiscord(row, embed.url).trim();
 						if ( label.length > 100 ) label = label.substring(0, 100) + '\u2026';
 						if ( label.length > 100 ) label = label.substring(0, 100) + '\u2026';
 						if ( label ) {
 						if ( label ) {
+							if ( !label.includes( '**' ) ) label = '**' + label + '**';
 							if ( embed.fields.length && embed.fields[embed.fields.length - 1].name === '\u200b' ) {
 							if ( embed.fields.length && embed.fields[embed.fields.length - 1].name === '\u200b' ) {
 								embed.spliceFields( embed.fields.length - 1, 1, {
 								embed.spliceFields( embed.fields.length - 1, 1, {
 									name: '\u200b',
 									name: '\u200b',
-									value: '**' + label + '**',
+									value: label,
 									inline: false
 									inline: false
 								} );
 								} );
 							}
 							}
-							else embed.addField( '\u200b', '**' + label + '**', false );
+							else embed.addField( '\u200b', label, false );
 						}
 						}
 					}
 					}
 					else if ( row.is('tr, div.pi-data, div.infobox-row') ) {
 					else if ( row.is('tr, div.pi-data, div.infobox-row') ) {