Quellcode durchsuchen

fix rcscript crash

Markus-Rost vor 4 Jahren
Ursprung
Commit
a909d689f8
6 geänderte Dateien mit 38 neuen und 46 gelöschten Zeilen
  1. 3 3
      cmds/rcscript.js
  2. 21 41
      dashboard/oauth.js
  3. 1 1
      dashboard/rcscript.js
  4. 1 0
      dashboard/util.js
  5. 1 1
      dashboard/verification.js
  6. 11 0
      main.js

+ 3 - 3
cmds/rcscript.js

@@ -377,7 +377,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					msg.replyMsg( lang.get('rcscript.updated_display') + ' `' + args[1] + '`\n`' + cmd + '`', {}, true );
 				} );
 			}
-			if ( selected_row.wiki.isFandom() && args[0] === 'feeds' ) {
+			if ( new Wiki(selected_row.wiki).isFandom() && args[0] === 'feeds' ) {
 				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 ) {
@@ -507,7 +507,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					text += '\n' + lang.get('rcscript.rc') + ' *`' + lang.get('rcscript.disabled' ) + '`*';
 					text += '\n`' + cmd + ' feeds only` ' + lang.get('rcscript.toggle') + '\n';
 				}
-				if ( selected_row.wiki.isFandom() ) {
+				if ( new Wiki(selected_row.wiki).isFandom() ) {
 					text += '\n' + lang.get('rcscript.feeds') + ' *`' + lang.get('rcscript.' + ( selected_row.wikiid ? 'enabled' : 'disabled' )) + '`*';
 					text += '\n' + lang.get('rcscript.help_feeds') + '\n`' + cmd + ' feeds` ' + lang.get('rcscript.toggle') + '\n';
 				}
@@ -554,7 +554,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					row_text += '\n' + lang.get('rcscript.rc') + ' *`' + lang.get('rcscript.disabled' ) + '`*';
 					if ( only ) row_text += '\n`' + cmd + ' feeds only` ' + lang.get('rcscript.toggle') + '\n';
 				}
-				if ( row.wiki.isFandom() ) {
+				if ( new Wiki(row.wiki).isFandom() ) {
 					row_text += '\n' + lang.get('rcscript.feeds') + ' *`' + lang.get('rcscript.' + ( row.wikiid ? 'enabled' : 'disabled' )) + '`*';
 					if ( only ) row_text += '\n' + lang.get('rcscript.help_feeds') + '\n`' + cmd + ' feeds` ' + lang.get('rcscript.toggle') + '\n';
 				}

+ 21 - 41
dashboard/oauth.js

@@ -119,30 +119,30 @@ function dashboard_oauth(res, state, searchParams, lastGuild) {
 					userPermissions: guild.permissions
 				};
 			} );
