Przeglądaj źródła

Make RcGcDb stable

Markus-Rost 4 lat temu
rodzic
commit
64a3df31bc
9 zmienionych plików z 30 dodań i 26 usunięć
  1. 1 1
      cmds/help.js
  2. 3 3
      cmds/patreon.js
  3. 10 10
      cmds/rcscript.js
  4. 4 4
      cmds/settings.js
  5. 4 4
      cmds/verification.js
  6. 1 1
      cmds/voice.js
  7. 2 1
      i18n/de.json
  8. 2 1
      i18n/en.json
  9. 3 1
      main.js

+ 1 - 1
cmds/help.js

@@ -67,7 +67,7 @@ const restrictions = {
 	admin: ['settings', 'verification', 'rcscript', 'voice', 'pause'],
 	inline: ['inline.link', 'inline.template'],
 	patreon: ['settings.prefix'],
-	experimental: ['rcscript.default']
+	experimental: []
 }
 
 /**

+ 3 - 3
cmds/patreon.js

@@ -29,7 +29,7 @@ function cmd_patreon(lang, msg, args, line, wiki) {
 			}
 			if ( !row ) return msg.replyMsg( 'you can\'t have any server.', {}, true );
 			if ( row.count <= row.guilds ) return msg.replyMsg( 'you already reached your maximal server count.', {}, true );
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			db.run( 'UPDATE discord SET patreon = ? WHERE guild = ? AND channel IS NULL', [msg.author.id, args[1]], function (error) {
 				if ( error ) {
 					console.log( '- Error while updating the guild: ' + error );
@@ -64,7 +64,7 @@ function cmd_patreon(lang, msg, args, line, wiki) {
 				return dberror;
 			}
 			if ( !row ) return msg.replyMsg( 'you didn\'t enable the patreon features for "' + guild + '"!', {}, true );
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			db.run( 'UPDATE discord SET lang = ?, inline = ?, prefix = ?, patreon = NULL WHERE guild = ?', [row.lang, row.inline, process.env.prefix, args[1]], function (error) {
 				if ( error ) {
 					console.log( '- Error while updating the guild: ' + error );
@@ -172,7 +172,7 @@ function cmd_patreon(lang, msg, args, line, wiki) {
 		var guilds = ( row && row.guilds ? row.guilds.split(',') : [] );
 		if ( args[2].startsWith( '+' ) || args[2].startsWith( '-' ) ) count += value;
 		else count = value;
-		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 		if ( count <= 0 ) return db.run( 'DELETE FROM patreons WHERE patreon = ?', [args[1]], function (error) {
 			if ( error ) {
 				console.log( '- Error while deleting the patreon: ' + error );

+ 10 - 10
cmds/rcscript.js

@@ -56,7 +56,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				return msg.replyMsg( lang.get('rcscript.noadmin') );
 			}
 			if ( rows.length >= limit ) return msg.replyMsg( lang.get('rcscript.max_entries'), {}, true );
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 
 			var wikiinvalid = lang.get('settings.wikiinvalid') + '\n`' + prefix + 'rcscript add ' + lang.get('rcscript.new_wiki') + '`\n' + lang.get('rcscript.help_wiki');
 			var input = args.slice(1).join(' ').toLowerCase().trim().replace( /^<\s*(.*?)\s*>$/, '$1' );
@@ -160,7 +160,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 								}
 								console.log( '- RcGcDw successfully added.' );
 								if ( reaction ) reaction.removeEmoji();
-								msg.replyMsg( lang.get('rcscript.added') + ' <' + wikinew + '>\n`' + prefix + 'rcscript' + ( rows.length ? ' ' + new_configid : '' ) + '`' + '\n' + lang.get('general.experimental'), {}, true );
+								msg.replyMsg( lang.get('rcscript.added') + ' <' + wikinew + '>\n`' + prefix + 'rcscript' + ( rows.length ? ' ' + new_configid : '' ) + '`', {}, true );
 							} );
 						}, error => {
 							console.log( '- Error while creating the webhook: ' + error );
@@ -193,7 +193,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 			let cmd = prefix + 'rcscript' + ( rows.length === 1 ? '' : ' ' + selected_row.configid );
 
 			if ( args[0] === 'delete' && !args[1] ) {
-				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 				return msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
 					var channel = msg.guild.channels.cache.get(webhook.channelID);
 					if ( !channel || !channel.permissionsFor(msg.member).has('MANAGE_WEBHOOKS') ) {
@@ -231,7 +231,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				if ( !args[1] ) {
 					return msg.replyMsg( lang.get('rcscript.current_wiki') + ' <' + selected_row.wiki + '>\n`' + cmd + ' wiki ' + lang.get('rcscript.new_wiki') + '`\n' + lang.get('rcscript.help_wiki'), {}, true );
 				}
-				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 
 				var wikiinvalid = lang.get('settings.wikiinvalid') + '\n`' + cmd + ' wiki ' + lang.get('rcscript.new_wiki') + '`\n' + lang.get('rcscript.help_wiki');
 				var wikinew = input_to_wiki(args[1].replace( /^(?:https?:)?\/\//, 'https://' ));
@@ -337,7 +337,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				if ( !args[1] ) {
 					return msg.replyMsg( lang.get('rcscript.current_lang') + ' `' + allLangs.names[selected_row.lang] + '`\n`' + cmd + ' lang ' + lang.get('rcscript.new_lang') + '`\n' + lang.get('rcscript.help_lang') + ' `' + Object.values(allLangs.names).join('`, `') + '`', {files:( msg.uploadFiles() ? [`./RcGcDb/locale/widgets/${selected_row.lang}.png`] : [] )}, true );
 				}
-				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 				if ( !( args[1] in allLangs.map ) ) {
 					return msg.replyMsg( lang.get('settings.langinvalid') + '\n`' + cmd + ' lang ' + lang.get('rcscript.new_lang') + '`\n' + lang.get('rcscript.help_lang') + ' `' + Object.values(allLangs.names).join('`, `') + '`', {}, true );
 				}
@@ -359,7 +359,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				if ( !args[1] || !display_types.includes( args[1] ) ) {
 					return msg.replyMsg( lang.get('rcscript.current_display') + ' `' + display_types[selected_row.display] + '`\n`' + cmd + ' display (' + display.join('|') + ')`\n' + display.map( display_type => '`' + display_type + '`: ' + lang.get('rcscript.help_display_' + display_type) ).join('\n'), {}, true );
 				}
-				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 				if ( !display.includes( args[1] ) ) {
 					return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 				}
@@ -378,7 +378,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				} );
 			}
 			if ( selected_row.wiki.isFandom() && args[0] === 'feeds' ) {
-				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+				if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 				if ( args[1] === 'only' ) {
 					if ( selected_row.rcid === -1 ) {
 						msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
@@ -563,7 +563,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 			} ).join('');
 			else text += lang.get('rcscript.missing');
 			if ( rows.length < limit ) text += '\n\n' + lang.get('rcscript.add_more') + '\n`' + prefix + 'rcscript add ' + lang.get('rcscript.new_wiki') + '`';
-			msg.sendChannel( lang.get('general.experimental') + '\n' + '<@' + msg.author.id + '>, ' + text, {split:true}, true );
+			msg.replyMsg( text, {split:true}, true );
 		} );
 	} );
 }
@@ -577,7 +577,7 @@ function blocklist(msg, args) {
 	var prefix = ( patreons[msg?.guild?.id] || process.env.prefix );
 	if ( args[0] === 'add' ) {
 		if ( !args[1] ) return msg.replyMsg( '`' + prefix + 'rcscript block add <wiki> [<reason>]`', {}, true );
-		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 		let input = args[1].toLowerCase().replace( /^<(.*?)>$/, '$1' );
 		let wiki = input_to_wiki(input.replace( /^(?:https?:)?\/\//, 'https://' ));
 		if ( !wiki ) return msg.replyMsg( '`' + prefix + 'rcscript block add <wiki> [<reason>]`', {}, true );
@@ -618,7 +618,7 @@ function blocklist(msg, args) {
 		let input = args.slice(1).join(' ').toLowerCase().trim().replace( /^<\s*(.*?)\s*>$/, '$1' );
 		let wiki = input_to_wiki(input.replace( /^(?:https?:)?\/\//, 'https://' ));
 		if ( !wiki ) return msg.replyMsg( '`' + prefix + 'rcscript block remove <wiki>`', {}, true );
-		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+		if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 		return db.run( 'DELETE FROM blocklist WHERE wiki = ?', [wiki.href], function (error) {
 			if ( error ) {
 				console.log( '- Error while removing from the blocklist: ' + error );

+ 4 - 4
cmds/settings.js

@@ -76,7 +76,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 				if ( !rows.length ) return msg.replyMsg( lang.get('settings.wikimissing') + wikihelp, {}, true );
 				else return msg.replyMsg( lang.get('settings.' + prelang) + ' ' + ( channel || guild ).wiki + wikihelp, {}, true );
 			}
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			var isForced = false;
 			if ( /^<?(?:https?:)?\/\//.test(args[1]) ) {
 				args[1] = args[1].replace( /^<?(?:https?:)?\/\//, 'https://' );
@@ -220,7 +220,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 			if ( !args[1] ) {
 				return msg.replyMsg( lang.get('settings.' + prelang) + ' `' + allLangs.names[( channel || guild ).lang] + '`' + langhelp, {files:( msg.uploadFiles() ? [`./i18n/widgets/${( channel || guild ).lang}.png`] : [] )}, true );
 			}
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			if ( !( args[1] in allLangs.map ) ) {
 				return msg.replyMsg( lang.get('settings.langinvalid') + langhelp, {}, true );
 			}
@@ -278,7 +278,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 			if ( !args[1].trim() ) {
 				return msg.replyMsg( lang.get('settings.prefix') + ' `' + prefix + '`' + prefixhelp, {}, true );
 			}
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			if ( args[1].includes( '`' ) || args[1].length > 100 ) {
 				return msg.replyMsg( lang.get('settings.prefixinvalid') + prefixhelp, {}, true );
 			}
@@ -309,7 +309,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 			if ( args[1] !== 'toggle' ) {
 				return msg.replyMsg( lang.get('settings.' + toggle + '.' + prelang) + inlinehelp, {}, true );
 			}
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			var value = ( ( channel || guild ).inline ? null : 1 );
 			var sql = 'UPDATE discord SET inline = ? WHERE guild = ?';
 			var sqlargs = [value, msg.guild.id];

+ 4 - 4
cmds/verification.js

@@ -31,7 +31,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 		if ( args[0] && args[0].toLowerCase() === 'add' ) {
 			var limit = verificationLimit[( msg.guild.id in patreons ? 'patreon' : 'default' )];
 			if ( rows.length >= limit ) return msg.replyMsg( lang.get('verification.max_entries'), {}, true );
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			var roles = args.slice(1).join(' ').split('|').map( role => role.replace( /^\s*<?\s*(.*?)\s*>?\s*$/, '$1' ) ).filter( role => role.length );
 			if ( !roles.length ) return msg.replyMsg( lang.get('verification.no_role') + '\n`' + prefix + 'verification add ' + lang.get('verification.new_role') + '`', {}, true );
 			if ( roles.length > 10 ) return msg.replyMsg( lang.get('verification.role_max'), {}, true );
@@ -74,7 +74,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 		var row = rows.find( row => row.configid.toString() === args[0] );
 		if ( args[1] ) args[1] = args[1].toLowerCase();
 		if ( args[1] === 'delete' && !args.slice(2).join('') ) {
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			return db.run( 'DELETE FROM verification WHERE guild = ? AND configid = ?', [msg.guild.id, row.configid], function (dberror) {
 				if ( dberror ) {
 					console.log( '- Error while removing the verification: ' + dberror );
@@ -90,7 +90,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 				console.log( msg.guild.id + ': Missing permissions - MANAGE_NICKNAMES' );
 				return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_NICKNAMES`' );
 			}
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			return db.run( 'UPDATE verification SET rename = ? WHERE guild = ? AND configid = ?', [( row.rename ? 0 : 1 ), msg.guild.id, row.configid], function (dberror) {
 				if ( dberror ) {
 					console.log( '- Error while updating the verification: ' + dberror );
@@ -103,7 +103,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 			} );
 		}
 		if ( args[2] ) {
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			args[2] = args.slice(2).join(' ').replace( /^\s*<?\s*(.*?)\s*>?\s*$/, '$1' );
 			if ( args[1] === 'channel' ) {
 				var channels = args[2].replace( /\s*>?\s*\|\s*<?\s*/g, '|' ).split('|').filter( channel => channel.length );

