1
0
Markus-Rost 4 жил өмнө
parent
commit
f46d03076f

+ 4 - 2
cmds/patreon.js

@@ -1,4 +1,4 @@
-const {limit: {verification: verificationLimit, rcgcdw: rcgcdwLimit}} = require('../util/default.json');
+const {defaultPermissions, limit: {verification: verificationLimit, rcgcdw: rcgcdwLimit}} = require('../util/default.json');
 var db = require('../util/database.js');
 var db = require('../util/database.js');
 
 
 /**
 /**
@@ -17,7 +17,9 @@ function cmd_patreon(lang, msg, args, line, wiki) {
 	
 	
 	if ( args[0] === 'enable' && /^\d+$/.test(args.slice(1).join(' ')) ) return msg.client.shard.broadcastEval( `this.guilds.cache.get('${args[1]}')?.name` ).then( results => {
 	if ( args[0] === 'enable' && /^\d+$/.test(args.slice(1).join(' ')) ) return msg.client.shard.broadcastEval( `this.guilds.cache.get('${args[1]}')?.name` ).then( results => {
 		var guild = results.find( result => result !== null );
 		var guild = results.find( result => result !== null );
-		if ( guild === undefined ) return msg.replyMsg( 'I\'m not on a server with the id `' + args[1] + '`.', {}, true );
+		if ( guild === undefined ) return msg.client.generateInvite(defaultPermissions).then( invite => {
+			msg.replyMsg( 'I\'m not on a server with the id `' + args[1] + '`.\n<' + invite + '&guild_id=' + args[1] + '>', {}, true )
+		}, log_error );
 		if ( args[1] in patreons ) return msg.replyMsg( '"' + guild + '" has the patreon features already enabled.', {}, true );
 		if ( args[1] in patreons ) return msg.replyMsg( '"' + guild + '" has the patreon features already enabled.', {}, true );
 		db.get( 'SELECT count, COUNT(guild) guilds FROM patreons LEFT JOIN discord ON discord.patreon = patreons.patreon WHERE patreons.patreon = ? GROUP BY patreons.patreon', [msg.author.id], (dberror, row) => {
 		db.get( 'SELECT count, COUNT(guild) guilds FROM patreons LEFT JOIN discord ON discord.patreon = patreons.patreon WHERE patreons.patreon = ? GROUP BY patreons.patreon', [msg.author.id], (dberror, row) => {
 			if ( dberror ) {
 			if ( dberror ) {

+ 31 - 25
cmds/rcscript.js

@@ -28,10 +28,6 @@ const display_types = [
 function cmd_rcscript(lang, msg, args, line, wiki) {
 function cmd_rcscript(lang, msg, args, line, wiki) {
 	if ( args[0] === 'block' && msg.isOwner() ) return blocklist(msg, args.slice(1));
 	if ( args[0] === 'block' && msg.isOwner() ) return blocklist(msg, args.slice(1));
 	if ( !msg.isAdmin() ) return msg.reactEmoji('❌');
 	if ( !msg.isAdmin() ) return msg.reactEmoji('❌');
-	if ( !msg.channel.permissionsFor(msg.client.user).has('MANAGE_WEBHOOKS') ) {
-		console.log( msg.guild.id + ': Missing permissions - MANAGE_WEBHOOKS' );
-		return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_WEBHOOKS`' );
-	}
 	
 	
 	db.all( 'SELECT configid, webhook, wiki, lang, display, wikiid, rcid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
 	db.all( 'SELECT configid, webhook, wiki, lang, display, wikiid, rcid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
 		if ( dberror || !rows ) {
 		if ( dberror || !rows ) {
@@ -50,7 +46,11 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 		}
 		}
 
 
 		if ( args[0] === 'add' ) {
 		if ( args[0] === 'add' ) {
-			if ( !msg.channel.permissionsFor(msg.member).has('MANAGE_WEBHOOKS') ) {
+			if ( !msg.channel.permissionsFor(msg.client.user).has('MANAGE_WEBHOOKS') ) {
+				console.log( msg.guild.id + ': Missing permissions - MANAGE_WEBHOOKS' );
+				return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_WEBHOOKS`' );
+			}
+			if ( !( msg.channel.permissionsFor(msg.member).has('MANAGE_WEBHOOKS') || ( this.isOwner() && this.evalUsed ) ) ) {
 				return msg.replyMsg( lang.get('rcscript.noadmin') );
 				return msg.replyMsg( lang.get('rcscript.noadmin') );
 			}
 			}
 			if ( rows.length >= limit ) return msg.replyMsg( lang.get('rcscript.max_entries'), {}, true );
 			if ( rows.length >= limit ) return msg.replyMsg( lang.get('rcscript.max_entries'), {}, true );
@@ -452,19 +452,21 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				} ) );
 				} ) );
 			}
 			}
 
 
-			return msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
+			if ( rows.length > 1 ) return msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
 				return webhook.channelID;
 				return webhook.channelID;
 			}, error => {
 			}, error => {
 				log_error(error);
 				log_error(error);
-				if ( error.name === 'DiscordAPIError' && ['Unknown Webhook', 'Invalid Webhook Token'].includes( error.message ) ) return;
-				db.run( 'DELETE FROM rcgcdw WHERE webhook = ?', [selected_row.webhook], function (delerror) {
-					if ( delerror ) {
-						console.log( '- Error while removing the RcGcDw: ' + delerror );
-						return delerror;
-					}
-					console.log( '- RcGcDw successfully removed.' );
-				} );
-				Promise.reject();
+				if ( error.name === 'DiscordAPIError' && ['Unknown Webhook', 'Invalid Webhook Token'].includes( error.message ) ) {
+					db.run( 'DELETE FROM rcgcdw WHERE webhook = ?', [selected_row.webhook], function (delerror) {
+						if ( delerror ) {
+							console.log( '- Error while removing the RcGcDw: ' + delerror );
+							return delerror;
+						}
+						console.log( '- RcGcDw successfully removed.' );
+					} );
+					Promise.reject();
+				}
+				return;
 			} ).then( channel => {
 			} ).then( channel => {
 				var text = lang.get('rcscript.current_selected') + '\n';
 				var text = lang.get('rcscript.current_selected') + '\n';
 				text += '\n' + lang.get('rcscript.channel') + ' <#' + channel + '>\n';
 				text += '\n' + lang.get('rcscript.channel') + ' <#' + channel + '>\n';
@@ -487,17 +489,21 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 			}, () => msg.replyMsg( lang.get('rcscript.deleted'), {}, true ) );
 			}, () => msg.replyMsg( lang.get('rcscript.deleted'), {}, true ) );
 		}
 		}
 
 
-		Promise.all(rows.map( row => msg.client.fetchWebhook(...row.webhook.split('/')).catch( error => {
+		Promise.all(rows.map( row => msg.client.fetchWebhook(...row.webhook.split('/')).then( webhook => {
+			return webhook.channelID;
+		}, error => {
 			log_error(error);
 			log_error(error);
-			if ( error.name === 'DiscordAPIError' && ['Unknown Webhook', 'Invalid Webhook Token'].includes( error.message ) ) return {};
-			db.run( 'DELETE FROM rcgcdw WHERE webhook = ?', [row.webhook], function (delerror) {
-				if ( delerror ) {
-					console.log( '- Error while removing the RcGcDw: ' + delerror );
-					return delerror;
-				}
-				console.log( '- RcGcDw successfully removed.' );
-			} );
-			return;
+			if ( error.name === 'DiscordAPIError' && ['Unknown Webhook', 'Invalid Webhook Token'].includes( error.message ) ) {
+				db.run( 'DELETE FROM rcgcdw WHERE webhook = ?', [row.webhook], function (delerror) {
+					if ( delerror ) {
+						console.log( '- Error while removing the RcGcDw: ' + delerror );
+						return delerror;
+					}
+					console.log( '- RcGcDw successfully removed.' );
+				} );
+				return;
+			}
+			return {};
 		} ) )).then( webhooks => {
 		} ) )).then( webhooks => {
 			rows.forEach( (row, i) => {
 			rows.forEach( (row, i) => {
 				if ( webhooks[i] ) row.channel = webhooks[i].channelID;
 				if ( webhooks[i] ) row.channel = webhooks[i].channelID;

+ 1 - 0
cmds/wiki/gamepedia/user.js

@@ -219,6 +219,7 @@ function gamepedia_user(lang, msg, namespace, username, wiki, querystring, fragm
 						case 'female':
 						case 'female':
 							gender.push(lang.get('user.gender.female'));
 							gender.push(lang.get('user.gender.female'));
 							break;
 							break;
+						case 'unknown':
 						default: 
 						default: 
 							gender.push(lang.get('user.gender.unknown'));
 							gender.push(lang.get('user.gender.unknown'));
 					}
 					}

+ 1 - 1
util/default.json

@@ -18,7 +18,7 @@
 		},
 		},
 		"rcgcdw": {
 		"rcgcdw": {
 			"default": 1,
 			"default": 1,
-			"patreon": 3,
+			"patreon": 5,
 			"display": 2
 			"display": 2
 		}
 		}
 	},
 	},

+ 1 - 1
util/i18n.js

@@ -162,7 +162,7 @@ function plural(lang, number, args) {
 		case 'en':
 		case 'en':
 		case 'es':
 		case 'es':
 		case 'nl':
 		case 'nl':
-		case 'pt':
+		case 'pt-br':
 		case 'tr':
 		case 'tr':
 		case 'ja':
 		case 'ja':
 		case 'zh-hans':
 		case 'zh-hans':

+ 6 - 4
util/newMessage.js

@@ -48,8 +48,10 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 	}
 	}
 	var count = 0;
 	var count = 0;
 	var maxcount = commandLimit[( msg?.guild?.id in patreons ? 'patreon' : 'default' )];
 	var maxcount = commandLimit[( msg?.guild?.id in patreons ? 'patreon' : 'default' )];
-	cleanCont.replace( /\u200b/g, '' ).split('\n').forEach( line => {
-		if ( !line.hasPrefix(prefix) || count > maxcount ) return;
+	var breakLines = false;
+	cleanCont.replace( /\u200b/g, '' ).replace( /(?<!\\)```.+?```/gs, '<codeblock>' ).split('\n').forEach( line => {
+		if ( line.startsWith( '>>> ' ) ) breakLines = true;
+		if ( !line.hasPrefix(prefix) || breakLines || count > maxcount ) return;
 		count++;
 		count++;
 		if ( count === maxcount ) {
 		if ( count === maxcount ) {
 			console.log( '- Message contains too many commands!' );
 			console.log( '- Message contains too many commands!' );
@@ -101,8 +103,8 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 		var linkcount = 0;
 		var linkcount = 0;
 		var linkmaxcount = maxcount + 5;
 		var linkmaxcount = maxcount + 5;
 		var breakInline = false;
 		var breakInline = false;
-		msg.cleanContent.replace( /\u200b/g, '' ).replace( /(?<!\\)```.+?```/gs, '<codeblock>' ).replace( /(?<!\\)`.+?`/gs, '<code>' ).split('\n').forEach( line => {
-			if ( line.startsWith( '>>> ' ) ) breakinline = true;
+		cleanCont.replace( /\u200b/g, '' ).replace( /(?<!\\)```.+?```/gs, '<codeblock>' ).replace( /(?<!\\)`.+?`/gs, '<code>' ).split('\n').forEach( line => {
+			if ( line.startsWith( '>>> ' ) ) breakInline = true;
 			if ( line.startsWith( '> ' ) || breakInline ) return;
 			if ( line.startsWith( '> ' ) || breakInline ) return;
 			if ( line.hasPrefix(prefix) || !( line.includes( '[[' ) || line.includes( '{{' ) ) ) return;
 			if ( line.hasPrefix(prefix) || !( line.includes( '[[' ) || line.includes( '{{' ) ) ) return;
 			if ( line.includes( '[[' ) && line.includes( ']]' ) && linkcount <= linkmaxcount ) {
 			if ( line.includes( '[[' ) && line.includes( ']]' ) && linkcount <= linkmaxcount ) {