2022-08-14 05:51:45 -04:00
/* eslint-disable no-var */
/* eslint-disable max-len */
const config = require ( '../config.json' ) ;
const loadFiles = require ( '../util/load_files' ) ;
const path = require ( 'path' ) ;
const { MessageEmbed } = require ( 'discord.js' ) ;
function inject ( bot , dcclient ) {
bot . command _handler . commands = loadFiles ( path . join ( _ _dirname , '../commands' ) ) ;
bot . command _handler . main = function ( prefix , username , usernameraw , message , sender , channeldc ) {
const raw = message . substr ( prefix . length ) ;
const [ commandName , ... args ] = raw . split ( ' ' ) ;
var command = bot . command _handler . commands . find ( ( command ) => command . name === commandName . toLowerCase ( ) ) ;
try {
var alias = bot . command _handler . commands . find ( ( command ) => command . alias . includes ( commandName . toLowerCase ( ) ) ) ;
if ( alias !== undefined ) {
var command = bot . command _handler . commands . find ( ( command ) => command . alias . includes ( commandName . toLowerCase ( ) ) ) ;
}
if ( command === undefined ) {
throw new Error ( ` Unknown command: " ${ commandName } " ` ) ;
}
if ( prefix === '!' ) {
if ( typeof command . discordExecute === 'undefined' ) throw new Error ( 'This command is not yet supported on discord!' ) ;
command . discordExecute ( bot , username , usernameraw , sender , prefix , args , channeldc ) ;
} else {
command . execute ( bot , username , usernameraw , sender , prefix , args ) ;
}
} catch ( e ) {
if ( prefix === '!' ) {
const Embed = new MessageEmbed ( )
. setColor ( '#FF0000' )
. setTitle ( 'Error' )
. setDescription ( ` \` \` \` ${ e } \` \` \` ` ) ;
channeldc . send ( { embeds : [ Embed ] } ) ;
} else {
bot . core . run ( 'minecraft:tellraw chayapak ' + JSON . stringify ( { text : String ( e ) , color : 'red' } ) ) ;
}
}
} ;
bot . command _handler . run = function ( username , usernameraw , message , sender , channeldc ) {
for ( const prefix of config . prefixes ) {
if ( ! message . startsWith ( prefix ) ) continue ;
bot . command _handler . main ( prefix , username , usernameraw , message , sender , channeldc ) ;
}
} ;
bot . on ( 'message' , async ( username , message , sender ) => {
// try catch cuz TypeError: Cannot read properties of undefined (reading 'replace')
try {
const usernameraw = username . replace ( /§[a-f0-9rlonmk]/g , '' ) . replace ( /§/g , '' ) ;
2022-08-14 06:19:41 -04:00
var sender = bot . playersAddedPlayers [ usernameraw ] ;
var username = bot . getplayerusername [ sender ] ;
2022-08-14 05:51:45 -04:00
var message = message . replace ( /§[a-f0-9rlonmk]/g , '' ) . replace ( /§/g , '' ) ;
bot . command _handler . run ( username , usernameraw , message , sender ) ;
} catch ( e ) {
return ;
}
} ) ;
bot . on ( 'cspy' , async function ( username , message ) {
var username = username . replace ( /§[a-f0-9rlonmk]/g , '' ) . replace ( /§/g , '' ) ;
var message = message . replace ( /§[a-f0-9rlonmk]/g , '' ) . replace ( /§/g , '' ) ;
bot . command _handler . run ( username , username , message , 'no uuid1!1!1!' ) ;
} ) ;
dcclient . on ( 'messageCreate' , async ( message ) => {
try {
// ignores the message that comes from the bot itself
if ( message . author . id === dcclient . user . id ) return ;
const channelid = message . channel . id ;
const channeldc = dcclient . channels . cache . get ( channelid ) ;
// only receive messages in SPECIFIC channel
if ( message . channel . id != bot . channelId ) return ;
if ( ! message . content . startsWith ( config . discord . prefix ) ) return ;
bot . command _handler . main ( config . discord . prefix , message . member . displayName , message . member . displayName , message . content , 'no sender for discord' , channeldc ) ;
} catch ( e ) {
return ;
} ;
} ) ;
} ;
module . exports = { inject } ;