Markus-Rost %!s(int64=4) %!d(string=hai) anos
pai
achega
af827ee9e8
Modificáronse 4 ficheiros con 14 adicións e 7 borrados
  1. 5 2
      bot.js
  2. 2 4
      interactions/inline.js
  3. 1 1
      interactions/verify.js
  4. 6 0
      util/default.json

+ 5 - 2
bot.js

@@ -245,10 +245,13 @@ client.ws.on( 'INTERACTION_CREATE', interaction => {
 	if ( !interaction.guild_id ) {
 		return slash[interaction.data.name](interaction, new Lang(), new Wiki(), channel);
 	}
-	else interaction.user = interaction.member.user;
+	else {
+		interaction.user = interaction.member.user;
+		interaction.member.permissions = new Discord.Permissions(interaction.member.permissions);
+	}
 	db.query( 'SELECT wiki, lang, role FROM discord WHERE guild = $1 AND (channel = $2 OR channel = $3 OR channel IS NULL) ORDER BY channel DESC NULLS LAST LIMIT 1', [interaction.guild_id, interaction.channel_id, '#' + channel?.parentID] ).then( ({rows:[row]}) => {
 		var lang = new Lang(( row?.lang || channel?.guild?.preferredLocale ));
-		if ( row?.role && !interaction.member.roles.includes( row.role ) && channel?.guild?.roles.cache.has(row.role) && ( !interaction.member.roles.length || !interaction.member.roles.some( role => channel.guild.roles.cache.get(role)?.comparePositionTo(row.role) >= 0 ) ) ) {
+		if ( row?.role && !interaction.member.roles.includes( row.role ) && !interaction.member.permissions.has('MANAGE_GUILD') && channel?.guild?.roles.cache.has(row.role) && ( !interaction.member.roles.length || !interaction.member.roles.some( role => channel.guild.roles.cache.get(role)?.comparePositionTo(row.role) >= 0 ) ) ) {
 			return client.api.interactions(interaction.id, interaction.token).callback.post( {
 				data: {
 					type: 4,

+ 2 - 4
interactions/inline.js

@@ -31,15 +31,13 @@ function slash_inline(interaction, lang, wiki, channel) {
 		parse: ['users']
 	};
 	if ( interaction.guild_id ) {
-		if ( ( (interaction.member.permissions & 1 << 3) === 1 << 3 ) // ADMINISTRATOR
-		|| ( (interaction.member.permissions & 1 << 17) === 1 << 17 ) ) { // MENTION_EVERYONE
+		if ( interaction.member.permissions.has('MENTION_EVERYONE') ) {
 			allowed_mentions.parse = ['users', 'roles', 'everyone'];
 		}
 		else if ( channel?.guild ) {
 			allowed_mentions.roles = channel.guild.roles.cache.filter( role => role.mentionable ).map( role => role.id ).slice(0, 100);
 		}
-		if ( channel?.guild && ( (interaction.member.permissions & 1 << 3) !== 1 << 3 ) // ADMINISTRATOR
-		&& ( (interaction.member.permissions & 1 << 18) !== 1 << 18 ) ) { // USE_EXTERNAL_EMOJIS
+		if ( channel?.guild && !interaction.member.permissions.has('USE_EXTERNAL_EMOJIS') ) {
 			text = text.replace( /(?<!\\)<a?(:\w+:)\d+>/g, (replacement, emoji, id) => {
 				if ( channel.guild.emojis.cache.has(id) ) {
 					return replacement;

+ 1 - 1
interactions/verify.js

@@ -50,7 +50,7 @@ function slash_verify(interaction, lang, wiki, channel) {
 	} ).then( () => {
 		return db.query( 'SELECT role, editcount, postcount, usergroup, accountage, rename FROM verification WHERE guild = $1 AND channel LIKE $2 ORDER BY configid ASC', [interaction.guild_id, '%|' + interaction.channel_id + '|%'] ).then( ({rows}) => {
 			if ( !rows.length ) return sendMessage(interaction, {
-				content: reply + lang.get('verify.missing') + ( (interaction.member.permissions & 1 << 5) === 1 << 5 ? '\n' + new URL(`/guild/${interaction.guild_id}/verification`, process.env.dashboard).href : '' ), // MANAGE_GUILD
+				content: reply + lang.get('verify.missing') + ( interaction.member.permissions.has('MANAGE_GUILD') ? '\n' + new URL(`/guild/${interaction.guild_id}/verification`, process.env.dashboard).href : '' ),
 				allowed_mentions
 			}, channel);
 			

+ 6 - 0
util/default.json

@@ -165,6 +165,12 @@
 			"articlePath": "/wiki/",
 			"scriptPath": "/w/"
 		},
+		{
+			"name": "translatewiki.net",
+			"regex": "(translatewiki\\.net)",
+			"articlePath": "/wiki/",
+			"scriptPath": "/w/"
+		},
 		{
 			"name": "miraheze.org",
 			"regex": "((?:[a-z\\d-]{1,50}\\.)miraheze\\.org)",