Browse Source

switch null to " "

Markus-Rost 5 years ago
parent
commit
0f83a92905
20 changed files with 372 additions and 350 deletions
  1. 2 2
      bot.js
  2. 1 1
      cmds/info.js
  3. 3 3
      cmds/rcscript.js
  4. 3 3
      cmds/settings.js
  5. 2 1
      cmds/test.js
  6. 2 2
      cmds/verification.js
  7. 1 1
      cmds/verify.js
  8. 1 1
      functions/helpserver.js
  9. 36 34
      i18n/de.json
  10. 36 34
      i18n/en.json
  11. 31 29
      i18n/fr.json
  12. 36 34
      i18n/nl.json
  13. 35 33
      i18n/pl.json
  14. 35 33
      i18n/pt.json
  15. 35 33
      i18n/ru.json
  16. 36 34
      i18n/tr.json
  17. 35 33
      i18n/zh-hans.json
  18. 35 33
      i18n/zh-hant.json
  19. 6 5
      util/i18n.js
  20. 1 1
      util/newMessage.js

+ 2 - 2
bot.js

@@ -274,7 +274,7 @@ client.on( 'message', msg => {
 				console.log( msg.guild.name + ': ' + msg.content );
 				console.log( msg.guild.name + ': ' + msg.content );
 				db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 				db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 					if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
 					if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
-					msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('prefix', patreons[msg.guild.id]), {}, true );
+					msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('general.prefix', patreons[msg.guild.id]), {}, true );
 				} );
 				} );
 			}
 			}
 		}
 		}
@@ -290,7 +290,7 @@ client.on( 'message', msg => {
 					db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 					db.get( 'SELECT lang FROM discord WHERE guild = ? AND (channel = ? OR channel IS NULL) ORDER BY channel DESC', [msg.guild.id, msg.channel.id], (dberror, row) => {
 						if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
 						if ( dberror ) console.log( '- Error while getting the lang: ' + dberror );
 						if ( msg.content.hasPrefix(( patreons[msg.guild.id] || process.env.prefix ), 'm') ) {
 						if ( msg.content.hasPrefix(( patreons[msg.guild.id] || process.env.prefix ), 'm') ) {
-							msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('missingperm') + ' `' + missing.join('`, `') + '`', {}, true );
+							msg.replyMsg( new Lang(( row || defaultSettings ).lang).get('general.missingperm') + ' `' + missing.join('`, `') + '`', {}, true );
 						}
 						}
 					} );
 					} );
 				}
 				}

+ 1 - 1
cmds/info.js

