Browse Source

Update main.js

Markus-Rost 6 years ago
parent
commit
4812404f23
1 changed files with 85 additions and 8 deletions
  1. 85 8
      main.js

+ 85 - 8
main.js

@@ -6,6 +6,7 @@ var request = require('request');
 var client = new Discord.Client( {disableEveryone:true} );
 var client = new Discord.Client( {disableEveryone:true} );
 
 
 var i18n = JSON.parse(fs.readFileSync('i18n.json', 'utf8'));
 var i18n = JSON.parse(fs.readFileSync('i18n.json', 'utf8'));
+var minecraft = JSON.parse(fs.readFileSync('minecraft.json', 'utf8'));
 
 
 var pause = {};
 var pause = {};
 
 
@@ -54,7 +55,6 @@ var cmdmap = {
 	server: cmd_serverlist,
 	server: cmd_serverlist,
 	say: cmd_multiline,
 	say: cmd_multiline,
 	delete: cmd_multiline,
 	delete: cmd_multiline,
-	purge: cmd_multiline,
 	poll: cmd_multiline,
 	poll: cmd_multiline,
 	voice: cmd_voice,
 	voice: cmd_voice,
 	settings: cmd_settings,
 	settings: cmd_settings,
@@ -79,6 +79,11 @@ var pausecmdmap = {
 	eval: cmd_multiline
 	eval: cmd_multiline
 }
 }
 
 
