2019-05-09 21:29:24 +02:00
const { Command } = require ( 'discord-akairo' ) ;
2019-11-27 12:16:30 +01:00
const joinChannel = require ( '../../models' ) . joinChannel ;
2019-05-09 21:29:24 +02:00
class welcomeCommand extends Command {
constructor ( ) {
super ( 'welcome' , {
2019-11-09 12:02:55 +01:00
aliases : [ 'welcome' , 'join' ] ,
2019-05-09 21:29:24 +02:00
category : 'admin' ,
2020-03-19 23:24:31 +01:00
channel : 'guild' ,
2019-05-09 21:29:24 +02:00
userPermissions : [ 'MANAGE_CHANNELS' ] ,
args : [
2019-11-09 12:02:55 +01:00
{
id : 'remove' ,
match : 'flag' ,
flag : '--remove'
} ,
2019-05-09 21:29:24 +02:00
{
id : 'message' ,
type : 'string' ,
2019-06-23 03:41:59 +02:00
match : 'rest' ,
2019-11-09 12:02:55 +01:00
default : 'Welcome [member] to [server]!'
2019-05-09 21:29:24 +02:00
}
] ,
description : {
2019-05-11 18:34:19 +02:00
content : 'Send a message to the current channel when a person join, you can use [member] to show the member username and [server] to show the name of the server' ,
2019-05-09 21:29:24 +02:00
usage : '[welcome message]' ,
examples : [ 'everyone welcome [adjectives] [member] and welcome on [server]' ]
}
} ) ;
}
async exec ( message , args ) {
2019-11-27 12:16:30 +01:00
const join = await joinChannel . findOne ( { where : { guildID : message . guild . id } } ) ;
2019-05-09 21:29:24 +02:00
2019-11-09 12:02:55 +01:00
if ( args . remove ) {
2019-11-27 12:16:30 +01:00
if ( join ) {
join . destroy ( { where : { guildID : message . guild . id , channelID : message . channel . id } } ) ;
return message . channel . send ( 'successfully deleted the join message' ) ;
} else {
return message . channel . send ( 'Did not find the a join message, are you sure you have one setup?' ) ;
}
2019-11-09 12:02:55 +01:00
}
2019-11-27 12:16:30 +01:00
if ( ! args . message ) {
return message . channel . send ( 'Please provide a message' ) ;
}
if ( ! join ) {
const body = { guildID : message . guild . id , channelID : message . channel . id , message : args . message } ;
await joinChannel . create ( body ) ;
return message . channel . send ( ` The join message have been set with ${ args . message } ` ) ;
} else {
message . channel . send ( 'The server already have a join message, do you want to replace it? y/n' ) ;
const filter = m => m . content && m . author . id == message . author . id ;
message . channel . awaitMessages ( filter , { time : 5000 , max : 1 , errors : [ 'time' ] } )
. then ( async messages => {
let messageContent = messages . map ( messages => messages . content ) ;
if ( messageContent == 'y' || messageContent == 'yes' ) {
const body = { guildID : message . guild . id , channelID : message . channel . id , message : args . message } ;
2019-11-27 16:03:40 +01:00
await joinChannel . update ( body , { where : { guildID : message . guild . id } } ) ;
2019-11-27 12:16:30 +01:00
return message . channel . send ( ` The join message have been set with ${ args . message } ` ) ;
} else {
return message . channel . send ( 'Not updating.' ) ;
}
} )
. catch ( err => {
console . error ( err ) ;
return message . channel . send ( 'Took too long to answer. didin\'t update anything.' ) ;
} ) ;
}
2019-05-09 21:29:24 +02:00
}
}
module . exports = welcomeCommand ;