Browse Source

v1.1.1: made `!wiki test` more useful

Markus-Rost 6 năm trước cách đây
mục cha
commit
662942bb8b
3 tập tin đã thay đổi với 58 bổ sung28 xóa
  1. 10 5
      i18n.json
  2. 45 20
      main.js
  3. 3 3
      package.json

+ 10 - 5
i18n.json

@@ -140,7 +140,8 @@
 				"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."
 			],
 			],
-			"default": "I'm fully functional!"
+			"default": "I'm fully functional!",
+			"time": "Response time"
 		},
 		},
 		"help": {
 		"help": {
 			"all": "So, you want to know what things I can do? Here is a list of all commands that I understand:",
 			"all": "So, you want to know what things I can do? Here is a list of all commands that I understand:",
@@ -296,7 +297,8 @@
 				"hast du **Kekse** gesagt?",
 				"hast du **Kekse** gesagt?",
 				"hast du **Kekse** gesagt?"
 				"hast du **Kekse** gesagt?"
 			],
 			],
-			"default": "ich bin voll funktionsfähig!"
+			"default": "ich bin voll funktionsfähig!",
+			"time": "Ping"
 		},
 		},
 		"help": {
 		"help": {
 			"all": "Du willst also wissen, was ich so drauf habe? Hier ist eine Liste aller Befehle, die ich verstehe:",
 			"all": "Du willst also wissen, was ich so drauf habe? Hier ist eine Liste aller Befehle, die ich verstehe:",
@@ -461,7 +463,8 @@
 				"Je fais de la science et je suis toujours en vie.",
 				"Je fais de la science et je suis toujours en vie.",
 				"Je me sens fantastique et je suis toujours en vie."
 				"Je me sens fantastique et je suis toujours en vie."
 			],
 			],
-			"default": "Je suis entièrement fonctionnel !"
+			"default": "Je suis entièrement fonctionnel !",
+			"time": "Temps de latence"
 		},
 		},
 		"help": {
 		"help": {
 			"all": "Donc, vous voulez savoir ce que je peux faire ? Voici une liste de toutes les commandes que je comprends :",
 			"all": "Donc, vous voulez savoir ce que je peux faire ? Voici une liste de toutes les commandes que je comprends :",
@@ -624,7 +627,8 @@
 				"Myślę, więc jestem.",
 				"Myślę, więc jestem.",
 				"Czuję się fantastycznie."
 				"Czuję się fantastycznie."
 			],
 			],
-			"default": "Jestem w pełni funkcjonalny!"
+			"default": "Jestem w pełni funkcjonalny!",
+			"time": "Czas odpowiedzi"
 		},
 		},
 		"help": {
 		"help": {
 			"all": "A więc chcesz wiedzieć co potrafię? Tutaj jest lista komend, które rozumiem:",
 			"all": "A więc chcesz wiedzieć co potrafię? Tutaj jest lista komend, które rozumiem:",
@@ -795,7 +799,8 @@
 				"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."
 			],
 			],
-			"default": "eu estou totalmente funcional!"
+			"default": "eu estou totalmente funcional!",
+			"time": "Ping"
 		},
 		},
 		"help": {
 		"help": {
 			"all": "Então, você quer saber o que eu posso fazer? Aqui está uma lista de todos os comandos que eu entendo:",
 			"all": "Então, você quer saber o que eu posso fazer? Aqui está uma lista de todos os comandos que eu entendo:",

+ 45 - 20
main.js

@@ -12,8 +12,8 @@ const isDebug = ( process.argv[2] == 'debug' ? true : false );
 var client = new Discord.Client( {disableEveryone:true} );
 var client = new Discord.Client( {disableEveryone:true} );
 const dbl = new DBL(process.env.dbltoken);
 const dbl = new DBL(process.env.dbltoken);
 
 
-var i18n = JSON.parse(fs.readFileSync('i18n.json', 'utf8').trim());
-var minecraft = JSON.parse(fs.readFileSync('minecraft.json', 'utf8').trim());
+var i18n = require('./i18n.json');
+var minecraft = require('./minecraft.json');
 
 
 var pause = {};
 var pause = {};
 var stop = false;
 var stop = false;
@@ -80,7 +80,7 @@ function getAllSites() {
 	} );
 	} );
 }
 }
 
 