-			var settings = {
-				state: `${state}-${user.id}`,
-				access_token,
-				user: {
-					id: user.id,
-					username: user.username,
-					discriminator: user.discriminator,
-					avatar: 'https://cdn.discordapp.com/' + ( user.avatar ? 
-						`avatars/${user.id}/${user.avatar}.` + 
-						( user.avatar.startsWith( 'a_' ) ? 'gif' : 'png' ) : 
-						`embed/avatars/${user.discriminator % 5}.png` ) + '?size=64',
-					locale: user.locale
-				},
-				guilds: {
-					count: guilds.length,
-					isMember: new Map(),
-					notMember: new Map()
-				}
-			};
 			sendMsg( {
 				type: 'getGuilds',
 				member: user.id,
 				guilds: guilds.map( guild => guild.id )
 			} ).then( response => {
+				var settings = {
+					state: `${state}-${user.id}`,
+					access_token,
+					user: {
+						id: user.id,
+						username: user.username,
+						discriminator: user.discriminator,
+						avatar: 'https://cdn.discordapp.com/' + ( user.avatar ? 
+							`avatars/${user.id}/${user.avatar}.` + 
+							( user.avatar.startsWith( 'a_' ) ? 'gif' : 'png' ) : 
+							`embed/avatars/${user.discriminator % 5}.png` ) + '?size=64',
+						locale: user.locale
+					},
+					guilds: {
+						count: guilds.length,
+						isMember: new Map(),
+						notMember: new Map()
+					}
+				};
 				response.forEach( (guild, i) => {
 					if ( guild ) {
 						settings.guilds.isMember.set(guilds[i].id, Object.assign(guilds[i], guild));
@@ -157,28 +157,8 @@ function dashboard_oauth(res, state, searchParams, lastGuild) {
 				return res.end();
 			}, error => {
 				console.log( '- Dashboard: Error while getting the guilds:', error );
-				db.all( 'SELECT guild FROM discord WHERE guild IN (' + guilds.map( guild => '?' ).join(', ') + ') AND channel IS NULL', guilds.map( guild => guild.id ), (dberror, rows) => {
-					if ( dberror ) {
-						console.log( '- Error while checking for settings: ' + dberror );
-						res.writeHead(302, {Location: '/login?action=failed'});
-						return res.end();
-					}
-					guilds.forEach( guild => {
-						if ( rows.some( row => row.guild === guild.id ) ) {
-							settings.guilds.isMember.set(guild.id, Object.assign(guild, {
-								botPermissions: 0,
-								channels: []
-							}));
-						}
-						else settings.guilds.notMember.set(guild.id, guild);
-					} );
-					settingsData.set(settings.state, settings);
-					res.writeHead(302, {
-						Location: ( lastGuild ? '/guild/' + lastGuild : '/' ),
-						'Set-Cookie': [`wikibot="${settings.state}"; HttpOnly; Path=/`]
-					});
-					return res.end();
-				} );
+				res.writeHead(302, {Location: '/login?action=failed'});
+				return res.end();
 			} );
 		}, error => {
 			console.log( '- Dashboard: Error while getting user and guilds: ' + error );

+ 1 - 1
dashboard/rcscript.js

@@ -9,7 +9,7 @@ const {db, settingsData, sendMsg, createNotice, hasPerm} = require('./util.js');
  */
 function dashboard_rcscript(res, $, guild, args) {
 	$('.channel#rcgcdb').addClass('selected');
-	db.all( 'SELECT * FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [guild.id], function(dberror, rows) {
+	db.all( 'SELECT configid, wiki, lang, display, wikiid, rcid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [guild.id], function(dberror, rows) {
 		if ( dberror ) {
 			console.log( '- Dashboard: Error while getting the RcGcDw: ' + dberror );
 			$('#text .description').text('Failed to load the recent changes webhooks!');

+ 1 - 0
dashboard/util.js

@@ -37,6 +37,7 @@ const db = new sqlite3.Database( './wikibot.db', mode, dberror => {
  * @property {String} userPermissions
  * @property {String} [botPermissions]
  * @property {{id: String, name: String, permissions: Number}[]} [channels]
+ * @property {{id: String, name: String, lower: Boolean}[]} [roles]
  */
 
 /**

+ 1 - 1
dashboard/verification.js

@@ -9,7 +9,7 @@ const {db, settingsData, sendMsg, createNotice, hasPerm} = require('./util.js');
  */
 function dashboard_verification(res, $, guild, args) {
 	$('.channel#verification').addClass('selected');
-	db.all( 'SELECT * FROM verification WHERE guild = ? ORDER BY configid ASC', [guild.id], function(dberror, rows) {
+	db.all( 'SELECT configid, channel, role, editcount, usergroup, accountage, rename FROM verification WHERE guild = ? ORDER BY configid ASC', [guild.id], function(dberror, rows) {
 		if ( dberror ) {
 			console.log( '- Dashboard: Error while getting the verifications: ' + dberror );
 			$('#text .description').text('Failed to load the verifications!');

+ 11 - 0
main.js

@@ -98,6 +98,17 @@ if ( process.env.dashboard ) {
 												name: channel.name,
 												permissions: member.permissionsIn(channel).bitfield
 											};
+										} ),
+										roles: guild.roles.cache.filter( role => {
+											return ( role.id !== guild.id );
+										} ).sort( (a, b) => {
+											return b.rawPosition - a.rawPosition;
+										} ).map( role => {
+											return {
+												id: role.id,
+												name: role.name,
+												lower: ( guild.me.roles.highest.comparePositionTo(role) > 0 && !role.managed )
+											};
 										} )
 									};
 								} )