+var minecraftcmdmap = {
+	command: cmd_befehl2,
+	bug: cmd_bug
+}
+
 function cmd_settings(lang, msg, args, line) {
 function cmd_settings(lang, msg, args, line) {
 	if ( admin(msg) ) {
 	if ( admin(msg) ) {
 		if ( msg.guild.id in settings ) var text = lang.settings.current + '\n`' + process.env.prefix + ' settings lang` – ' + settings[msg.guild.id].lang + '\n`' + process.env.prefix + ' settings wiki` – ' + settings[msg.guild.id].wiki;
 		if ( msg.guild.id in settings ) var text = lang.settings.current + '\n`' + process.env.prefix + ' settings lang` – ' + settings[msg.guild.id].lang + '\n`' + process.env.prefix + ' settings wiki` – ' + settings[msg.guild.id].wiki;
@@ -207,11 +212,12 @@ function cmd_helpserver(lang, msg) {
 function cmd_help(lang, msg, args, line) {
 function cmd_help(lang, msg, args, line) {
 	if ( admin(msg) && !( msg.guild.id in settings ) ) cmd_settings(lang, msg, [], line);
 	if ( admin(msg) && !( msg.guild.id in settings ) ) cmd_settings(lang, msg, [], line);
 	var cmds = lang.help.list;
 	var cmds = lang.help.list;
+	var isMinecraft = ( lang.link == minecraft[lang.lang].link );
 	if ( args.length ) {
 	if ( args.length ) {
 		if ( mention(args[0]) ) cmd_helpserver(lang, msg);
 		if ( mention(args[0]) ) cmd_helpserver(lang, msg);
 		else if ( args[0].toLowerCase() == 'admin' ) {
 		else if ( args[0].toLowerCase() == 'admin' ) {
 			if ( msg.channel.type != 'text' || admin(msg) ) {
 			if ( msg.channel.type != 'text' || admin(msg) ) {
-				if ( args[1] && args[1].toLowerCase() == 'emoji' ) {
+				if ( args[1] && args[1].toLowerCase() == 'emoji' && msg.author.id == process.env.owner ) {
 					var cmdlist = lang.help.emoji + '\n';
 					var cmdlist = lang.help.emoji + '\n';
 					var i = 0;
 					var i = 0;
 					client.emojis.forEach( function(emoji) {
 					client.emojis.forEach( function(emoji) {
@@ -230,7 +236,7 @@ function cmd_help(lang, msg, args, line) {
 						}
 						}
 					}
 					}
 					
 					
-					msg.channel.send( cmdlist );
+					msg.channel.send( cmdlist, {split:true} );
 				}
 				}
 			}
 			}
 			else {
 			else {
@@ -240,24 +246,24 @@ function cmd_help(lang, msg, args, line) {
 		else {
 		else {
 			var cmdlist = ''
 			var cmdlist = ''
 			for ( var i = 0; i < cmds.length; i++ ) {
 			for ( var i = 0; i < cmds.length; i++ ) {
-				if ( cmds[i].cmd.split(' ')[0] === args[0].toLowerCase() && !cmds[i].unsearchable && ( msg.channel.type != 'text' || !cmds[i].admin || admin(msg) ) ) {
+				if ( cmds[i].cmd.split(' ')[0] === args[0].toLowerCase() && !cmds[i].unsearchable && ( msg.channel.type != 'text' || !cmds[i].admin || admin(msg) ) && ( !cmds[i].minecraft || isMinecraft ) ) {
 					cmdlist += '🔹 `' + process.env.prefix + ' ' + cmds[i].cmd + '`\n\t' + cmds[i].desc + '\n';
 					cmdlist += '🔹 `' + process.env.prefix + ' ' + cmds[i].cmd + '`\n\t' + cmds[i].desc + '\n';
 				}
 				}
 			}
 			}
 			
 			
 			if ( cmdlist == '' ) msg.react('❓');
 			if ( cmdlist == '' ) msg.react('❓');
-			else msg.channel.send( cmdlist );
+			else msg.channel.send( cmdlist, {split:true} );
 		}
 		}
 	}
 	}
 	else {
 	else {
 		var cmdlist = lang.help.all + '\n';
 		var cmdlist = lang.help.all + '\n';
 		for ( var i = 0; i < cmds.length; i++ ) {
 		for ( var i = 0; i < cmds.length; i++ ) {
-			if ( !cmds[i].hide && !cmds[i].admin ) {
+			if ( !cmds[i].hide && !cmds[i].admin && ( !cmds[i].minecraft || isMinecraft ) ) {
 				cmdlist += '🔹 `' + process.env.prefix + ' ' + cmds[i].cmd + '`\n\t' + cmds[i].desc + '\n';
 				cmdlist += '🔹 `' + process.env.prefix + ' ' + cmds[i].cmd + '`\n\t' + cmds[i].desc + '\n';
 			}
 			}
 		}
 		}
 		
 		
-		msg.channel.send( cmdlist );
+		msg.channel.send( cmdlist, {split:true} );
 	}
 	}
 }
 }
 
 
@@ -375,7 +381,13 @@ function cmd_link(lang, msg, title, wiki, cmd) {
 	var invoke = title.split(' ')[0].toLowerCase();
 	var invoke = title.split(' ')[0].toLowerCase();
 	var args = title.split(' ').slice(1);
 	var args = title.split(' ').slice(1);
 	
 	
-	if ( ( invoke == 'random' || invoke == '🎲' ) && !args.join('') ) cmd_random(lang, msg, wiki);
+	var mclang = minecraft[lang.lang];
+	var aliasInvoke = ( invoke in mclang.aliase ) ? mclang.aliase[invoke] : invoke;
+	if ( !msg.notminecraft && wiki == mclang.link && ( aliasInvoke in minecraftcmdmap || invoke.startsWith('/') ) ) {
+		if ( aliasInvoke in minecraftcmdmap ) minecraftcmdmap[aliasInvoke](lang, mclang, msg, args, title, cmd);
+		else cmd_befehl(lang, mclang, msg, invoke.substr(1), args, title, cmd);
+	}
+	else if ( ( invoke == 'random' || invoke == '🎲' ) && !args.join('') ) cmd_random(lang, msg, wiki);
 	else if ( invoke == 'page' || invoke == lang.search.page ) msg.channel.send( 'https://' + wiki + '.gamepedia.com/' + args.join('_') );
 	else if ( invoke == 'page' || invoke == lang.search.page ) msg.channel.send( 'https://' + wiki + '.gamepedia.com/' + args.join('_') );
 	else if ( invoke == 'search' || invoke == lang.search.search ) msg.channel.send( 'https://' + wiki + '.gamepedia.com/Special:Search/' + args.join('_').replace( /\?/g, '%3F' ) );
 	else if ( invoke == 'search' || invoke == lang.search.search ) msg.channel.send( 'https://' + wiki + '.gamepedia.com/Special:Search/' + args.join('_').replace( /\?/g, '%3F' ) );
 	else if ( invoke == 'diff' ) cmd_diff(lang, msg, args, wiki);
 	else if ( invoke == 'diff' ) cmd_diff(lang, msg, args, wiki);
@@ -791,6 +803,71 @@ function cmd_random(lang, msg, wiki) {
 	} );
 	} );
 }
 }
 
 
+function cmd_bug(lang, mclang, msg, args, title, cmd) {
+	if ( args.length && /\d+$/.test(args[0]) && !args[1] ) {
+		var hourglass;
+		msg.react('⏳').then( function( reaction ) {
+			hourglass = reaction;
+			var project = '';
+			if ( /^\d+$/.test(args[0]) ) project = 'MC-';
+			request( {
+				uri: 'https://bugs.mojang.com/rest/api/2/issue/' + project + args[0] + '?fields=summary',
+				json: true
+			}, function( error, response, body ) {
+				if ( error || !response || !body ) {
+					console.log( 'Fehler beim Erhalten der Zusammenfassung' + ( error ? ': ' + error.message : '.' ) );
+					msg.channel.send( 'https://bugs.mojang.com/browse/' + project + args[0] ).then( message => message.react('440871715938238494') );
+				}
+				else {
+					if ( body.errorMessages || body.errors ) {
+						if ( body.errorMessages && body.errorMessages[0] == 'Issue Does Not Exist' ) {
+							msg.react('❓');
+						}
+						else {
+							msg.channel.send( mclang.bug.private + '\nhttps://bugs.mojang.com/browse/' + project + args[0] );
+						}
+					}
+					else {
+						msg.channel.send( body.fields.summary + '\nhttps://bugs.mojang.com/browse/' + body.key );
+					}
+				}
+				
+				if ( hourglass != undefined ) hourglass.remove();
+			} );
+		} );
+	}
+	else {
+		msg.notminecraft = true;
+		cmd_link(lang, msg, title, lang.link, cmd);
+	}
+}
+
+function cmd_befehl(lang, mclang, msg, befehl, args, title, cmd) {
+	var aliasCmd = ( ( befehl in mclang.cmd.aliase ) ? mclang.cmd.aliase[befehl] : befehl ).toLowerCase();
+	
+	if ( aliasCmd in mclang.cmd.list ) {
+		var regex = new RegExp('/' + aliasCmd, 'g');
+		var cmdSyntax = mclang.cmd.list[aliasCmd].join( '\n' ).replace( regex, '/' + befehl );
+		msg.channel.send( '```md\n' + cmdSyntax + '```<https://' + mclang.link + '.gamepedia.com/' + mclang.cmd.page + aliasCmd + '>', {split:{maxLength:2000,prepend:'```md\n',append:'```'}} );
+	}
+	else {
+		msg.react('❓');
+		msg.notminecraft = true;
+		cmd_link(lang, msg, title, lang.link, cmd);
+	}
+}
+
+function cmd_befehl2(lang, mclang, msg, args, title, cmd) {
+	if ( args.length ) {
+		if ( args[0].startsWith('/') ) cmd_befehl(lang, mclang, msg, args[0].substr(1), args.slice(1), title, cmd);
+		else cmd_befehl(lang, mclang, msg, args[0], args.slice(1), title, cmd);
+	}
+	else {
+		msg.notminecraft = true;
+		cmd_link(lang, msg, title, lang.link, cmd);
+	}
+}
+
 function cmd_multiline(lang, msg, args, line) {
 function cmd_multiline(lang, msg, args, line) {
 	msg.react('440871715938238494');
 	msg.react('440871715938238494');
 }
 }