-client.on('ready', () => {
+client.on( 'ready', () => {
 	console.log( '- Erfolgreich als ' + client.user.username + ' angemeldet!' );
 	console.log( '- Erfolgreich als ' + client.user.username + ' angemeldet!' );
 	getSettings(setStatus);
 	getSettings(setStatus);
 	getAllSites();
 	getAllSites();
@@ -208,7 +208,7 @@ function cmd_settings(lang, msg, args, line) {
 }
 }
 
 
 function find_wikis(lang, msg, key, value, text) {
 function find_wikis(lang, msg, key, value, text) {
-	if ( allSites.find( site => site.wiki_domain == value.join('') + '.gamepedia.com' ) ) edit_settings(lang, msg, key, value.join(''));
+	if ( allSites.some( site => site.wiki_domain == value.join('') + '.gamepedia.com' ) ) edit_settings(lang, msg, key, value.join(''));
 	else {
 	else {
 		var sites = allSites.filter( site => site.wiki_display_name.toLowerCase().includes( value.join(' ') ) );
 		var sites = allSites.filter( site => site.wiki_display_name.toLowerCase().includes( value.join(' ') ) );
 		if ( 0 < sites.length && sites.length < 21 ) {
 		if ( 0 < sites.length && sites.length < 21 ) {
@@ -377,7 +377,31 @@ function cmd_test(lang, msg, args, line) {
 		var x = Math.floor(Math.random() * lang.test.random);
 		var x = Math.floor(Math.random() * lang.test.random);
 		if ( x < lang.test.text.length ) text = lang.test.text[x];
 		if ( x < lang.test.text.length ) text = lang.test.text[x];
 		console.log( '- Dies ist ein Test: Voll funktionsfähig!' );
 		console.log( '- Dies ist ein Test: Voll funktionsfähig!' );
-		msg.replyMsg( text );
+		var now = Date.now();
+		msg.replyMsg( text ).then( edit => {
+			var then = Date.now();
+			var embed = new Discord.RichEmbed().setTitle( lang.test.time ).addField( 'Discord', ( then - now ) + 'ms' );
+			now = Date.now();
+			request( {
+				uri: 'https://' + lang.link + '.gamepedia.com/api.php?action=query&format=json',
+				json: true
+			}, function( error, response, body ) {
+				then = Date.now();
+				var ping = ( then - now ) + 'ms';
+				if ( error || !response || response.statusCode != 200 || !body || body.batchcomplete == undefined ) {
+					if ( response && response.request && response.request.uri && response.request.uri.href == 'https://www.gamepedia.com/' ) {
+						console.log( '- Dieses Wiki existiert nicht! ' + ( error ? error.message : ( body ? ( body.error ? body.error.info : '' ) : '' ) ) );
+						ping += ' <:unknown_wiki:505887262077353984>';
+					}
+					else {
+						console.log( '- Fehler beim Erreichen des Wikis' + ( error ? ': ' + error : ( body ? ( body.error ? ': ' + body.error.info : '.' ) : '.' ) ) );
+						ping += ' <:error:505887261200613376>';
+					}
+				}
+				embed.addField( lang.link + '.gamepedia.com', ping );
+				edit.edit( edit.content, embed );
+			} );
+		} );
 	} else {
 	} else {
 		console.log( '- Dies ist ein Test: Pausiert!' );
 		console.log( '- Dies ist ein Test: Pausiert!' );
 		msg.replyMsg( lang.test.pause );
 		msg.replyMsg( lang.test.pause );
@@ -1206,13 +1230,13 @@ String.prototype.toSection = function() {
 
 
 String.prototype.toMarkdown = function(wiki, title = '') {
 String.prototype.toMarkdown = function(wiki, title = '') {
 	var text = this;
 	var text = this;
-	while ( ( link = /\[\[(?:([^\|\]]+)\|)?([^\]]+)\]\]/g.exec(text) ) !== null ) {
+	while ( ( link = /\[\[(?:([^\|\]]+)\|)?([^\]]+)\]\]([a-z]*)/g.exec(text) ) !== null ) {
 		if ( link[1] ) {
 		if ( link[1] ) {
 			var page = ( /^(#|\/)/.test(link[1]) ? title.toTitle(true) + ( /^#/.test(link[1]) ? '#' + link[1].substr(1).toSection() : link[1].toTitle(true) ) : link[1].toTitle(true) );
 			var page = ( /^(#|\/)/.test(link[1]) ? title.toTitle(true) + ( /^#/.test(link[1]) ? '#' + link[1].substr(1).toSection() : link[1].toTitle(true) ) : link[1].toTitle(true) );
-			text = text.replace( link[0], '[' + link[2] + '](https://' + wiki + '.gamepedia.com/' + page + ')');
+			text = text.replace( link[0], '[' + link[2] + link[3] + '](https://' + wiki + '.gamepedia.com/' + page + ')' );
 		} else {
 		} else {
 			var page = ( /^(#|\/)/.test(link[2]) ? title.toTitle(true) + ( /^#/.test(link[2]) ? '#' + link[2].substr(1).toSection() : link[2].toTitle(true) ) : link[2].toTitle(true) );
 			var page = ( /^(#|\/)/.test(link[2]) ? title.toTitle(true) + ( /^#/.test(link[2]) ? '#' + link[2].substr(1).toSection() : link[2].toTitle(true) ) : link[2].toTitle(true) );
-			text = text.replace( link[0], '[' + link[2] + '](https://' + wiki + '.gamepedia.com/' + page + ')');
+			text = text.replace( link[0], '[' + link[2] + link[3] + '](https://' + wiki + '.gamepedia.com/' + page + ')' );
 		}
 		}
 	}
 	}
 	while ( title != '' && ( link = /\/\*\s*([^\*]+?)\s*\*\/\s*(.)?/g.exec(text) ) !== null ) {
 	while ( title != '' && ( link = /\/\*\s*([^\*]+?)\s*\*\/\s*(.)?/g.exec(text) ) !== null ) {
@@ -1276,7 +1300,7 @@ String.prototype.hasPrefix = function(flags = '') {
 	else return false;
 	else return false;
 }
 }
 
 
-client.on('message', msg => {
+client.on( 'message', msg => {
 	if ( stop ) return;
 	if ( stop ) return;
 	
 	
 	var cont = msg.content;
 	var cont = msg.content;
@@ -1291,7 +1315,7 @@ client.on('message', msg => {
 		if ( settings == defaultSettings ) {
 		if ( settings == defaultSettings ) {
 			msg.channel.sendMsg( '⚠ **Limited Functionality** ⚠\nNo settings found, please contact the bot owner!\n' + process.env.invite );
 			msg.channel.sendMsg( '⚠ **Limited Functionality** ⚠\nNo settings found, please contact the bot owner!\n' + process.env.invite );
 		} else if ( channel.type == 'text' && msg.guild.id in settings ) setting = Object.assign({}, settings[msg.guild.id]);
 		} else if ( channel.type == 'text' && msg.guild.id in settings ) setting = Object.assign({}, settings[msg.guild.id]);
-		var lang = i18n[setting.lang];
+		var lang = Object.assign({}, i18n[setting.lang]);
 		lang.link = setting.wiki;
 		lang.link = setting.wiki;
 		if ( setting.channels && channel.id in setting.channels ) lang.link = setting.channels[channel.id];
 		if ( setting.channels && channel.id in setting.channels ) lang.link = setting.channels[channel.id];
 		if ( channel.type != 'text' || permissions.has(['SEND_MESSAGES','ADD_REACTIONS','USE_EXTERNAL_EMOJIS']) ) {
 		if ( channel.type != 'text' || permissions.has(['SEND_MESSAGES','ADD_REACTIONS','USE_EXTERNAL_EMOJIS']) ) {
@@ -1340,10 +1364,10 @@ client.on('message', msg => {
 			if ( permissions.has(['SEND_MESSAGES']) ) msg.replyMsg( lang.missingperm + ' `' + permissions.missing(['ADD_REACTIONS','USE_EXTERNAL_EMOJIS']).join('`, `') + '`' );
 			if ( permissions.has(['SEND_MESSAGES']) ) msg.replyMsg( lang.missingperm + ' `' + permissions.missing(['ADD_REACTIONS','USE_EXTERNAL_EMOJIS']).join('`, `') + '`' );
 		}
 		}
 	}
 	}
-});
+} );
 
 
 
 
-client.on('voiceStateUpdate', (oldm, newm) => {
+client.on( 'voiceStateUpdate', (oldm, newm) => {
 	if ( stop ) return;
 	if ( stop ) return;
 	
 	
 	if ( !ready.settings && settings == defaultSettings ) getSettings(setStatus);
 	if ( !ready.settings && settings == defaultSettings ) getSettings(setStatus);
@@ -1367,15 +1391,15 @@ client.on('voiceStateUpdate', (oldm, newm) => {
 			}
 			}
 		}
 		}
 	}
 	}
-});
+} );
 
 
 
 
-client.on('guildCreate', guild => {
+client.on( 'guildCreate', guild => {
 	console.log( '- Ich wurde zu einem Server hinzugefügt.' );
 	console.log( '- Ich wurde zu einem Server hinzugefügt.' );
 	client.fetchUser(process.env.owner).then( owner => owner.sendMsg( 'Ich wurde zu einem Server hinzugefügt:\n"' + guild.toString() + '" von ' + guild.owner.toString() + ' mit ' + guild.memberCount + ' Mitgliedern.\n(' + guild.id + ')' ), log_error );
 	client.fetchUser(process.env.owner).then( owner => owner.sendMsg( 'Ich wurde zu einem Server hinzugefügt:\n"' + guild.toString() + '" von ' + guild.owner.toString() + ' mit ' + guild.memberCount + ' Mitgliedern.\n(' + guild.id + ')' ), log_error );
-});
+} );
 
 
-client.on('guildDelete', guild => {
+client.on( 'guildDelete', guild => {
 	console.log( '- Ich wurde von einem Server entfernt.' );
 	console.log( '- Ich wurde von einem Server entfernt.' );
 	client.fetchUser(process.env.owner).then( owner => owner.sendMsg( 'Ich wurde von einem Server entfernt:\n"' + guild.toString() + '" von ' + guild.owner.toString() + ' mit ' + guild.memberCount + ' Mitgliedern.\n(' + guild.id + ')' ), log_error );
 	client.fetchUser(process.env.owner).then( owner => owner.sendMsg( 'Ich wurde von einem Server entfernt:\n"' + guild.toString() + '" von ' + guild.owner.toString() + ' mit ' + guild.memberCount + ' Mitgliedern.\n(' + guild.id + ')' ), log_error );
 	
 	
@@ -1415,13 +1439,14 @@ client.on('guildDelete', guild => {
 			}
 			}
 		} );
 		} );
 	}
 	}
-});
+} );
 
 
 
 
 client.login(process.env.token).catch( error => log_error(error, true, 'LOGIN-') );
 client.login(process.env.token).catch( error => log_error(error, true, 'LOGIN-') );
 
 
 
 
-client.on('error', error => error => log_error(error, true));
+client.on( 'error', error => log_error(error, true) );
+client.on( 'warn', console.warn );
 
 
 
 
 async function log_error(error, isBig = false, type = '') {
 async function log_error(error, isBig = false, type = '') {
@@ -1449,5 +1474,5 @@ async function graceful(code = 1) {
 	}, 10000 ).unref();
 	}, 10000 ).unref();
 }
 }
 
 
-process.once('SIGINT', graceful);
-process.once('SIGTERM', graceful);
+process.once( 'SIGINT', graceful );
+process.once( 'SIGTERM', graceful );

+ 3 - 3
package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "discord-wiki-bot",
   "name": "discord-wiki-bot",
-  "version": "1.1.0",
+  "version": "1.1.1",
   "description": "Wiki-Bot is a bot for Discord with the purpose to easily link to Gamepedia wikis. He resolves redirects and follows interwiki links.",
   "description": "Wiki-Bot is a bot for Discord with the purpose to easily link to Gamepedia wikis. He resolves redirects and follows interwiki links.",
   "main": "main.js",
   "main": "main.js",
   "scripts": {
   "scripts": {
@@ -12,9 +12,9 @@
   "dependencies": {
   "dependencies": {
     "dblapi.js": "^2.3.0",
     "dblapi.js": "^2.3.0",
     "discord.js": "^11.4.2",
     "discord.js": "^11.4.2",
-    "dotenv": "^6.1.0",
+    "dotenv": "^6.2.0",
     "full-icu": "^1.2.1",
     "full-icu": "^1.2.1",
-    "npm": "^5.10.0",
+    "npm": "^6.5.0",
     "request": "^2.88.0"
     "request": "^2.88.0"
   },
   },
   "repository": {
   "repository": {