2017-04-23 00:41:44 +03:00
//node imports
const Console = require ( "console" ) ;
//external module imports
var Discord = require ( "discord.io" ) ;
2017-04-23 00:46:03 +03:00
var BotModules = [ require ( "../index.js" ) ] ;
2017-04-23 00:41:44 +03:00
var bot ;
var EventHandlers = {
onReady : ( ) => {
Console . info ( "Registered bot " + bot . username + " with id " + bot . id ) ;
for ( let i = 0 , len = BotModules . length ; i < len ; i ++ ) {
let botModule = BotModules [ i ] ;
2017-04-23 00:46:23 +03:00
if ( botModule . onReady ) botModule . onReady ( bot ) ;
2017-04-23 00:41:44 +03:00
}
} ,
onDisconnect : ( err , code ) => {
Console . error ( "Bot was disconnected!" , err , code ) ;
for ( let i = 0 , len = BotModules . length ; i < len ; i ++ ) {
let botModule = BotModules [ i ] ;
if ( botModule . onReady ) botModule . onDisconnect ( ) ;
}
bot . connect ( ) ;
} ,
onMessage : ( user , userID , channelID , message ) => {
for ( let i = 0 , iLen = BotModules . length ; i < iLen ; i ++ ) {
let botModule = BotModules [ i ] ;
if ( botModule . commands ) {
for ( let j = 0 , jLen = botModule . commands . length ; j < jLen ; j ++ ) {
let messageTrigger = botModule . commands [ j ] ;
if ( ( ! messageTrigger . channelIDs && ! messageTrigger . userIDs ) //if we have neither channel nor user restraint, pass
|| ( messageTrigger . channelIDs && messageTrigger . channelIDs . includes ( channelID ) ) //otherwise, if we have a channel constraint, pass if we're allowed to respond in this channel
|| ( messageTrigger . userIDs && messageTrigger . userIDs . includes ( userID ) ) ) //otherwise, if we have a user constraint, pass if we're allowed to respond to this user
switch ( messageTrigger . type ) {
case "startsWith" :
if ( message . startsWith ( messageTrigger . command ) )
messageTrigger . action ( bot , user , userID , channelID , message ) ;
break ;
default :
if ( message === messageTrigger . command )
messageTrigger . action ( bot , user , userID , channelID , message ) ;
}
}
}
if ( botModule . onMessage ) botModule . onMessage ( bot , user , userID , channelID , message ) ;
}
}
} ;
( ( ) => {
bot = new Discord . Client ( {
token : require ( "./token.json" ) . token ,
autorun : true
} ) ;
bot . on ( "ready" , EventHandlers . onReady ) ;
bot . on ( "disconnect" , EventHandlers . onDisconnect ) ;
bot . on ( "message" , EventHandlers . onMessage ) ;
} ) ( ) ;