2022-06-10 16:19:47 +03:00
//@ts-check
const { MongoClient , ServerApiVersion } = require ( 'mongodb' );
const { CreateNewCollection } = require ( "../db/econ" );
async function setWelcomeChannel ( dbo , message , channelname ) {
const channel = message . guild . channels . cache . find ( ch => ch . name === channelname );
dbo . insertOne ({ welcomechannel : channel });
}
async function execute ( bot , message , args , command , Discord , mongouri , items , xp_collection ) {
const server = message . guild . id ;
const owner = message . guild . members . cache . get ( message . guild . ownerId );
if ( message . author . id != message . guild . ownerId ) {
2022-07-09 20:30:31 +03:00
return message . reply ( 'Only the server owner can do this!' );
2022-06-10 16:19:47 +03:00
}
// @ts-ignore
const client = new MongoClient ( mongouri , { useNewUrlParser : true , useUnifiedTopology : true , serverApi : ServerApiVersion . v1 });
if ( client . writeConcern || client . writeConcern ) {
client . close ();
return message . reply ( "Something went wrong with the database, please try again later and contact support if this problem persists!" );
}
//Initialize
CreateNewCollection ( message , client , server , owner . user . id );
client . connect ( err => {
if ( err ) { return console . log ( err ); }
const db = client . db ( server );
const dbo = db . collection ( 'SETUP' );
//Chose the appropriate command
command = args [ 0 ];
2022-06-10 20:48:43 +03:00
2022-07-09 20:30:31 +03:00
if ( ! command ) {
message . channel . send ( 'Please use the following format _!setup help <welcome, logs>_' );
} else if ( command == 'welcome_channel' ) {
2022-06-10 21:19:14 +03:00
if ( args . length != 2 ) { return message . reply ( 'The command format is _!setup welcome_channel <channel name>_' ); }
2022-06-10 16:19:47 +03:00
// setWelcomeChannel(dbo, message, args[1]);
const channel = message . guild . channels . cache . find ( ch => ch . name === args [ 1 ]);
2022-07-09 20:30:31 +03:00
if ( ! channel ) { return message . reply ( 'The specified channel does not exist!' ); }
2022-06-10 16:19:47 +03:00
dbo . updateOne ({ welcomechannel : { $exists : true }}, { $set : { welcomechannel : ` ${ channel . id } ` }});
2022-07-09 20:30:31 +03:00
message . reply ( `Set ${ channel } as the new welcome channel` )
2022-06-10 20:48:43 +03:00
} else if ( command == 'welcome_message' ) {
2022-06-10 21:19:14 +03:00
if ( args . length < 2 ) { return message . reply ( 'The command format is _!setup welcome\\_message_\nUse _{sn}_ to insert the server name, _{un}_ to insert the user name, and _{ut}_ to insert the user tag\nExample: _!setup welcome\\_message Welcome to {sn} Sir {un}#{ut}_' ); }
let msg = "" ;
for ( let i = 1 ; i < args . length ; i ++ ) {
msg += args [ i ] + ' ' ;
}
if ( msg . length > 30 ) { return message . reply ( 'Please specify a welcome message under 30 characters!' ); }
dbo . updateOne ({ welcomemessage : { $exists : true }}, { $set : { welcomemessage : msg }})
2022-07-09 20:30:31 +03:00
} else if ( command == 'keep_logs' ) {
if ( args . length != 2 ) { return message . reply ( 'Please specify a parameter\nExample: _!setup keep\\_logs true' ); }
let keeplogs = false ;
if ( args [ 1 ] == 'true' ) { keeplogs = true ; }
dbo . updateOne ({ _id : 'LOG' }, { $set : { keepLogs : keeplogs }});
message . reply ( `Toggled log keeping to ${ keeplogs } . Please use _!setup log_channel_ to choose the log channel` );
} else if ( command == 'log_channel' ) {
if ( args . length != 2 ) { return message . reply ( 'Please specify a parameter\nExample: _!setup log\\_channel true_' ); }
const channel = message . guild . channels . cache . find ( ch => ch . name === args [ 1 ]);
if ( ! channel ) { return message . reply ( 'The specified channel does not exist!' ); }
dbo . updateOne ({ _id : 'LOG' }, { $set : { logchannel : ` ${ channel . id } ` }});
message . reply ( `Made ${ channel } the new Selmer Bot Logs channel!` );
} else if ( command == 'log_severity' ) {
const tier = args [ 1 ];
const l = [ 'none' , 'low' , 'medium' , 'high' ];
if ( ! l . includes ( tier )) { return message . reply ( "Please select an existing tier ('none', 'low', 'medium', 'high')" ); }
dbo . updateOne ({ _id : 'LOG' }, { $set : { severity : tier }})
}
else if ( command == 'help' ) {
let temp ;
if ( args [ 1 ] == 'welcome' ) {
temp = 'Use _!setup welcome\\_channel [channel name]_ to set the welcome channel and _!setup welcome\\_message [message]_ to set a welcome message!\n' ;
} else if ( args [ 1 ] == 'logs' ) {
2022-07-10 21:22:07 +03:00
temp = 'To enable logging, use the command _!setup keep\\_logs true_ and _!setup log\\_channel_ [channel name] to set the logging channel!\n' ;
2022-07-09 20:30:31 +03:00
temp += 'Use _!setup keep\\_logs false_ to disable logging and _!setup log\\_severity [none, low, medium, high]_ to set the threshold\n' ;
temp += '__Severities:__\n*none* - unmute, unban\n*low* - mute\n*medium* - kick\n*high* - ban\nEvery tier also includes all notifs for ***higher*** tiers (AKA _!setup log\\_severity none_ will log everything from every severity)\n' ;
} else { temp = 'Please use the following format: _!setup help [welcome, logs]_\nExample: _!setup help welcome_' ; }
message . reply ( temp );
2022-06-10 16:19:47 +03:00
}
});
client . close ();
}
module . exports = {
name : 'setup' ,
2022-07-12 20:10:35 +03:00
description : 'Set up server features' ,
2022-06-10 16:19:47 +03:00
execute
}