浏览代码

Merge pull request #28 from Markus-Rost/rcgcdb-feeds

Add discussion feeds to recent changes webhook
MarkusRost 5 年之前
父节点
当前提交
7a216927aa
共有 2 个文件被更改,包括 56 次插入4 次删除
  1. 1 1
      cmds/help.js
  2. 55 3
      cmds/rcscript.js

+ 1 - 1
cmds/help.js

@@ -19,7 +19,7 @@ const helpmap = {
 	settings: ['settings.default', 'settings.wiki', 'settings.lang', 'settings.inline', 'settings.prefix', 'settings.channel'],
 	verify: ['verify'],
 	verification: ['verification.default', 'verification.add', 'verification.channel', 'verification.role', 'verification.editcount', 'verification.usergroup', 'verification.accountage', 'verification.rename', 'verification.delete'],
-	rcscript: ['rcscript.default', 'rcscript.add', 'rcscript.wiki', 'rcscript.lang', 'rcscript.display', 'rcscript.delete'],
+	rcscript: ['rcscript.default', 'rcscript.add', 'rcscript.wiki', 'rcscript.lang', 'rcscript.display', 'rcscript.feeds', 'rcscript.delete'],
 	voice: ['voice'],
 	pause: ['pause.inactive'],
 	test: ['test'],

+ 55 - 3
cmds/rcscript.js

@@ -31,7 +31,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 		return msg.replyMsg( lang.get('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, rcid FROM rcgcdw WHERE guild = ? ORDER BY configid ASC', [msg.guild.id], (dberror, rows) => {
 		if ( dberror || !rows ) {
 			console.log( '- Error while getting the RcGcDw: ' + dberror );
 			msg.reactEmoji('error', true);
@@ -123,7 +123,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 						reason: lang.get('rcscript.audit_reason', wikinew)
 					} ).then( webhook => {
 						console.log( '- Webhook successfully created.' );
-						webhook.send( lang.get('rcscript.webhook.created', body.query.general.sitename) + '\n<' + wikinew.toLink(body.query.pages['-1'].title, '', '', body.query.general) + '>' ).catch(log_error);
+						webhook.send( lang.get('rcscript.webhook.created', body.query.general.sitename) + '\n<' + wikinew.toLink(body.query.pages['-1'].title, '', '', body.query.general) + ( wikiid ? '>\n<' + wikinew + 'f' : '' ) + '>' ).catch(log_error);
 						var new_configid = 1;
 						for ( let i of rows.map( row => row.configid ) ) {
 							if ( new_configid === i ) new_configid++;
@@ -268,7 +268,7 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 					 */
 					function updateWiki(wikiid = null) {
 						msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
-							webhook.send( lang.get('rcscript.webhook.updated_wiki', body.query.general.sitename) + '\n<' + wikinew.toLink(body.query.pages['-1'].title, '', '', body.query.general) + '>' ).catch(log_error);
+							webhook.send( lang.get('rcscript.webhook.updated_wiki', body.query.general.sitename) + '\n<' + wikinew.toLink(body.query.pages['-1'].title, '', '', body.query.general) + ( wikiid ? '>\n<' + wikinew + 'f' : '' ) + '>' ).catch(log_error);
 						}, log_error );
 						db.run( 'UPDATE rcgcdw SET wiki = ?, wikiid = ?, rcid = ?, postid = ? WHERE webhook = ?', [wikinew, wikiid, null, null, selected_row.webhook], function (error) {
 							if ( error ) {
@@ -332,7 +332,43 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				} );
 			}
 			if ( selected_row.wiki.isFandom() && args[0] === 'feeds' ) {
+				if ( args[1] === 'only' ) {
+					if ( selected_row.rcid === -1 ) {
+						msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
+							webhook.send( lang.get('rcscript.webhook.enabled_rc') ).catch(log_error);
+						}, log_error );
+						return db.run( 'UPDATE rcgcdw SET rcid = ? WHERE webhook = ?', [null, selected_row.webhook], function (error) {
+							if ( error ) {
+								console.log( '- Error while updating the RcGcDw: ' + error );
+								msg.replyMsg( lang.get('settings.save_failed'), {}, true );
+								return error;
+							}
+							console.log( '- RcGcDw successfully updated.' );
+							msg.replyMsg( lang.get('rcscript.enabled_rc') + '\n`' + cmd + '`', {}, true );
+						} );
+					}
+
+					if ( !selected_row.wikiid ) {
+						return msg.replyMsg( lang.get('rcscript.all_inactive') + '\n\n' + lang.get('rcscript.delete') + '\n`' + cmd + ' delete`', {}, true );
+					}
+					msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
+						webhook.send( lang.get('rcscript.webhook.disabled_rc') ).catch(log_error);
+					}, log_error );
+					return db.run( 'UPDATE rcgcdw SET rcid = ? WHERE webhook = ?', [-1, selected_row.webhook], function (error) {
+						if ( error ) {
+							console.log( '- Error while updating the RcGcDw: ' + error );
+							msg.replyMsg( lang.get('settings.save_failed'), {}, true );
+							return error;
+						}
+						console.log( '- RcGcDw successfully updated.' );
+						msg.replyMsg( lang.get('rcscript.disabled_rc') + '\n`' + cmd + '`', {}, true );
+					} );
+				}
+
 				if ( selected_row.wikiid ) {
+					if ( selected_row.rcid === -1 ) {
+						return msg.replyMsg( lang.get('rcscript.all_inactive') + '\n\n' + lang.get('rcscript.delete') + '\n`' + cmd + ' delete`', {}, true );
+					}
 					msg.client.fetchWebhook(...selected_row.webhook.split('/')).then( webhook => {
 						webhook.send( lang.get('rcscript.webhook.disabled_feeds') ).catch(log_error);
 					}, log_error );
@@ -421,6 +457,14 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				text += '\n`' + cmd + ' lang ' + lang.get('rcscript.new_lang') + '`\n';
 				text += '\n' + lang.get('rcscript.display') + ' `' + display_types[selected_row.display] + '`';
 				text += '\n`' + cmd + ' display (' + display.join('|') + ')`\n';
+				if ( selected_row.rcid === -1 ) {
+					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() ) {
+					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';
+				}
 				text += '\n' + lang.get('rcscript.delete') + '\n`' + cmd + ' delete`\n';
 				msg.replyMsg( text, {}, true );
 			}, () => msg.replyMsg( lang.get('rcscript.deleted'), {}, true ) );
@@ -456,6 +500,14 @@ function cmd_rcscript(lang, msg, args, line, wiki) {
 				if ( only ) row_text += '\n`' + cmd + ' lang ' + lang.get('rcscript.new_lang') + '`\n';
 				row_text += '\n' + lang.get('rcscript.display') + ' `' + display_types[row.display] + '`';
 				if ( only ) row_text += '\n`' + cmd + ' display (' + display.join('|') + ')`\n';
+				if ( row.rcid === -1 ) {
+					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() ) {
+					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';
+				}
 				if ( only ) row_text += '\n' + lang.get('rcscript.delete') + '\n`' + cmd + ' delete`\n';
 				return row_text;
 			} ).join('');