+ 1 - 1
cmds/voice.js

@@ -18,7 +18,7 @@ function cmd_voice(lang, msg, args, line, wiki) {
 		}
 		args[1] = args.slice(1).join(' ').trim()
 		if ( args[0].toLowerCase() === 'toggle' && !args[1] ) {
-			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly'), {}, true );
+			if ( process.env.READONLY ) return msg.replyMsg( lang.get('general.readonly') + '\n' + process.env.invite, {}, true );
 			var value = ( msg.guild.id in voice ? null : 1 );
 			return db.run( 'UPDATE discord SET voice = ? WHERE guild = ? AND channel IS NULL', [value, msg.guild.id], function (dberror) {
 				if ( dberror ) {

+ 2 - 1
i18n/de.json

@@ -150,7 +150,8 @@
         "limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n$1, deine Nachricht enthält zu viele Befehle!",
         "missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
         "patreon": "dies ist eine Patreon-Funktion!\nDu kannst mich auf Patreon unterstützen um Zugang zu dieser Funktion zu erhalten:",
-        "prefix": "das Präfix für diesen Server ist `$1`. Du kannst das Präfix mit `$1settings prefix` ändern. Für eine Liste aller Befehle nutze `$1hilfe`."
+        "prefix": "das Präfix für diesen Server ist `$1`. Du kannst das Präfix mit `$1settings prefix` ändern. Für eine Liste aller Befehle nutze `$1hilfe`.",
+        "readonly": "**Die Datenbank ist derzeit im Nur-Lese-Modus, du kanst aktuell keine Einstellungen ändern!**"
     },
     "help": {
         "admin": "Diese Befehle können nur Administratoren ausführen:",

+ 2 - 1
i18n/en.json

@@ -150,7 +150,8 @@
         "limit": "🚨 **Stop, you hit a limit!** 🚨\n\n$1, your message contained too many commands!",
         "missingperm": "I'm missing some permissions for this command:",
         "patreon": "this is a Patreon only feature!\nYou can support me on Patreon to get access to this feature:",
-        "prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`."
+        "prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`.",
+        "readonly": "**The database is currently in read-only mode, you can't change any settings right now!**"
     },
     "help": {
         "admin": "These commands can only be performed by administrators:",

+ 3 - 1
main.js

@@ -66,8 +66,10 @@ manager.spawn().then( shards => {
 	manager.respawnAll();
 } );
 
+var server;
 if ( process.env.dashboard ) {
 	const dashboard = child_process.fork('./dashboard/index.js', ( isDebug ? ['debug'] : [] ));
+	server = dashboard;
 
 	dashboard.on( 'message', message => {
 		if ( message.id ) {
@@ -173,6 +175,6 @@ if ( isDebug && process.argv[3]?.startsWith( '--timeout:' ) ) {
 	setTimeout( () => {
 		console.log( `\n- Running for ${timeout} seconds, closing process!\n` );
 		manager.shards.forEach( shard => shard.kill() );
-		if ( process.env.dashboard ) dashboard.kill('SIGTERM');
+		if ( typeof server !== 'undefined' ) server.kill('SIGTERM');
 	}, timeout  * 1000 ).unref();
 }