|
@@ -1922,9 +1922,9 @@ function fandom_search(lang, msg, searchterm, wiki, query, reaction, spoiler) {
|
|
|
}
|
|
|
|
|
|
function cmd_verification(lang, msg, args, line, wiki) {
|
|
|
- if ( msg.channel.type !== 'text' ) return cmd_link(lang, msg, line.split(' ').slice(1).join(' '), wiki);
|
|
|
if ( !msg.isAdmin() ) {
|
|
|
- if ( !pause[msg.guild.id] ) cmd_verify(lang, msg, args, line, wiki);
|
|
|
+ if ( msg.channel.type === 'text' && !pause[msg.guild.id] ) cmd_verify(lang, msg, args, line, wiki);
|
|
|
+ else msg.reactEmoji('❌');
|
|
|
return;
|
|
|
}
|
|
|
if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
|
|
@@ -1942,17 +1942,18 @@ function cmd_verification(lang, msg, args, line, wiki) {
|
|
|
var prefix = ( patreons[msg.guild.id] || process.env.prefix );
|
|
|
if ( args[0] === 'add' ) {
|
|
|
var limit = ( msg.guild.id in patreons ? 15 : 10 );
|
|
|
- if ( rows.length >= limit ) return msg.replyMsg( 'you already reached the maximal amount of verifications.', {}, true );
|
|
|
+ if ( rows.length >= limit ) return msg.replyMsg( lang.verification.max_entries, {}, true );
|
|
|
var roles = args.slice(1).join(' ').split('|').map( role => role.replace( /^\s*<?\s*(.*?)\s*>?\s*$/, '$1' ) ).filter( role => role.length );
|
|
|
- if ( !roles.length ) return msg.replyMsg( 'please provide a role for the new verification.\n`' + prefix + ' verification add <new role>`', {}, true );
|
|
|
- if ( roles.length > 10 ) return msg.replyMsg( 'too many roles provided.', {}, true );
|
|
|
+ if ( !roles.length ) return msg.replyMsg( lang.verification.no_role + '\n`' + prefix + ' verification add' + lang.verification.new_role + '`', {}, true );
|
|
|
+ if ( roles.length > 10 ) return msg.replyMsg( lang.verification.role_max, {}, true );
|
|
|
roles = roles.map( role => {
|
|
|
var new_role = '';
|
|
|
if ( /^\d+$/.test(role) ) new_role = msg.guild.roles.cache.get(role);
|
|
|
if ( !new_role ) new_role = msg.guild.roles.cache.find( gc => gc.name === role.replace( /^@/, '' ) );
|
|
|
return new_role;
|
|
|
} );
|
|
|
- if ( roles.some( role => !role ) ) return msg.replyMsg( 'the provided role does not exist.', {}, true );
|
|
|
+ if ( roles.some( role => !role ) ) return msg.replyMsg( lang.verification.role_missing, {}, true );
|
|
|
+ if ( roles.some( role => role.managed ) ) return msg.replyMsg( lang.verification.role_managed, {}, true );
|
|
|
roles = roles.map( role => role.id ).join('|');
|
|
|
var new_configid = 1;
|
|
|
for ( let i of rows.map( row => row.configid ) ) {
|
|
@@ -1961,19 +1962,12 @@ function cmd_verification(lang, msg, args, line, wiki) {
|
|
|
}
|
|
|
return db.run( 'INSERT INTO verification(guild, configid, channel, role) VALUES(?, ?, ?, ?)', [msg.guild.id, new_configid, '|' + msg.channel.id + '|', roles], function (dberror) {
|
|
|
if ( dberror ) {
|
|
|
- console.log( '- Error while updating the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be updated, please try again later.', {}, true );
|
|
|
+ console.log( '- Error while adding the verification: ' + dberror );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
return dberror;
|
|
|
}
|
|
|
- console.log( '- Verification successfully updated.' );
|
|
|
- var text = 'the verification has been updated:\n\n`' + prefix + ' verification ' + new_configid + '`\nChannel: <#' + msg.channel.id + '>\nRole: <@&' + roles.split('|').join('>, <@&') + '>\nEdit count: `0`\nUser group: `user`\nAccount age: `0` (in days)';
|
|
|
- if ( roles.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- roles.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
- }
|
|
|
- msg.replyMsg( text, {}, true );
|
|
|
+ console.log( '- Verification successfully added.' );
|
|
|
+ msg.replyMsg( lang.verification.added + formatVerification(false, false, {configid: new_configid, role: roles}), {}, true );
|
|
|
} );
|
|
|
}
|
|
|
if ( !rows.some( row => row.configid.toString() === args[0] ) ) {
|
|
@@ -1982,9 +1976,9 @@ function cmd_verification(lang, msg, args, line, wiki) {
|
|
|
return;
|
|
|
}
|
|
|
var text = '';
|
|
|
- if ( rows.length ) text += 'these are the current verifications for this server:\n\n' + rows.map( row => '`' + prefix + ' verification ' + row.configid + '`\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\nEdit count: `' + row.editcount + '`\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\nAccount age: `' + row.accountage + '` (in days)' ).join('\n\n');
|
|
|
- else text += 'there are no verifications for this server yet.';
|
|
|
- text += '\n\nAdd more verifications:\n`' + prefix + ' verification add <new role>`';
|
|
|
+ if ( rows.length ) text += lang.verification.current + rows.map( row => formatVerification(false, true, row) ).join('');
|
|
|
+ else text += lang.verification.missing;
|
|
|
+ text += '\n\n' + lang.verification.add_more + '\n`' + prefix + ' verification add' + lang.verification.new_role + '`';
|
|
|
return msg.replyMsg( text, {split:true}, true );
|
|
|
}
|
|
|
var row = rows.find( row => row.configid.toString() === args[0] );
|
|
@@ -1992,139 +1986,127 @@ function cmd_verification(lang, msg, args, line, wiki) {
|
|
|
return db.run( 'DELETE FROM verification WHERE guild = ? AND configid = ?', [msg.guild.id, row.configid], function (dberror) {
|
|
|
if ( dberror ) {
|
|
|
console.log( '- Error while removing the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be deleted, please try again later.', {}, true );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
return dberror;
|
|
|
}
|
|
|
console.log( '- Verification successfully removed.' );
|
|
|
- msg.replyMsg( 'the verification has been deleted.', {}, true );
|
|
|
+ msg.replyMsg( lang.verification.deleted, {}, true );
|
|
|
} );
|
|
|
}
|
|
|
if ( args[2] ) {
|
|
|
args[2] = args.slice(2).join(' ').replace( /^\s*<?\s*(.*?)\s*>?\s*$/, '$1' );
|
|
|
+ if ( args[1] === 'channel' ) {
|
|
|
+ var channels = args[2].replace( /\s*>?\s*\|\s*<?\s*/g, '|' ).split('|').filter( channel => channel.length );
|
|
|
+ if ( channels.length > 10 ) return msg.replyMsg( lang.verification.channel_max, {}, true );
|
|
|
+ channels = channels.map( channel => {
|
|
|
+ var new_channel = '';
|
|
|
+ if ( /^\d+$/.test(channel) ) new_channel = msg.guild.channels.cache.filter( tc => tc.type === 'text' ).get(channel);
|
|
|
+ if ( !new_channel ) new_channel = msg.guild.channels.cache.filter( gc => gc.type === 'text' ).find( gc => gc.name === channel.replace( /^#/, '' ) );
|
|
|
+ return new_channel;
|
|
|
+ } );
|
|
|
+ if ( channels.some( channel => !channel ) ) return msg.replyMsg( lang.verification.channel_missing, {}, true );
|
|
|
+ channels = channels.map( channel => channel.id ).join('|');
|
|
|
+ if ( channels.length ) return db.run( 'UPDATE verification SET channel = ? WHERE guild = ? AND configid = ?', ['|' + channels + '|', msg.guild.id, row.configid], function (dberror) {
|
|
|
+ if ( dberror ) {
|
|
|
+ console.log( '- Error while updating the verification: ' + dberror );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
+ return dberror;
|
|
|
+ }
|
|
|
+ console.log( '- Verification successfully updated.' );
|
|
|
+ row.channel = '|' + channels + '|';
|
|
|
+ msg.replyMsg( lang.verification.updated + formatVerification(), {split:true}, true );
|
|
|
+ } );
|
|
|
+ }
|
|
|
if ( args[1] === 'role' ) {
|
|
|
var roles = args[2].replace( /\s*>?\s*\|\s*<?\s*/g, '|' ).split('|').filter( role => role.length );
|
|
|
- if ( roles.length > 10 ) return msg.replyMsg( 'too many roles provided.', {}, true );
|
|
|
+ if ( roles.length > 10 ) return msg.replyMsg( lang.verification.role_max, {}, true );
|
|
|
roles = roles.map( role => {
|
|
|
var new_role = '';
|
|
|
if ( /^\d+$/.test(role) ) new_role = msg.guild.roles.cache.get(role);
|
|
|
if ( !new_role ) new_role = msg.guild.roles.cache.find( gc => gc.name === role.replace( /^@/, '' ) );
|
|
|
return new_role;
|
|
|
} );
|
|
|
- if ( roles.some( role => !role ) ) return msg.replyMsg( 'the provided role does not exist.', {}, true );
|
|
|
+ if ( roles.some( role => !role ) ) return msg.replyMsg( lang.verification.role_missing, {}, true );
|
|
|
+ if ( roles.some( role => role.managed ) ) return msg.replyMsg( lang.verification.role_managed, {}, true );
|
|
|
roles = roles.map( role => role.id ).join('|');
|
|
|
if ( roles.length ) return db.run( 'UPDATE verification SET role = ? WHERE guild = ? AND configid = ?', [roles, msg.guild.id, row.configid], function (dberror) {
|
|
|
if ( dberror ) {
|
|
|
console.log( '- Error while updating the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be updated, please try again later.', {}, true );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
return dberror;
|
|
|
}
|
|
|
console.log( '- Verification successfully updated.' );
|
|
|
row.role = roles;
|
|
|
- var text = 'the verification has been updated:\n\n`' + prefix + ' verification ' + row.configid + '`\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\nEdit count: `' + row.editcount + '`\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\nAccount age: `' + row.accountage + '` (in days)';
|
|
|
- if ( row.role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- row.role.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
- }
|
|
|
- msg.replyMsg( text, {split:true}, true );
|
|
|
+ msg.replyMsg( lang.verification.updated + formatVerification(), {split:true}, true );
|
|
|
} );
|
|
|
}
|
|
|
if ( ( args[1] === 'editcount' || args[1] === 'accountage' ) && /^\d+$/.test(args[2]) ) {
|
|
|
args[2] = parseInt(args[2], 10);
|
|
|
- if ( args[2] > 1000000 ) return msg.replyMsg( 'the provided value is too high.', {}, true );
|
|
|
+ if ( args[2] > 1000000 ) return msg.replyMsg( lang.verification.value_too_high, {}, true );
|
|
|
return db.run( 'UPDATE verification SET ' + args[1] + ' = ? WHERE guild = ? AND configid = ?', [args[2], msg.guild.id, row.configid], function (dberror) {
|
|
|
if ( dberror ) {
|
|
|
console.log( '- Error while updating the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be updated, please try again later.', {}, true );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
return dberror;
|
|
|
}
|
|
|
console.log( '- Verification successfully updated.' );
|
|
|
row[args[1]] = args[2];
|
|
|
- var text = 'the verification has been updated:\n\n`' + prefix + ' verification ' + row.configid + '`\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\nEdit count: `' + row.editcount + '`\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\nAccount age: `' + row.accountage + '` (in days)';
|
|
|
- if ( row.role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- row.role.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
- }
|
|
|
- msg.replyMsg( text, {split:true}, true );
|
|
|
+ msg.replyMsg( lang.verification.updated + formatVerification(), {split:true}, true );
|
|
|
} );
|
|
|
}
|
|
|
if ( args[1] === 'usergroup' ) {
|
|
|
var usergroups = args[2].replace( /\s*>?\s*\|\s*<?\s*/g, '|' ).replace( / /g, '_' ).toLowerCase().split('|').filter( usergroup => usergroup.length );
|
|
|
var and_or = '';
|
|
|
- if ( usergroups[0] === 'and' ) {
|
|
|
+ if ( /^\s*AND\s*\|/.test(args[2]) ) {
|
|
|
usergroups = usergroups.slice(1);
|
|
|
and_or = 'AND|';
|
|
|
}
|
|
|
- if ( usergroups.length > 10 ) return msg.replyMsg( 'too many usergroups provided.', {}, true );
|
|
|
- if ( usergroups.some( usergroup => usergroup.length > 100 ) ) return msg.replyMsg( 'the provided usergroup is too long.', {}, true );
|
|
|
+ if ( usergroups.length > 10 ) return msg.replyMsg( lang.verification.usergroup_max, {}, true );
|
|
|
+ if ( usergroups.some( usergroup => usergroup.length > 100 ) ) return msg.replyMsg( lang.verification.usergroup_too_long, {}, true );
|
|
|
usergroups = usergroups.join('|');
|
|
|
if ( usergroups.length ) return db.run( 'UPDATE verification SET usergroup = ? WHERE guild = ? AND configid = ?', [and_or + usergroups, msg.guild.id, row.configid], function (dberror) {
|
|
|
if ( dberror ) {
|
|
|
console.log( '- Error while updating the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be updated, please try again later.', {}, true );
|
|
|
+ msg.replyMsg( lang.verification.save_failed, {}, true );
|
|
|
return dberror;
|
|
|
}
|
|
|
console.log( '- Verification successfully updated.' );
|
|
|
row.usergroup = and_or + usergroups;
|
|
|
- var text = 'the verification has been updated:\n\n`' + prefix + ' verification ' + row.configid + '`\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\nEdit count: `' + row.editcount + '`\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\nAccount age: `' + row.accountage + '` (in days)';
|
|
|
- if ( row.role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- row.role.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
- }
|
|
|
- msg.replyMsg( text, {split:true}, true );
|
|
|
+ msg.replyMsg( lang.verification.updated + formatVerification(), {split:true}, true );
|
|
|
} );
|
|
|
}
|
|
|
- if ( args[1] === 'channel' ) {
|
|
|
- var channels = args[2].replace( /\s*>?\s*\|\s*<?\s*/g, '|' ).split('|').filter( channel => channel.length );
|
|
|
- if ( channels.length > 10 ) return msg.replyMsg( 'too many channels provided.', {}, true );
|
|
|
- channels = channels.map( channel => {
|
|
|
- var new_channel = '';
|
|
|
- if ( /^\d+$/.test(channel) ) new_channel = msg.guild.channels.cache.filter( tc => tc.type === 'text' ).get(channel);
|
|
|
- if ( !new_channel ) new_channel = msg.guild.channels.cache.filter( gc => gc.type === 'text' ).find( gc => gc.name === channel.replace( /^#/, '' ) );
|
|
|
- return new_channel;
|
|
|
- } );
|
|
|
- if ( channels.some( channel => !channel ) ) return msg.replyMsg( 'the provided channel does not exist.', {}, true );
|
|
|
- channels = channels.map( channel => channel.id ).join('|');
|
|
|
- if ( channels.length ) return db.run( 'UPDATE verification SET channel = ? WHERE guild = ? AND configid = ?', ['|' + channels + '|', msg.guild.id, row.configid], function (dberror) {
|
|
|
- if ( dberror ) {
|
|
|
- console.log( '- Error while updating the verification: ' + dberror );
|
|
|
- msg.replyMsg( 'sadly the verification couldn\'t be updated, please try again later.', {}, true );
|
|
|
- return dberror;
|
|
|
- }
|
|
|
- console.log( '- Verification successfully updated.' );
|
|
|
- row.channel = '|' + channels + '|';
|
|
|
- var text = 'the verification has been updated:\n\n`' + prefix + ' verification ' + row.configid + '`\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\nEdit count: `' + row.editcount + '`\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\nAccount age: `' + row.accountage + '` (in days)';
|
|
|
- if ( row.role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- row.role.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
+ }
|
|
|
+ return msg.replyMsg( lang.verification.current_selected.replace( '%1', row.configid ) + formatVerification(true) +'\n\n' + lang.verification.delete_current + '\n`' + prefix + ' verification ' + row.configid + ' delete`', {split:true}, true );
|
|
|
+
|
|
|
+ function formatVerification(showCommands, hideRoles, {configid, channel = '|' + msg.channel.id + '|', role, editcount = 0, usergroup = 'user', accountage = 0} = row) {
|
|
|
+ var verification_text = '\n\n`' + prefix + ' verification ' + configid + '`';
|
|
|
+ verification_text += '\n' + lang.verification.channel + ' <#' + channel.split('|').filter( channel => channel.length ).join('>, <#') + '>';
|
|
|
+ if ( showCommands ) verification_text += '\n`' + prefix + ' verification ' + row.configid + ' channel ' + lang.verification.new_channel + '`\n';
|
|
|
+ verification_text += '\n' + lang.verification.role + ' <@&' + role.split('|').join('>, <@&') + '>';
|
|
|
+ if ( showCommands ) verification_text += '\n`' + prefix + ' verification ' + row.configid + ' role ' + lang.verification.new_role + '`\n';
|
|
|
+ verification_text += '\n' + lang.verification.editcount + ' `' + editcount + '`';
|
|
|
+ if ( showCommands ) verification_text += '\n`' + prefix + ' verification ' + row.configid + ' editcount ' + lang.verification.new_editcount + '`\n';
|
|
|
+ verification_text += '\n' + lang.verification.usergroup + ' `' + ( usergroup.startsWith( 'AND|' ) ? usergroup.split('|').slice(1).join('` ' + lang.verification.and + ' `') : usergroup.split('|').join('` ' + lang.verification.or + ' `') ) + '`';
|
|
|
+ if ( showCommands ) verification_text += '\n`' + prefix + ' verification ' + row.configid + ' usergroup ' + lang.verification.new_usergroup + '`\n';
|
|
|
+ verification_text += '\n' + lang.verification.accountage + ' `' + accountage + '` ' + lang.verification.indays;
|
|
|
+ if ( showCommands ) verification_text += '\n`' + prefix + ' verification ' + row.configid + ' accountage ' + lang.verification.new_accountage + '`\n';
|
|
|
+ if ( !hideRoles && role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
+ verification_text += '\n';
|
|
|
+ role.split('|').forEach( role => {
|
|
|
+ if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) {
|
|
|
+ verification_text += '\n' + lang.verification.role_too_high.replaceSave( '%1$s', '<@&' + role + '>' ).replaceSave( '%2$s', msg.guild.me.toString() );
|
|
|
}
|
|
|
- msg.replyMsg( text, {split:true}, true );
|
|
|
} );
|
|
|
}
|
|
|
+ return verification_text;
|
|
|
}
|
|
|
- var text = 'this is the verification `' + row.configid + '` for this server:\n\nChannel: <#' + row.channel.split('|').filter( channel => channel.length ).join('>, <#') + '>\n`' + prefix + ' verification ' + row.configid + ' channel <new channel>`\n\nRole: <@&' + row.role.split('|').join('>, <@&') + '>\n`' + prefix + ' verification ' + row.configid + ' role <new role>`\n\nEdit count: `' + row.editcount + '`\n`' + prefix + ' verification ' + row.configid + ' editcount <new edit count>`\n\nUser group: `' + ( row.usergroup.startsWith( 'AND|' ) ? row.usergroup.split('|').slice(1).join('` and `') : row.usergroup.split('|').join('` or `') ) + '`\n`' + prefix + ' verification ' + row.configid + ' usergroup <new user group>`\n\nAccount age: `' + row.accountage + '` (in days)\n`' + prefix + ' verification ' + row.configid + ' accountage <new account age>`';
|
|
|
- if ( row.role.split('|').some( role => msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) ) {
|
|
|
- text += '\n';
|
|
|
- row.role.split('|').forEach( role => {
|
|
|
- if ( msg.guild.me.roles.highest.comparePositionTo(role) <= 0 ) text += '\n**The role <@&' + role + '> is too high for ' + msg.guild.me.toString() + ' to assign!**';
|
|
|
- } );
|
|
|
- }
|
|
|
- text += '\n\nDelete this verification:\n`' + prefix + ' verification ' + row.configid + ' delete`';
|
|
|
- return msg.replyMsg( text, {split:true}, true );
|
|
|
} );
|
|
|
}
|
|
|
|
|
|
function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
if ( !( wiki.endsWith( '.gamepedia.com/' ) || wiki.isFandom() ) || msg.channel.type !== 'text' ) return cmd_link(lang, msg, line.split(' ').slice(1).join(' '), wiki);
|
|
|
if ( !msg.guild.me.permissions.has('MANAGE_ROLES') ) {
|
|
|
- if ( msg.isAdmin() ) {
|
|
|
+ if ( msg.isAdmin() || msg.isOwner() ) {
|
|
|
console.log( msg.guild.id + ': Missing permissions - MANAGE_ROLES' );
|
|
|
msg.replyMsg( lang.missingperm + ' `MANAGE_ROLES`' );
|
|
|
} else cmd_link(lang, msg, line.split(' ').slice(1).join(' '), wiki);
|
|
@@ -2141,11 +2123,11 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
db.all( 'SELECT role, editcount, usergroup, accountage FROM verification WHERE guild = ? AND channel LIKE ? ORDER BY configid ASC', [msg.guild.id, '%|' + msg.channel.id + '|%'], (dberror, rows) => {
|
|
|
if ( dberror || !rows ) {
|
|
|
console.log( '- Error while getting the verifications: ' + dberror );
|
|
|
- embed.setTitle( username.escapeFormatting() ).setColor('#000000').setDescription( 'The verification failed due to an error, please try again.' );
|
|
|
- msg.replyMsg( 'the verification failed due to an error, please try again.', {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
+ embed.setTitle( username.escapeFormatting() ).setColor('#000000').setDescription( lang.verify.error );
|
|
|
+ msg.replyMsg( lang.verify.error_reply, {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
return dberror;
|
|
|
}
|
|
|
- if ( !rows.length ) return cmd_link(lang, msg, line.split(' ').slice(1).join(' '), wiki);
|
|
|
+ if ( !rows.length ) return msg.replyMsg( lang.verify.missing );
|
|
|
|
|
|
if ( !username.trim() ) {
|
|
|
/*
|
|
@@ -2154,7 +2136,7 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
*/
|
|
|
return msg.sendChannel( '🔹 `' + ( patreons[msg.guild.id] || process.env.prefix ) + ' verify <wiki_username>`\n\tUse this command to verify your Discord account with your wiki account and get roles matching your wiki account.' );
|
|
|
}
|
|
|
- var embed = new Discord.MessageEmbed().setFooter( 'Wiki Account Verification' ).setTimestamp();
|
|
|
+ var embed = new Discord.MessageEmbed().setFooter( lang.verify.footer + ' • ' + new Date().toLocaleString(lang.dateformat, timeoptions) ).setTimestamp();
|
|
|
msg.reactEmoji('⏳').then( reaction => got.get( wiki + 'api.php?action=query&meta=siteinfo&siprop=general&list=users&usprop=blockinfo|groups|groupmemberships|editcount|registration&ususers=' + encodeURIComponent( username ) + '&format=json', {
|
|
|
responseType: 'json'
|
|
|
} ).then( response => {
|
|
@@ -2162,8 +2144,8 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
if ( body && body.warnings ) log_warn(body.warnings);
|
|
|
if ( response.statusCode !== 200 || !body || !body.query || !body.query.users ) {
|
|
|
console.log( '- ' + response.statusCode + ': Error while getting the user: ' + ( body && body.error && body.error.info ) );
|
|
|
- embed.setTitle( username.escapeFormatting() ).setColor('#000000').setDescription( 'The verification failed due to an error, please try again.' );
|
|
|
- msg.replyMsg( 'the verification failed due to an error, please try again.', {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
+ embed.setTitle( username.escapeFormatting() ).setColor('#000000').setDescription( lang.verify.error );
|
|
|
+ msg.replyMsg( lang.verify.error_reply, {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
return;
|
|
@@ -2172,8 +2154,8 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
embed.setAuthor( body.query.general.sitename );
|
|
|
if ( body.query.users.length !== 1 || queryuser.missing !== undefined || queryuser.invalid !== undefined ) {
|
|
|
username = ( body.query.users.length === 1 ? queryuser.name : username );
|
|
|
- embed.setTitle( username.escapeFormatting() ).setColor('#0000FF').setDescription( 'The wiki user "' + username.escapeFormatting() + '" doesn\'t exist.' );
|
|
|
- msg.replyMsg( 'your linked wiki user "' + username.escapeFormatting() + '" doesn\'t exist.', {embed}, false, false );
|
|
|
+ embed.setTitle( username.escapeFormatting() ).setColor('#0000FF').setDescription( lang.verify.user_missing.replaceSave( '%s', username.escapeFormatting() ) );
|
|
|
+ msg.replyMsg( lang.verify.user_missing_reply.replaceSave( '%s', username.escapeFormatting() ), {embed}, false, false );
|
|
|
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
return;
|
|
@@ -2182,8 +2164,8 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
var pagelink = wiki.toLink('User:' + username, '', '', body.query.general, true);
|
|
|
embed.setTitle( username.escapeFormatting() ).setURL( pagelink );
|
|
|
if ( queryuser.blockexpiry ) {
|
|
|
- embed.setColor('#FF0000').setDescription( '**The wiki user [' + username.escapeFormatting() + '](' + pagelink + ') is blocked!**' );
|
|
|
- msg.replyMsg( 'your linked wiki user **"' + username.escapeFormatting() + '" is blocked!**', {embed}, false, false );
|
|
|
+ embed.setColor('#FF0000').setDescription( lang.verify.user_blocked.replaceSave( '%s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ) );
|
|
|
+ msg.replyMsg( lang.verify.user_blocked_reply.replaceSave( '%s', username.escapeFormatting() ), {embed}, false, false );
|
|
|
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
return;
|
|
@@ -2200,36 +2182,36 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
got.get( url ).then( gbresponse => {
|
|
|
if ( gbresponse.statusCode !== 200 || !gbresponse.body ) {
|
|
|
console.log( '- ' + gbresponse.statusCode + ': Error while getting the global block.' );
|
|
|
- comment.push('**Check for global block failed!**');
|
|
|
+ comment.push(lang.verify.failed_gblock);
|
|
|
}
|
|
|
else {
|
|
|
let $ = cheerio.load(gbresponse.body);
|
|
|
if ( wiki.endsWith( '.gamepedia.com/' ) ) {
|
|
|
if ( $('.mw-blocklist').length ) {
|
|
|
- return Promise.reject([
|
|
|
- 'your linked wiki user **"' + username.escapeFormatting() + '" is globally blocked!**',
|
|
|
- '**The wiki user [' + username.escapeFormatting() + '](' + pagelink + ') is globally blocked!**'
|
|
|
- ]);
|
|
|
+ return Promise.reject({
|
|
|
+ desc: lang.verify.user_gblocked.replaceSave( '%s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ),
|
|
|
+ reply: lang.verify.user_gblocked_reply.replaceSave( '%s', username.escapeFormatting() )
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
else if ( wiki.isFandom() ) {
|
|
|
if ( $('#mw-content-text .errorbox').length ) {
|
|
|
- return Promise.reject([
|
|
|
- 'your linked wiki user **"' + username.escapeFormatting() + '" is disabled!**',
|
|
|
- '**The wiki user [' + username.escapeFormatting() + '](' + pagelink + ') is disabled!**'
|
|
|
- ]);
|
|
|
+ return Promise.reject({
|
|
|
+ desc: lang.verify.user_disabled.replaceSave( '%s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ),
|
|
|
+ reply: lang.verify.user_disabled_reply.replaceSave( '%s', username.escapeFormatting() )
|
|
|
+ });
|
|
|
}
|
|
|
else if ( $('.mw-warning-with-logexcerpt').length && !$(".mw-warning-with-logexcerpt .mw-logline-block").length ) {
|
|
|
- return Promise.reject([
|
|
|
- 'your linked wiki user **"' + username.escapeFormatting() + '" is globally blocked!**',
|
|
|
- '**The wiki user [' + username.escapeFormatting() + '](' + pagelink + ') is globally blocked!**'
|
|
|
- ]);
|
|
|
+ return Promise.reject({
|
|
|
+ desc: lang.verify.user_gblocked.replaceSave( '%s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ),
|
|
|
+ reply: lang.verify.user_gblocked_reply.replaceSave( '%s', username.escapeFormatting() )
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}, error => {
|
|
|
console.log( '- Error while getting the global block: ' + error );
|
|
|
- comment.push('**Check for global block failed!**');
|
|
|
+ comment.push(lang.verify.failed_gblock);
|
|
|
} ).then( () => {
|
|
|
var options = {responseType: 'json'};
|
|
|
if ( wiki.endsWith( '.gamepedia.com/' ) ) {
|
|
@@ -2244,18 +2226,22 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
if ( presponse.statusCode !== 200 || !pbody || pbody.error || pbody.errormsg || pbody.title || !( pbody.profile || pbody.value !== undefined ) ) {
|
|
|
if ( !( pbody && pbody.status === 404 ) ) {
|
|
|
console.log( '- ' + presponse.statusCode + ': Error while getting the Discord tag: ' + ( pbody && ( pbody.error && pbody.error.info || pbody.errormsg || pbody.title ) ) );
|
|
|
- embed.setColor('#000000').setDescription( 'The verification failed due to an error, please try again.' );
|
|
|
- return msg.replyMsg( 'the verification failed due to an error, please try again.', {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
+ embed.setColor('#000000').setDescription( lang.verify.error );
|
|
|
+ return msg.replyMsg( lang.verify.error_reply, {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var discordname = '';
|
|
|
if ( pbody.profile ) discordname = pbody.profile['link-discord'].escapeFormatting().replace( /^\s*([^@#:]{2,32}?)\s*#(\d{4,6})\s*$/, '$1#$2' );
|
|
|
else if ( pbody.value ) discordname = htmlToPlain( pbody.value ).replace( /^\s*([^@#:]{2,32}?)\s*#(\d{4,6})\s*$/, '$1#$2' );
|
|
|
- embed.addField( 'Discord user:', msg.author.tag.escapeFormatting(), true ).addField( 'Wiki user:', ( discordname || '*none*' ), true );
|
|
|
+ embed.addField( lang.verify.discord, msg.author.tag.escapeFormatting(), true ).addField( lang.verify.wiki, ( discordname || lang.verify.empty ), true );
|
|
|
if ( msg.author.tag.escapeFormatting() !== discordname ) {
|
|
|
- embed.setColor('#FFFF00').setDescription( 'Discord user ' + msg.member.toString() + ' doesn\'t match the wiki user [' + username.escapeFormatting() + '](' + pagelink + ').' );
|
|
|
- return msg.replyMsg( 'your Discord tag doesn\'t match the wiki user "' + username.escapeFormatting() + '".', {embed}, false, false );
|
|
|
+ embed.setColor('#FFFF00').setDescription( lang.verify.user_failed.replaceSave( '%1$s', msg.member.toString() ).replaceSave( '%2$s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ) );
|
|
|
+ var help_link = '';
|
|
|
+ if ( wiki.endsWith( '.gamepedia.com/' ) ) help_link = lang.verify.help_gamepedia;
|
|
|
+ else if ( wiki.isFandom() ) help_link = lang.verify.help_fandom + '/' + username.toTitle(true) + '?c=wb&ch=' + encodeURIComponent( msg.channel.name ) + '&user=' + encodeURIComponent( msg.author.username ) + '&tag=' + msg.author.discriminator;
|
|
|
+ if ( help_link.length ) embed.addField( lang.verify.notice, lang.verify.help_guide.replaceSave( '%s', help_link ) );
|
|
|
+ return msg.replyMsg( lang.verify.user_failed_reply.replaceSave( '%s', username.escapeFormatting() ), {embed}, false, false );
|
|
|
}
|
|
|
|
|
|
var roles = [];
|
|
@@ -2285,46 +2271,46 @@ function cmd_verify(lang, msg, args, line, wiki) {
|
|
|
}
|
|
|
} );
|
|
|
if ( verified ) {
|
|
|
- embed.setColor('#00FF00').setDescription( 'Discord user ' + msg.member.toString() + ' has been successfully verified as wiki user [' + username.escapeFormatting() + '](' + pagelink + ').' );
|
|
|
- var text = 'you have been sucessfully verified as wiki user "' + username.escapeFormatting() + '".';
|
|
|
- msg.member.roles.add( roles, 'Verified as "' + username + '"' ).catch( error => {
|
|
|
+ embed.setColor('#00FF00').setDescription( lang.verify.user_verified.replaceSave( '%1$s', msg.member.toString() ).replaceSave( '%2$s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ) );
|
|
|
+ var text = lang.verify.user_verified_reply.replaceSave( '%s', username.escapeFormatting() );
|
|
|
+ msg.member.roles.add( roles, lang.verify.audit_reason.replaceSave( '%s', username ) ).catch( error => {
|
|
|
embed.setColor('#008800');
|
|
|
- comment.push('**Adding roles failed!**');
|
|
|
+ comment.push(lang.verify.failed_roles);
|
|
|
} ).finally( () => {
|
|
|
if ( msg.showEmbed() ) {
|
|
|
- if ( roles.length ) embed.addField( 'Qualified for:', roles.map( role => '<@&' + role + '>' ).join('\n') );
|
|
|
- if ( missing.length ) embed.setColor('#008800').addField( 'Qualified for, but could not add:', missing.map( role => '<@&' + role + '>' ).join('\n') );
|
|
|
- if ( comment.length ) embed.setColor('#008800').addField( 'Notice:', comment.join('\n') );
|
|
|
+ if ( roles.length ) embed.addField( lang.verify.qualified, roles.map( role => '<@&' + role + '>' ).join('\n') );
|
|
|
+ if ( missing.length ) embed.setColor('#008800').addField( lang.verify.qualified_error, missing.map( role => '<@&' + role + '>' ).join('\n') );
|
|
|
+ if ( comment.length ) embed.setColor('#008800').addField( lang.verify.notice, comment.join('\n') );
|
|
|
}
|
|
|
else {
|
|
|
- if ( roles.length ) text += '\n\nQualified for: ' + roles.map( role => '<@&' + role + '>' ).join(', ');
|
|
|
- if ( missing.length ) text += '\n\nQualified for, but could not add: ' + missing.map( role => '<@&' + role + '>' ).join(', ');
|
|
|
+ if ( roles.length ) text += '\n\n' + lang.verify.qualified + ' ' + roles.map( role => '<@&' + role + '>' ).join(', ');
|
|
|
+ if ( missing.length ) text += '\n\n' + lang.verify.qualified_error + ' ' + missing.map( role => '<@&' + role + '>' ).join(', ');
|
|
|
if ( comment.length ) text += '\n\n' + comment.join('\n');
|
|
|
}
|
|
|
msg.replyMsg( text, {embed}, false, false );
|
|
|
} );
|
|
|
}
|
|
|
else {
|
|
|
- embed.setColor('#FFFF00').setDescription( 'Discord user ' + msg.member.toString() + ' matches the wiki user [' + username.escapeFormatting() + '](' + pagelink + '), but doesn\'t meet the requirements for any roles.' );
|
|
|
- msg.replyMsg( 'your Discord tag matches the wiki user "' + username.escapeFormatting() + '", but you don\'t meet the requirements for any roles.', {embed}, false, false );
|
|
|
+ embed.setColor('#FFFF00').setDescription( lang.verify.user_matches.replaceSave( '%1$s', msg.member.toString() ).replaceSave( '%2$s', '[' + username.escapeFormatting() + '](' + pagelink + ')' ) );
|
|
|
+ msg.replyMsg( lang.verify.user_matches_reply.replaceSave( '%s', username.escapeFormatting() ), {embed}, false, false );
|
|
|
}
|
|
|
}, error => {
|
|
|
console.log( '- Error while getting the Discord tag: ' + error );
|
|
|
- embed.setColor('#000000').setDescription( 'The verification failed due to an error, please try again.' );
|
|
|
- msg.replyMsg( 'the verification failed due to an error, please try again.', {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
+ embed.setColor('#000000').setDescription( lang.verify.error );
|
|
|
+ msg.replyMsg( lang.verify.error_reply, {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
} ).finally( () => {
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
} );
|
|
|
}, error => {
|
|
|
- embed.setColor('#FF0000').setDescription( error[1] );
|
|
|
- msg.replyMsg( error[0], {embed}, false, false );
|
|
|
+ embed.setColor('#FF0000').setDescription( error.desc );
|
|
|
+ msg.replyMsg( error.reply, {embed}, false, false );
|
|
|
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
} );
|
|
|
}, error => {
|
|
|
console.log( '- Error while getting the user: ' + error );
|
|
|
- embed.setColor('#000000').setDescription( 'The verification failed due to an error, please try again.' );
|
|
|
- msg.replyMsg( 'the verification failed due to an error, please try again.', {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
+ embed.setColor('#000000').setDescription( lang.verify.error );
|
|
|
+ msg.replyMsg( lang.verify.error_reply, {embed}, false, false ).then( message => message.reactEmoji('error') );
|
|
|
|
|
|
if ( reaction ) reaction.removeEmoji();
|
|
|
} ) );
|