/* eslint-disable no-var */ /* eslint-disable max-len */ const config = require('../config'); 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) { let raw; if (typeof message.content!=='undefined') raw = message.content.substr(prefix.length); if (typeof message.content==='undefined') 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, message); } 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 @a ' + 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, ''); var sender = bot.playersAddedPlayers[usernameraw]; var username = bot.getplayerusername[sender]; 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, 'no sender for discord', channeldc); } catch (e) { return; }; }); }; module.exports = {inject};