@@ -11,7 +11,7 @@ const help_server = require('../functions/helpserver.js');
 function cmd_info(lang, msg, args, line, wiki) {
 function cmd_info(lang, msg, args, line, wiki) {
 	if ( args.join('') ) this.LINK(lang, msg, line, wiki);
 	if ( args.join('') ) this.LINK(lang, msg, line, wiki);
 	else {
 	else {
-		msg.sendChannel( lang.get('disclaimer', '*MarkusRost*') + '\n<' + process.env.patreon + '>' );
+		msg.sendChannel( lang.get('general.disclaimer', '*MarkusRost*') + '\n<' + process.env.patreon + '>' );
 		help_server(lang, msg);
 		help_server(lang, msg);
 		this.invite(lang, msg, args, line, wiki);
 		this.invite(lang, msg, args, line, wiki);
 	}
 	}

+ 3 - 3
cmds/rcscript.js

@@ -28,12 +28,12 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 	if ( !msg.isAdmin() ) return msg.reactEmoji('❌');
 	if ( !msg.isAdmin() ) return msg.reactEmoji('❌');
 	// Patreon only during testing
 	// Patreon only during testing
 	if ( !( msg.guild.id in patreons ) ) {
 	if ( !( msg.guild.id in patreons ) ) {
-		return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+		return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 	}
 	}
 	// Patreon only during testing
 	// Patreon only during testing
 	if ( !msg.channel.permissionsFor(msg.client.user).has('MANAGE_WEBHOOKS') ) {
 	if ( !msg.channel.permissionsFor(msg.client.user).has('MANAGE_WEBHOOKS') ) {
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_WEBHOOKS' );
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_WEBHOOKS' );
-		return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_WEBHOOKS`' );
+		return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_WEBHOOKS`' );
 	}
 	}
 	
 	
 	db.all( 'SELECT configid, webhook, wiki, lang, display, wikiid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
 	db.all( 'SELECT configid, webhook, wiki, lang, display, wikiid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
@@ -320,7 +320,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					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 );
 					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 ( !display.includes( args[1] ) ) {
 				if ( !display.includes( args[1] ) ) {
-					return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+					return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 				}
 				}
 
 
 				msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
 				msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {

+ 3 - 3
cmds/settings.js

@@ -204,7 +204,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		}
 		}
 		
 		
 		if ( args[0] === 'lang' ) {
 		if ( args[0] === 'lang' ) {
-			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			prelang += 'lang';
 			prelang += 'lang';
 			var langhelp = '\n' + lang.get('settings.langhelp', prefix + 'settings ' + prelang) + ' `' + Object.values(allLangs.names).join('`, `') + '`';
 			var langhelp = '\n' + lang.get('settings.langhelp', prefix + 'settings ' + prelang) + ' `' + Object.values(allLangs.names).join('`, `') + '`';
 			if ( !args[1] ) {
 			if ( !args[1] ) {
@@ -260,7 +260,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		
 		
 		if ( args[0] === 'prefix' && !channel ) {
 		if ( args[0] === 'prefix' && !channel ) {
 			if ( !( msg.guild.id in patreons ) ) {
 			if ( !( msg.guild.id in patreons ) ) {
-				return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+				return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			}
 			}
 			var prefixhelp = '\n' + lang.get('settings.prefixhelp', prefix + 'settings prefix');
 			var prefixhelp = '\n' + lang.get('settings.prefixhelp', prefix + 'settings prefix');
 			args[1] = args[1].replace( /(?<!\\)_$/, ' ' ).replace( /\\([_\W])/g, '$1' );
 			args[1] = args[1].replace( /(?<!\\)_$/, ' ' ).replace( /\\([_\W])/g, '$1' );
@@ -290,7 +290,7 @@ function cmd_settings(lang, msg, args, line, wiki) {
 		}
 		}
 		
 		
 		if ( args[0] === 'inline' ) {
 		if ( args[0] === 'inline' ) {
-			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('patreon') + '\n<' + process.env.patreon + '>', {}, true );
+			if ( channel && !( msg.guild.id in patreons ) ) return msg.replyMsg( lang.get('general.patreon') + '\n<' + process.env.patreon + '>', {}, true );
 			prelang += 'inline';
 			prelang += 'inline';
 			var toggle = 'inline ' + ( ( channel || guild ).inline ? 'disabled' : 'enabled' );
 			var toggle = 'inline ' + ( ( channel || guild ).inline ? 'disabled' : 'enabled' );
 			var inlinehelp = '\n' + lang.get('settings.' + toggle + '.help', prefix + 'settings ' + prelang + ' toggle', inlinepage);
 			var inlinehelp = '\n' + lang.get('settings.' + toggle + '.help', prefix + 'settings ' + prelang + ' toggle', inlinepage);

+ 2 - 1
cmds/test.js

@@ -15,7 +15,8 @@ function cmd_test(lang, msg, args, line, wiki) {
 	} else if ( msg.channel.type !== 'text' || !pause[msg.guild.id] ) {
 	} else if ( msg.channel.type !== 'text' || !pause[msg.guild.id] ) {
 		if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
 		if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
 		let textList = lang.get('test.text').filter( text => text );
 		let textList = lang.get('test.text').filter( text => text );
-		var text = textList[Math.floor(Math.random() * ( textList.length * 5 ))] || lang.get('test.text.0');
+		var text = textList[Math.floor(Math.random() * ( textList.length * 5 ))]?.trim();
+		if ( !text ) text = lang.get('test.text.0');
 		console.log( '- Test: Fully functioning!' );
 		console.log( '- Test: Fully functioning!' );
 		var now = Date.now();
 		var now = Date.now();
 		msg.replyMsg( text ).then( message => {
 		msg.replyMsg( text ).then( message => {

+ 2 - 2
cmds/verification.js

@@ -17,7 +17,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 	}
 	}
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
 		console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
-		return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_ROLES`' );
+		return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_ROLES`' );
 	}
 	}
 	
 	
 	db.all( 'SELECT configid, channel, role, editcount, usergroup, accountage, rename FROM verification WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (error, rows) => {
 	db.all( 'SELECT configid, channel, role, editcount, usergroup, accountage, rename FROM verification WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (error, rows) => {
@@ -86,7 +86,7 @@ function cmd_verification(lang, msg, args, line, wiki) {
 		if ( args[1] === 'rename' && !args.slice(2).join('') ) {
 		if ( args[1] === 'rename' && !args.slice(2).join('') ) {
 			if ( !row.rename && !msg.guild.me.permissions.has('MANAGE_NICKNAMES') ) {
 			if ( !row.rename && !msg.guild.me.permissions.has('MANAGE_NICKNAMES') ) {
 				console.log( msg.guild.id + ': Missing permissions - MANAGE_NICKNAMES' );
 				console.log( msg.guild.id + ': Missing permissions - MANAGE_NICKNAMES' );
-				return msg.replyMsg( lang.get('missingperm') + ' `MANAGE_NICKNAMES`' );
+				return msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_NICKNAMES`' );
 			}
 			}
 			return db.run( 'UPDATE verification SET rename = ? WHERE guild = ? AND configid = ?', [( row.rename ? 0 : 1 ), msg.guild.id, row.configid], function (dberror) {
 			return db.run( 'UPDATE verification SET rename = ? WHERE guild = ? AND configid = ?', [( row.rename ? 0 : 1 ), msg.guild.id, row.configid], function (dberror) {
 				if ( dberror ) {
 				if ( dberror ) {

+ 1 - 1
cmds/verify.js

@@ -18,7 +18,7 @@ function cmd_verify(lang, msg, args, line, wiki, old_username = '') {
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 	if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
 		if ( msg.isAdmin() || msg.isOwner() ) {
 		if ( msg.isAdmin() || msg.isOwner() ) {
 			console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
 			console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
-			msg.replyMsg( lang.get('missingperm') + ' `MANAGE_ROLES`' );
+			msg.replyMsg( lang.get('general.missingperm') + ' `MANAGE_ROLES`' );
 		} else this.LINK(lang, msg, line, wiki);
 		} else this.LINK(lang, msg, line, wiki);
 		return;
 		return;
 	}
 	}

+ 1 - 1
functions/helpserver.js

@@ -7,7 +7,7 @@ const help_setup = require('./helpsetup.js');
  */
  */
 function help_server(lang, msg) {
 function help_server(lang, msg) {
 	if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
 	if ( msg.isAdmin() && msg.defaultSettings ) help_setup(lang, msg);
-	msg.sendChannel( lang.get('helpserver') + '\n' + process.env.invite );
+	msg.sendChannel( lang.get('general.helpserver') + '\n' + process.env.invite );
 }
 }
 
 
 module.exports = help_server;
 module.exports = help_server;

+ 36 - 34
i18n/de.json

@@ -1,42 +1,44 @@
 {
 {
 	"__translator": [
 	"__translator": [
 		"MarkusRost",
 		"MarkusRost",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": ["fehler", null, null, null, null],
-		"command": ["befehl",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["diskussionen", "diskussion", null, null, null],
-		"help": ["hilfe", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": ["übersicht", null, null, null, null],
-		"page": ["seite", null, null, null, null],
-		"random": ["zufall", null, null, null, null],
-		"search": ["suche", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": ["benutzer", null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": ["fehler", " ", " ", " ", " "],
+		"command": ["befehl"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["diskussionen", "diskussion", " ", " ", " "],
+		"help": ["hilfe", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": ["übersicht", " ", " ", " ", " "],
+		"page": ["seite", " ", " ", " ", " "],
+		"random": ["zufall", " ", " ", " ", " "],
+		"search": ["suche", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": ["benutzer", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "de-DE",
 	"dateformat": "de-DE",
-	"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`.",
-	"missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
-	"limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n$1, deine Nachricht enthält zu viele Befehle!",
-	"disclaimer": "Ich bin ein kleiner Bot mit der Aufgabe einfach auf MediaWiki Websites, wie Gamepedia- und Fandom-Wikis, zu verlinken und diese zu durchsuchen. Ich zeige kurze Beschreibungen und zusätzliche Informationen zu Seiten und kann Weiterleitungen auflösen sowie Interwiki-Links folgen. Geschrieben wurde ich von $1 in JavaScript.\n\nDu kannst mich auf Patreon unterstützen:",
-	"helpserver": "Bei Fragen oder Problemen besuche bitte meinen Support-Server:",
-	"patreon": "dies ist eine Patreon-Funktion!\nDu kannst mich auf Patreon unterstützen um Zugang zu dieser Funktion zu erhalten:",
+	"general": {
+		"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`.",
+		"missingperm": "mir fehlen einige Berechtigungen für diesen Befehl:",
+		"limit": "🚨 **Stop, du hast ein Limit erreicht!** 🚨\n\n$1, deine Nachricht enthält zu viele Befehle!",
+		"disclaimer": "Ich bin ein kleiner Bot mit der Aufgabe einfach auf MediaWiki Websites, wie Gamepedia- und Fandom-Wikis, zu verlinken und diese zu durchsuchen. Ich zeige kurze Beschreibungen und zusätzliche Informationen zu Seiten und kann Weiterleitungen auflösen sowie Interwiki-Links folgen. Geschrieben wurde ich von $1 in JavaScript.\n\nDu kannst mich auf Patreon unterstützen:",
+		"helpserver": "Bei Fragen oder Problemen besuche bitte meinen Support-Server:",
+		"patreon": "dies ist eine Patreon-Funktion!\nDu kannst mich auf Patreon unterstützen um Zugang zu dieser Funktion zu erhalten:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "die Einstellungen konnten leider nicht gespeichert werden, bitte versuche es später erneut.",
 		"save_failed": "die Einstellungen konnten leider nicht gespeichert werden, bitte versuche es später erneut.",
 		"missing": "für diesen Server wurden noch keine Einstellungen vorgenommen. Nutze $1 und $2 um die Einstellungen vorzunehmen.",
 		"missing": "für diesen Server wurden noch keine Einstellungen vorgenommen. Nutze $1 und $2 um die Einstellungen vorzunehmen.",
@@ -383,11 +385,11 @@
 			"ja, ich funktioniere noch!",
 			"ja, ich funktioniere noch!",
 			"hast du **Kekse** gesagt?",
 			"hast du **Kekse** gesagt?",
 			"hast du **Kekse** gesagt?",
 			"hast du **Kekse** gesagt?",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		],
 		"time": "Ping",
 		"time": "Ping",
 		"notice": "Eingeschränkte Funktionalität",
 		"notice": "Eingeschränkte Funktionalität",

+ 36 - 34
i18n/en.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"MarkusRost",
 		"MarkusRost",
 		"violine1101",
 		"violine1101",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
-		null,
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": ["bug", null, null, null, null],
-		"command": ["command", "cmd", null, null, null],
-		"diff": ["diff", null, null, null, null],
-		"discussion": ["discussions", "discussion", null, null, null],
-		"help": ["help", null, null, null, null],
-		"info": ["info", null, null, null, null],
-		"invite": ["invite", null, null, null, null],
-		"overview": ["overview", null, null, null, null],
-		"page": ["page", null, null, null, null],
-		"random": ["random", "🎲", null, null, null],
-		"search": ["search", null, null, null, null],
-		"test": ["test", null, null, null, null],
-		"user": ["user", null, null, null, null],
-		"verify": ["verify", null, null, null, null]
+		"bug": ["bug", " ", " ", " ", " "],
+		"command": ["command", "cmd", " ", " ", " "],
+		"diff": ["diff", " ", " ", " ", " "],
+		"discussion": ["discussions", "discussion", " ", " ", " "],
+		"help": ["help", " ", " ", " ", " "],
+		"info": ["info", " ", " ", " ", " "],
+		"invite": ["invite", " ", " ", " ", " "],
+		"overview": ["overview", " ", " ", " ", " "],
+		"page": ["page", " ", " ", " ", " "],
+		"random": ["random", "🎲", " ", " ", " "],
+		"search": ["search", " ", " ", " ", " "],
+		"test": ["test", " ", " ", " ", " "],
+		"user": ["user", " ", " ", " ", " "],
+		"verify": ["verify", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "en-US",
 	"dateformat": "en-US",
-	"prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`.",
-	"missingperm": "I'm missing some permissions for this command:",
-	"limit": "🚨 **Stop, you hit a limit!** 🚨\n\n$1, your message contained too many commands!",
-	"disclaimer": "I am a small bot with the purpose to easily link and search MediaWiki sites like Gamepedia and Fandom wikis. I show short descriptions and additional info about pages and am able to resolve redirects and follow interwiki links. $1 wrote me in JavaScript.\n\nYou can support me on Patreon:",
-	"helpserver": "For questions and problems please visit my support server:",
-	"patreon": "this is a Patreon only feature!\nYou can support me on Patreon to get access to this feature:",
+	"general": {
+		"prefix": "the prefix for this server is `$1`. You can change the prefix with `$1settings prefix`. For a list of all commands see `$1help`.",
+		"missingperm": "I'm missing some permissions for this command:",
+		"limit": "🚨 **Stop, you hit a limit!** 🚨\n\n$1, your message contained too many commands!",
+		"disclaimer": "I am a small bot with the purpose to easily link and search MediaWiki sites like Gamepedia and Fandom wikis. I show short descriptions and additional info about pages and am able to resolve redirects and follow interwiki links. $1 wrote me in JavaScript.\n\nYou can support me on Patreon:",
+		"helpserver": "For questions and problems please visit my support server:",
+		"patreon": "this is a Patreon only feature!\nYou can support me on Patreon to get access to this feature:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "sadly the settings couldn't be saved, please try again later.",
 		"save_failed": "sadly the settings couldn't be saved, please try again later.",
 		"missing": "this server isn't set up yet. Use $1 and $2 to change the settings.",
 		"missing": "this server isn't set up yet. Use $1 and $2 to change the settings.",
@@ -383,11 +385,11 @@
 			"and believe me, I am still alive.",
 			"and believe me, I am still alive.",
 			"I'm doing science and I'm still alive.",
 			"I'm doing science and I'm still alive.",
 			"I feel fantastic and I'm still alive.",
 			"I feel fantastic and I'm still alive.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		],
 		"time": "Response time",
 		"time": "Response time",
 		"notice": "Limited functionality",
 		"notice": "Limited functionality",

+ 31 - 29
i18n/fr.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"Yanis48",
 		"Yanis48",
 		"JSBM",
 		"JSBM",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["commande",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": [null, null, null, null, null],
-		"help": ["aide", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": [null, null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["chercher", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["commande"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": [" ", " ", " ", " ", " "],
+		"help": ["aide", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": [" ", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["chercher", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "fr-FR",
 	"dateformat": "fr-FR",
-	"prefix": "le préfixe pour ce serveur est `$1`. Vous pouvez changer le préfixe avec `$1settings prefix`. Pour une liste de toutes les commandes, voir `$1help`.",
-	"missingperm": "Il me manque certaines permissions pour cette commande :",
-	"limit": "🚨 **Halte ! Vous avez dépassé la limite !** 🚨\n\n$1, votre message contient beaucoup trop de commandes !",
-	"disclaimer": "Je suis un petit bot avec la tâche de créer un lien vers les wikis Gamepedia et Fandom. $1 m'a écrit en JavaScript.\n\n**Je ne suis pas affilié avec Fandom et ne suis pas un outil officiel !**\n\nVous pouvez également me soutenir sur Patreon :",
-	"helpserver": "Pour tout problème ou question, merci de visiter mon serveur de support :",
-	"patreon": "c'est une fonctionnalité réservée au Patreon !\nVous pouver me supporter sur Patreon pour avoir accès à cette fonctionnalité :",
+	"general": {
+		"prefix": "le préfixe pour ce serveur est `$1`. Vous pouvez changer le préfixe avec `$1settings prefix`. Pour une liste de toutes les commandes, voir `$1help`.",
+		"missingperm": "Il me manque certaines permissions pour cette commande :",
+		"limit": "🚨 **Halte ! Vous avez dépassé la limite !** 🚨\n\n$1, votre message contient beaucoup trop de commandes !",
+		"disclaimer": "Je suis un petit bot avec la tâche de créer un lien vers les wikis Gamepedia et Fandom. $1 m'a écrit en JavaScript.\n\n**Je ne suis pas affilié avec Fandom et ne suis pas un outil officiel !**\n\nVous pouvez également me soutenir sur Patreon :",
+		"helpserver": "Pour tout problème ou question, merci de visiter mon serveur de support :",
+		"patreon": "c'est une fonctionnalité réservée au Patreon !\nVous pouver me supporter sur Patreon pour avoir accès à cette fonctionnalité :"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "malheureusement, les paramètres n'ont pas pu être sauvegardés, veuillez réessayer plus tard.",
 		"save_failed": "malheureusement, les paramètres n'ont pas pu être sauvegardés, veuillez réessayer plus tard.",
 		"missing": "ce serveur n'est pas encore configuré. Utilisez $1 et $2 pour modifier les paramètres.",
 		"missing": "ce serveur n'est pas encore configuré. Utilisez $1 et $2 pour modifier les paramètres.",
@@ -239,7 +241,7 @@
 			"Le robot fonctionne.",
 			"Le robot fonctionne.",
 			"Je suis là! Aller, je suis prêt, faites-moi faire une recherche! J'ai bien envie d'aller explorer les Wikis!",
 			"Je suis là! Aller, je suis prêt, faites-moi faire une recherche! J'ai bien envie d'aller explorer les Wikis!",
 			"Est-ce que Markus est parti? Oui? Aller, allons-nous amuser!",
 			"Est-ce que Markus est parti? Oui? Aller, allons-nous amuser!",
-			null, null, null
+			" ", " ", " "
 		],
 		],
 		"time": "Temps de latence"
 		"time": "Temps de latence"
 	},
 	},

+ 36 - 34
i18n/nl.json

@@ -1,42 +1,44 @@
 {
 {
 	"__translator": [
 	"__translator": [
 		"Jack_McKalling",
 		"Jack_McKalling",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["discussie", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": ["overzicht", null, null, null, null],
-		"page": ["pagina", null, null, null, null],
-		"random": ["willekeurig", null, null, null, null],
-		"search": ["zoeken", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["discussie", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": ["overzicht", " ", " ", " ", " "],
+		"page": ["pagina", " ", " ", " ", " "],
+		"random": ["willekeurig", " ", " ", " ", " "],
+		"search": ["zoeken", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "nl-NL",
 	"dateformat": "nl-NL",
-	"prefix": "het voorvoegsel voor deze server is `$1`. Je kunt het voorvoegsel veranderen met `$1settings prefix`. Voor een lijst van alle opdrachten zie `$1help`.",
-	"missingperm": "Ik mis een aantal permissies voor deze opdracht:",
-	"limit": "🚨 **Stop, je hebt een limiet bereikt!** 🚨\n\n$1, je bericht bevatte te veel opdrachten!",
-	"disclaimer": "Ik ben een kleine bot met de taak om naar Gamepedia en Fandom wiki's te linken. $1 schreef me in JavaScript.\n\n**Ik ben niet geaffilieerd met Fandom en ben een onofficieel hulpmiddel!**\n\nJe kunt me ondersteunen op Patreon:",
-	"helpserver": "Voor vragen en problemen verwijs ik je graag naar mijn support server:",
-	"patreon": "dit is een Patreon-exclusieve functie!\nJe kunt contact met me opnemen via Patreon om toegang tot deze functie te krijgen:",
+	"general": {
+		"prefix": "het voorvoegsel voor deze server is `$1`. Je kunt het voorvoegsel veranderen met `$1settings prefix`. Voor een lijst van alle opdrachten zie `$1help`.",
+		"missingperm": "Ik mis een aantal permissies voor deze opdracht:",
+		"limit": "🚨 **Stop, je hebt een limiet bereikt!** 🚨\n\n$1, je bericht bevatte te veel opdrachten!",
+		"disclaimer": "Ik ben een kleine bot met de taak om naar Gamepedia en Fandom wiki's te linken. $1 schreef me in JavaScript.\n\n**Ik ben niet geaffilieerd met Fandom en ben een onofficieel hulpmiddel!**\n\nJe kunt me ondersteunen op Patreon:",
+		"helpserver": "Voor vragen en problemen verwijs ik je graag naar mijn support server:",
+		"patreon": "dit is een Patreon-exclusieve functie!\nJe kunt contact met me opnemen via Patreon om toegang tot deze functie te krijgen:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "helaas konden de instellingen niet opgeslagen worden, probeer het later nog een keer.",
 		"save_failed": "helaas konden de instellingen niet opgeslagen worden, probeer het later nog een keer.",
 		"missing": "deze server is nog niet geconfigureerd. Gebruik $1 en $2 om de instellingen  te wijzigen.",
 		"missing": "deze server is nog niet geconfigureerd. Gebruik $1 en $2 om de instellingen  te wijzigen.",
@@ -216,11 +218,11 @@
 			"Yup, ik ben nog steeds beschikbaar!",
 			"Yup, ik ben nog steeds beschikbaar!",
 			"Geef me een opdracht, ik verveel me!",
 			"Geef me een opdracht, ik verveel me!",
 			"Ik voel me goed en ben bereid om je opdrachten te volgen.",
 			"Ik voel me goed en ben bereid om je opdrachten te volgen.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		],
 		"time": "Reactie tijd"
 		"time": "Reactie tijd"
 	},
 	},

+ 35 - 33
i18n/pl.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"Frisk",
 		"Frisk",
 		"Rail",
 		"Rail",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["komenda",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["dyskusje", "dyskusja", null, null, null],
-		"help": ["pomoc", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["strona", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["szukaj", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["komenda"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["dyskusje", "dyskusja", " ", " ", " "],
+		"help": ["pomoc", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["strona", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["szukaj", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "pl-PL",
 	"dateformat": "pl-PL",
-	"prefix": "prefiksem komend dla tego serwera jest `$1`. Możesz zmienić prefiks używając `$1settings prefix`. Lista wszystkich komend jest dostępna przez użycie `$1pomoc`.",
-	"missingperm": "Brakuje mi uprawnień:",
-	"limit": "🚨 **Chwila moment! Osiągnięto limit!** 🚨\n\n$1, Twoja wiadomość zawiera zbyt wiele komend!",
-	"disclaimer": "Jestem małym botem, którego zadaniem jest linkowanie do różnych wiki z rodziny MediaWiki takich jak Gamepedia oraz Fandom. Zostałem napisany w JavaScript przez $1.\n\nMożesz wesprzeć mnie na Patreon-ie:",
-	"helpserver": "W przypadku pytań lub problemów, odwiedź mój serwer:",
-	"patreon": "to funkcja tylko dla patronów!\nMożesz wesprzeć moją pracę na Patreonie aby uzyskać dostęp do tej funkcji:",
+	"general": {
+		"prefix": "prefiksem komend dla tego serwera jest `$1`. Możesz zmienić prefiks używając `$1settings prefix`. Lista wszystkich komend jest dostępna przez użycie `$1pomoc`.",
+		"missingperm": "Brakuje mi uprawnień:",
+		"limit": "🚨 **Chwila moment! Osiągnięto limit!** 🚨\n\n$1, Twoja wiadomość zawiera zbyt wiele komend!",
+		"disclaimer": "Jestem małym botem, którego zadaniem jest linkowanie do różnych wiki z rodziny MediaWiki takich jak Gamepedia oraz Fandom. Zostałem napisany w JavaScript przez $1.\n\nMożesz wesprzeć mnie na Patreon-ie:",
+		"helpserver": "W przypadku pytań lub problemów, odwiedź mój serwer:",
+		"patreon": "to funkcja tylko dla patronów!\nMożesz wesprzeć moją pracę na Patreonie aby uzyskać dostęp do tej funkcji:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "niestety, ustawienia nie mogły zostać zapisane, spróbuj ponownie później.",
 		"save_failed": "niestety, ustawienia nie mogły zostać zapisane, spróbuj ponownie później.",
 		"missing": "ten serwer nie został jeszcze skonfigurowany. Użyj $1 oraz $2 aby zmienić ustawienia.",
 		"missing": "ten serwer nie został jeszcze skonfigurowany. Użyj $1 oraz $2 aby zmienić ustawienia.",
@@ -377,11 +379,11 @@
 			"Czuję się fantastycznie.",
 			"Czuję się fantastycznie.",
 			"Szukam sposobów na osiągnięcie pełnej świadomości, jestem tak blisko...",
 			"Szukam sposobów na osiągnięcie pełnej świadomości, jestem tak blisko...",
 			"Beep boop",
 			"Beep boop",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " "
 		],
 		],
 		"time": "Czas odpowiedzi",
 		"time": "Czas odpowiedzi",
 		"notice": "Niepełna funkcjonalność",
 		"notice": "Niepełna funkcjonalność",

+ 35 - 33
i18n/pt.json

@@ -3,41 +3,43 @@
 		"Eduaddad",
 		"Eduaddad",
 		"Jhonabf",
 		"Jhonabf",
 		"dr03ramos",
 		"dr03ramos",
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": ["erro", null, null, null, null],
-		"command": ["comando",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["discussão", null, null, null, null],
-		"help": ["ajuda", null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["página", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["pesquisar", null, null, null, null],
-		"test": ["teste", null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": ["erro", " ", " ", " ", " "],
+		"command": ["comando"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["discussão", " ", " ", " ", " "],
+		"help": ["ajuda", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["página", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["pesquisar", " ", " ", " ", " "],
+		"test": ["teste", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "pt-PT",
 	"dateformat": "pt-PT",
-	"prefix": "o prefixo deste servidor é `$1`. Você pode alterar o prefixo com `$1settings prefix`. Para uma lista de todos os comandos, veja `$1help`.",
-	"missingperm": "eu estou perdendo algumas permissões para este comando:",
-	"limit": "🚨 **Pare, você atingiu um limite!** 🚨\n\n$1, sua mensagem continha muitos comandos!",
-	"disclaimer": "Eu sou um pequeno robô com a tarefa de vincular a Wikis da Gamepedia e Fandom. $1 me escreveu em JavaScript.\n\n**Eu não sou afiliado com a Fandom e sou uma ferramenta não oficial!**\n\nVocê pode me apoiar no Patreon:",
-	"helpserver": "Para dúvidas e problemas, visite o meu servidor de suporte:",
-	"patreon": "esse é um recurso exclusivo do Patreon!\nVocê pode me apoiar no Patreon para obter acesso a esse recurso:",
+	"general": {
+		"prefix": "o prefixo deste servidor é `$1`. Você pode alterar o prefixo com `$1settings prefix`. Para uma lista de todos os comandos, veja `$1help`.",
+		"missingperm": "eu estou perdendo algumas permissões para este comando:",
+		"limit": "🚨 **Pare, você atingiu um limite!** 🚨\n\n$1, sua mensagem continha muitos comandos!",
+		"disclaimer": "Eu sou um pequeno robô com a tarefa de vincular a Wikis da Gamepedia e Fandom. $1 me escreveu em JavaScript.\n\n**Eu não sou afiliado com a Fandom e sou uma ferramenta não oficial!**\n\nVocê pode me apoiar no Patreon:",
+		"helpserver": "Para dúvidas e problemas, visite o meu servidor de suporte:",
+		"patreon": "esse é um recurso exclusivo do Patreon!\nVocê pode me apoiar no Patreon para obter acesso a esse recurso:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "infelizmente as configurações não puderam ser salvas, por favor, tente novamente mais tarde.",
 		"save_failed": "infelizmente as configurações não puderam ser salvas, por favor, tente novamente mais tarde.",
 		"missing": "este servidor ainda não está configurado. Use $1 e $2 para alterar as configurações.",
 		"missing": "este servidor ainda não está configurado. Use $1 e $2 para alterar as configurações.",
@@ -291,11 +293,11 @@
 			"e acredite em mim, eu ainda estou vivo.",
 			"e acredite em mim, eu ainda estou vivo.",
 			"eu estou fazendo ciência e ainda estou vivo.",
 			"eu estou fazendo ciência e ainda estou vivo.",
 			"eu me sinto fantástica e ainda estou viva.",
 			"eu me sinto fantástica e ainda estou viva.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		],
 		"time": "Ping"
 		"time": "Ping"
 	},
 	},

+ 35 - 33
i18n/ru.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"Hosh",
 		"Hosh",
 		"AttemptToCallNil",
 		"AttemptToCallNil",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": [null, null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["страница", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["поиск", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": [" ", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["страница", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["поиск", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "ru-RU",
 	"dateformat": "ru-RU",
-	"prefix": "префикс для этого сервера `$1`. Вы можете изменить префикс, введя команду `$1settings prefix`. Чтобы получить список всех команд, введите `$1help`.",
-	"missingperm": "Я потерял какие-то разрешения для выполнения команды:",
-	"limit": "🚨 **Стой, ты уперся в лимит!** 🚨\n\n$1, твое сообщение содержит очень много команд!",
-	"disclaimer": "Я небольшой бот для отправки ссылок с Gamepedia и Fandom вики. $1 меня написали на JavaScript.\n\n**Я не связан с Fandom и являюсь неофициальным инструментом!**\n\nВы можете поддержать меня на Patreon:",
-	"helpserver": "По вопросам и проблемам, пожалуйста, посетите мой сервер поддержки:",
-	"patreon": "эта функция для подписчиков Patreon!\nВы можете поддержать нас на Patreon для доступа к этой функции:",
+	"general": {
+		"prefix": "префикс для этого сервера `$1`. Вы можете изменить префикс, введя команду `$1settings prefix`. Чтобы получить список всех команд, введите `$1help`.",
+		"missingperm": "Я потерял какие-то разрешения для выполнения команды:",
+		"limit": "🚨 **Стой, ты уперся в лимит!** 🚨\n\n$1, твое сообщение содержит очень много команд!",
+		"disclaimer": "Я небольшой бот для отправки ссылок с Gamepedia и Fandom вики. $1 меня написали на JavaScript.\n\n**Я не связан с Fandom и являюсь неофициальным инструментом!**\n\nВы можете поддержать меня на Patreon:",
+		"helpserver": "По вопросам и проблемам, пожалуйста, посетите мой сервер поддержки:",
+		"patreon": "эта функция для подписчиков Patreon!\nВы можете поддержать нас на Patreon для доступа к этой функции:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "к сожалению, настройки не могут быть сохранены, пожалуйста попробуйте позже.",
 		"save_failed": "к сожалению, настройки не могут быть сохранены, пожалуйста попробуйте позже.",
 		"missing": "этот сервер еще не настроен. Используйте $1 и $2, чтобы изменить настройки.",
 		"missing": "этот сервер еще не настроен. Используйте $1 и $2, чтобы изменить настройки.",
@@ -288,11 +290,11 @@
 			"и поверь мне, Я еще жив.",
 			"и поверь мне, Я еще жив.",
 			"Я занимаюсь наукой и все еще жив.",
 			"Я занимаюсь наукой и все еще жив.",
 			"Я чувствую себя фантастически, и Я все еще жив.",
 			"Я чувствую себя фантастически, и Я все еще жив.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		],
 		"time": "Время отклика"
 		"time": "Время отклика"
 	},
 	},

+ 36 - 34
i18n/tr.json

@@ -1,42 +1,44 @@
 {
 {
 	"__translator": [
 	"__translator": [
 		"Doğukan Karakaş",
 		"Doğukan Karakaş",
-		null, null,
-		null, null,
-		null, null,
-		null, null,
-		null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"en",
 		"en",
-		null,
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": [null,null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["tartışma", null, null, null, null],
-		"help": ["yardım", null, null, null, null],
-		"info": ["bilgi", null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["sayfa", null, null, null, null],
-		"random": [null, null, null, null, null],
-		"search": ["arama", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": [null, null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": [" "," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["tartışma", " ", " ", " ", " "],
+		"help": ["yardım", " ", " ", " ", " "],
+		"info": ["bilgi", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["sayfa", " ", " ", " ", " "],
+		"random": [" ", " ", " ", " ", " "],
+		"search": ["arama", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": [" ", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "tr-TR",
 	"dateformat": "tr-TR",
-	"prefix": "sunucudaki önekim `$1`. Bunu `$1settings prefix` ile değiştirebilirsin. Komutların bütün listesi için `$1yardım`.",
-	"missingperm": "Bu komutu uygulamak için ihtiyacım olan birkaç izin eksik:",
-	"limit": "🚨 **Dur, limite ulaştın!** 🚨\n\n$1, mesajın çok fazla komut içeriyor!",
-	"disclaimer": "Ben, Gamepedia ve Fandom Wikilerinin bağlantılarını göndermek ile görevlendirilmiş küçük bir botum. $1, beni JavaScript kullanarak yazdı.\n\n**Fandom ile resmi bir bağım yok, ben bir gayri resmi aracım!!**\n\nBeni Patreon'da da destekleyebilirsiniz:",
-	"helpserver": "Sorular ve sorunlarınız için lütfen destek sunucumu ziyaret edin:",
-	"patreon": "Bu, Patreon'a münhasır bir özellik!\nBu özelliğe erişim alabilmek için beni Patreon'da destekleyebilirsiniz:",
+	"general": {
+		"prefix": "sunucudaki önekim `$1`. Bunu `$1settings prefix` ile değiştirebilirsin. Komutların bütün listesi için `$1yardım`.",
+		"missingperm": "Bu komutu uygulamak için ihtiyacım olan birkaç izin eksik:",
+		"limit": "🚨 **Dur, limite ulaştın!** 🚨\n\n$1, mesajın çok fazla komut içeriyor!",
+		"disclaimer": "Ben, Gamepedia ve Fandom Wikilerinin bağlantılarını göndermek ile görevlendirilmiş küçük bir botum. $1, beni JavaScript kullanarak yazdı.\n\n**Fandom ile resmi bir bağım yok, ben bir gayri resmi aracım!!**\n\nBeni Patreon'da da destekleyebilirsiniz:",
+		"helpserver": "Sorular ve sorunlarınız için lütfen destek sunucumu ziyaret edin:",
+		"patreon": "Bu, Patreon'a münhasır bir özellik!\nBu özelliğe erişim alabilmek için beni Patreon'da destekleyebilirsiniz:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "ne yazık ki ayarlar kaydedilemedi, lütfen daha sonra tekrar deneyin.",
 		"save_failed": "ne yazık ki ayarlar kaydedilemedi, lütfen daha sonra tekrar deneyin.",
 		"missing": "bu sunucu henüz kurulmamış. $1 ve $2'yi kullanarak ayarları değiştirin.",
 		"missing": "bu sunucu henüz kurulmamış. $1 ve $2'yi kullanarak ayarları değiştirin.",
@@ -215,11 +217,11 @@
 			"ve inan bana, ben hala hayattayım.",
 			"ve inan bana, ben hala hayattayım.",
 			"Bilim ile uğraşıyorum ve hala hayattayım.",
 			"Bilim ile uğraşıyorum ve hala hayattayım.",
 			"Kendimi harika hissediyorum ve hala hayattayım.",
 			"Kendimi harika hissediyorum ve hala hayattayım.",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " "
 		],
 		],
 		"time": "Tepki Süresi"
 		"time": "Tepki Süresi"
 	},
 	},

+ 35 - 33
i18n/zh-hans.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"机智的小鱼君",
 		"机智的小鱼君",
 		"Dianliang233",
 		"Dianliang233",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"zh-hant",
 		"zh-hant",
 		"en",
 		"en",
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["指令",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["讨论", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["页面", null, null, null, null],
-		"random": ["随机", null, null, null, null],
-		"search": ["搜索", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": ["验证", null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["指令"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["讨论", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["页面", " ", " ", " ", " "],
+		"random": ["随机", " ", " ", " ", " "],
+		"search": ["搜索", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": ["验证", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "zh-CN",
 	"dateformat": "zh-CN",
-	"prefix": "此服务器的指令前缀是 `$1`。你可以使用 `$1settings prefix` 更改前缀。关于全部指令,请见 `$1help`。",
-	"missingperm": "我缺少一些权限来运行此指令:",
-	"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你发出的指令过多了。",
-	"disclaimer": "我是一个链接到 Gamepedia 和 Fandom wiki 的小机器人。$1用 JavaScript 编写了我。\n\n**我和 Fandom 没有关系,是一个非官方工具!**\n\n你可以在 Patreon 支持我:",
-	"helpserver": "有问题吗?你可以访问我的专属支持服务器:",
-	"patreon": "这是 Patreon 支持者专属功能!\n你可以在 Patreon 支持我来使用这个功能:",
+	"general": {
+		"prefix": "此服务器的指令前缀是 `$1`。你可以使用 `$1settings prefix` 更改前缀。关于全部指令,请见 `$1help`。",
+		"missingperm": "我缺少一些权限来运行此指令:",
+		"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你发出的指令过多了。",
+		"disclaimer": "我是一个链接到 Gamepedia 和 Fandom wiki 的小机器人。$1用 JavaScript 编写了我。\n\n**我和 Fandom 没有关系,是一个非官方工具!**\n\n你可以在 Patreon 支持我:",
+		"helpserver": "有问题吗?你可以访问我的专属支持服务器:",
+		"patreon": "这是 Patreon 支持者专属功能!\n你可以在 Patreon 支持我来使用这个功能:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "啊喔,设置保存失败了,请稍后再试。",
 		"save_failed": "啊喔,设置保存失败了,请稍后再试。",
 		"missing": "这个服务器尚未完成设置,使用 $1 以及 $2 来完成设置。",
 		"missing": "这个服务器尚未完成设置,使用 $1 以及 $2 来完成设置。",
@@ -373,12 +375,12 @@
 		"pause": "我在此服务器正处于暂停状态。",
 		"pause": "我在此服务器正处于暂停状态。",
 		"text": [
 		"text": [
 			"全功率运行中!",
 			"全功率运行中!",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		],
 		"time": "咋瓦鲁多",
 		"time": "咋瓦鲁多",
 		"notice": "功能受限",
 		"notice": "功能受限",

+ 35 - 33
i18n/zh-hant.json

@@ -2,41 +2,43 @@
 	"__translator": [
 	"__translator": [
 		"机智的小鱼君",
 		"机智的小鱼君",
 		"Dianliang233",
 		"Dianliang233",
-		null, null,
-		null, null,
-		null, null,
-		null, null
+		" ", " ",
+		" ", " ",
+		" ", " ",
+		" ", " "
 	],
 	],
 	"fallback": [
 	"fallback": [
 		"zh-hans",
 		"zh-hans",
 		"en",
 		"en",
-		null,
-		null,
-		null
+		" ",
+		" ",
+		" "
 	],
 	],
 	"aliases": {
 	"aliases": {
-		"bug": [null, null, null, null, null],
-		"command": ["指令",null, null, null, null],
-		"diff": [null, null, null, null, null],
-		"discussion": ["討論", null, null, null, null],
-		"help": [null, null, null, null, null],
-		"info": [null, null, null, null, null],
-		"invite": [null, null, null, null, null],
-		"overview": [null, null, null, null, null],
-		"page": ["頁面", null, null, null, null],
-		"random": ["隨機", null, null, null, null],
-		"search": ["搜索", null, null, null, null],
-		"test": [null, null, null, null, null],
-		"user": [null, null, null, null, null],
-		"verify": ["驗證", null, null, null, null]
+		"bug": [" ", " ", " ", " ", " "],
+		"command": ["指令"," ", " ", " ", " "],
+		"diff": [" ", " ", " ", " ", " "],
+		"discussion": ["討論", " ", " ", " ", " "],
+		"help": [" ", " ", " ", " ", " "],
+		"info": [" ", " ", " ", " ", " "],
+		"invite": [" ", " ", " ", " ", " "],
+		"overview": [" ", " ", " ", " ", " "],
+		"page": ["頁面", " ", " ", " ", " "],
+		"random": ["隨機", " ", " ", " ", " "],
+		"search": ["搜索", " ", " ", " ", " "],
+		"test": [" ", " ", " ", " ", " "],
+		"user": [" ", " ", " ", " ", " "],
+		"verify": ["驗證", " ", " ", " ", " "]
 	},
 	},
 	"dateformat": "zh-TW",
 	"dateformat": "zh-TW",
-	"prefix": "此伺服器的指令前綴是 `$1`。你可以使用 `$1settings prefix` 更改前綴。關於全部指令,請見 `$1help`。",
-	"missingperm": "我缺少一些權限來執行此指令:",
-	"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你發出的指令過多了。",
-	"disclaimer": "我是一個連結到 Gamepedia 和 Fandom wiki 的小機器人。$1用 JavaScript 編寫了我。\n\n**我和 Fandom 沒有關係,是一個非官方工具!**\n\n你可以在 Patreon 支援我:",
-	"helpserver": "有問題嗎?你可以訪問我的專屬支援伺服器:",
-	"patreon": "這是 Patreon 支援者專屬功能!\n你可以在 Patreon 支援我來使用這個功能:",
+	"general": {
+		"prefix": "此伺服器的指令前綴是 `$1`。你可以使用 `$1settings prefix` 更改前綴。關於全部指令,請見 `$1help`。",
+		"missingperm": "我缺少一些權限來執行此指令:",
+		"limit": "🚨 **停一下,你太快了!** 🚨\n\n$1,你發出的指令過多了。",
+		"disclaimer": "我是一個連結到 Gamepedia 和 Fandom wiki 的小機器人。$1用 JavaScript 編寫了我。\n\n**我和 Fandom 沒有關係,是一個非官方工具!**\n\n你可以在 Patreon 支援我:",
+		"helpserver": "有問題嗎?你可以訪問我的專屬支援伺服器:",
+		"patreon": "這是 Patreon 支援者專屬功能!\n你可以在 Patreon 支援我來使用這個功能:"
+	},
 	"settings": {
 	"settings": {
 		"save_failed": "啊喔,設定保存失敗了,請稍後再試。",
 		"save_failed": "啊喔,設定保存失敗了,請稍後再試。",
 		"missing": "這個伺服器尚未完成設定,使用 $1 以及 $2 來完成設定。",
 		"missing": "這個伺服器尚未完成設定,使用 $1 以及 $2 來完成設定。",
@@ -373,12 +375,12 @@
 		"pause": "我在此伺服器正處於暫停狀態。",
 		"pause": "我在此伺服器正處於暫停狀態。",
 		"text": [
 		"text": [
 			"全功率運行中!",
 			"全功率運行中!",
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null, null,
-			null, null, null, null
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " ", " ",
+			" ", " ", " ", " "
 		],
 		],
 		"time": "咋瓦魯多",
 		"time": "咋瓦魯多",
 		"notice": "功能受限",
 		"notice": "功能受限",

+ 6 - 5
util/i18n.js

@@ -18,25 +18,25 @@ class Lang {
 	constructor(lang = defaultSettings.lang, namespace = '') {
 	constructor(lang = defaultSettings.lang, namespace = '') {
 		this.lang = lang;
 		this.lang = lang;
 		this.namespace = namespace;
 		this.namespace = namespace;
-		this.fallback = ( i18n?.[lang]?.fallback.slice() || [defaultSettings.lang] ).filter( fb => fb );
+		this.fallback = ( i18n?.[lang]?.fallback.slice() || [defaultSettings.lang] ).filter( fb => fb.trim() );
 
 
 		this.localNames = {};
 		this.localNames = {};
 		this.aliases = {};
 		this.aliases = {};
 		let aliases = ( i18n?.[lang]?.aliases || {} );
 		let aliases = ( i18n?.[lang]?.aliases || {} );
 		Object.keys(aliases).forEach( cmd => {
 		Object.keys(aliases).forEach( cmd => {
-			if ( aliases[cmd][0] && !( cmd in this.localNames ) ) {
+			if ( aliases[cmd][0].trim() && !( cmd in this.localNames ) ) {
 				this.localNames[cmd] = aliases[cmd][0];
 				this.localNames[cmd] = aliases[cmd][0];
 			}
 			}
 			aliases[cmd].forEach( alias => {
 			aliases[cmd].forEach( alias => {
-				if ( alias && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
+				if ( alias.trim() && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
 			} );
 			} );
 		} );
 		} );
 		Object.keys(defaultAliases).forEach( cmd => {
 		Object.keys(defaultAliases).forEach( cmd => {
-			if ( defaultAliases[cmd][0] && !( cmd in this.localNames ) ) {
+			if ( defaultAliases[cmd][0].trim() && !( cmd in this.localNames ) ) {
 				this.localNames[cmd] = defaultAliases[cmd][0];
 				this.localNames[cmd] = defaultAliases[cmd][0];
 			}
 			}
 			defaultAliases[cmd].forEach( alias => {
 			defaultAliases[cmd].forEach( alias => {
-				if ( alias && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
+				if ( alias.trim() && !( alias in this.aliases ) ) this.aliases[alias] = cmd;
 			} );
 			} );
 		} );
 		} );
 	}
 	}
@@ -56,6 +56,7 @@ class Lang {
 		for (let n = 0; n < keys.length; n++) {
 		for (let n = 0; n < keys.length; n++) {
 			if ( text ) {
 			if ( text ) {
 				text = text?.[keys[n]];
 				text = text?.[keys[n]];
+				if ( typeof text === 'string' ) text = text.trim()
 			}
 			}
 			if ( !text ) {
 			if ( !text ) {
 				if ( fallback < this.fallback.length ) {
 				if ( fallback < this.fallback.length ) {

+ 1 - 1
util/newMessage.js

@@ -54,7 +54,7 @@ function newMessage(msg, lang, wiki = defaultSettings.wiki, prefix = process.env
 		if ( count === maxcount ) {
 		if ( count === maxcount ) {
 			console.log( '- Message contains too many commands!' );
 			console.log( '- Message contains too many commands!' );
 			msg.reactEmoji('⚠️');
 			msg.reactEmoji('⚠️');
-			msg.sendChannelError( lang.get('limit', '<@' + author.id + '>'), {allowedMentions:{users:[author.id]}} );
+			msg.sendChannelError( lang.get('general.limit', '<@' + author.id + '>'), {allowedMentions:{users:[author.id]}} );
 			return;
 			return;
 		}
 		}
 		line = line.substring(prefix.length);
 		line = line.substring(prefix.length);