Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我突然收到ELIFECYCLE errno 1?_Javascript_Node.js_Babeljs_Yarnpkg_Discord.js - Fatal编程技术网

Javascript 为什么我突然收到ELIFECYCLE errno 1?

Javascript 为什么我突然收到ELIFECYCLE errno 1?,javascript,node.js,babeljs,yarnpkg,discord.js,Javascript,Node.js,Babeljs,Yarnpkg,Discord.js,我刚刚将我的开发环境转移到Fedora。我已经正确安装了Node和NPM,但我的运行脚本不起作用。它立即退出,错误为1,没有额外的输出。它可以在我的Mac和Windows桌面上完美运行 我的npm-error.log: 0 info it worked if it ends with ok 1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'dev' ] 2 info using npm@5.6.0 3 info using node

我刚刚将我的开发环境转移到Fedora。我已经正确安装了Node和NPM,但我的运行脚本不起作用。它立即退出,错误为1,没有额外的输出。它可以在我的Mac和Windows桌面上完美运行

我的npm-error.log:

0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'dev' ]
2 info using npm@5.6.0
3 info using node@v8.9.4
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle biblebot@5.0.0~predev: biblebot@5.0.0
6 info lifecycle biblebot@5.0.0~dev: biblebot@5.0.0
7 verbose lifecycle biblebot@5.0.0~dev: unsafe-perm in lifecycle true
8 verbose lifecycle biblebot@5.0.0~dev: PATH: /usr/lib/node_modules/npm/node_modules.bundled/npm-lifecycle/node-gyp-bin:/home/vypr/Code/BibleBot/node_modules/.bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/vypr/bin:/home/vypr/bin:/home/vypr/bin:/home/vypr/bin
9 verbose lifecycle biblebot@5.0.0~dev: CWD: /home/vypr/Code/BibleBot
10 silly lifecycle biblebot@5.0.0~dev: Args: [ '-c', 'babel src -d build && node build/start.js' ]
11 silly lifecycle biblebot@5.0.0~dev: Returned: code: 1  signal: null
12 info lifecycle biblebot@5.0.0~dev: Failed to exec dev script
13 verbose stack Error: biblebot@5.0.0 dev: `babel src -d build && node build/start.js`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/node_modules.bundled/npm-lifecycle/index.js:285:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules.bundled/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid biblebot@5.0.0
15 verbose cwd /home/vypr/Code/BibleBot
16 verbose Linux 4.13.9-300.fc27.x86_64
17 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
18 verbose node v8.9.4
19 verbose npm  v5.6.0
20 error code ELIFECYCLE
21 error errno 1
22 error biblebot@5.0.0 dev: `babel src -d build && node build/start.js`
22 error Exit status 1
23 error Failed at the biblebot@5.0.0 dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
我的运行脚本(我使用dev):

我还看到其他回答说,这可能与已经使用的端口有关。因此,我研究了discord.js使用的端口(80和443),并尝试查看Python的SimpleHTTPServer是否无法使用这些端口。它运行得非常完美(尽管我必须以sudo的身份运行,但即使是
sudonpm-run-dev
也会给我带来同样的问题)

我在Babel Transfile之前的代码:

import central from "./central";
import * as config from "./data/config";

import * as Discord from "discord.js";
const bot = new Discord.Client();

import CommandHandler from "./handlers/commands";
import VerseHandler from "./handlers/verses";

const commandHandler = new CommandHandler();
const verseHandler = new VerseHandler();

import settings from "./handlers/commands/settings";

bot.on("ready", () => {
    central.logMessage("info", "global", "global", "connected");
    bot.user.setPresence({
        status: "online",
        afk: false,
        game: {
            "name": "BibleBot v" + process.env.npm_package_version,
            "url": "https://biblebot.vypr.space"
        }
    });
});

bot.on("debug", (debug) => {
    if (config.debug) {
        central.logMessage("debug", "global", "global", debug);
    }
});

bot.on("reconnecting", () => {
    central.logMessage("info", "global", "global", "attempting to reconnect");
});

bot.on("disconnect", () => {
    central.logMessage("info", "global", "global", "disconnected");
});

bot.on("warning", (warn) => {
    central.logMessage("warn", "global", "global", warn);
});

bot.on("error", (e) => {
    central.logMessage("err", "global", "global", e);
});

bot.on("message", (raw) => {
    // taking the raw message object and making it more usable
    let rawSender = raw.author;
    let sender = rawSender.username + "#" + rawSender.discriminator;
    let channel = raw.channel;
    let message = raw.content;
    let source;

    if (config.debug) {
        // TODO: Replace this with user IDs.
        switch (sender) {
            case "vipr#4035":
                break;
            default:
                if (config.versionAdders.indexOf(sender) != -1) {
                    break;
                } else {
                    return;
                }
        }
    }

    settings.languages.getLanguage(rawSender, (language) => {
        // channel.guild is used here because
        // of the possibility that DMs are being used
        // otherwise, i'd use guild.name
        if ((typeof channel.guild != "undefined") &&
            (typeof channel.name != "undefined")) {
            source = channel.guild.name + "#" + channel.name;
        } else {
            source = "unknown (direct messages?)";
        }

        if (sender == config.botname) return;
        if (channel.guild.name.includes("Discord Bot")) {
            if (raw.author.id != config.owner) {
                return;
            }
        }

        if (message.charAt(0) == "+") {
            const command = message.substr(1).split(" ")[0];

            let args = message.split(" ");
            const returnValue = args.shift(); // remove the first item

            if (returnValue == undefined) {
                args = null;
            }

            try {
                commandHandler.processCommand(command, args, language, rawSender, (res) => {
                    let originalCommand;

                    if (!res.announcement) {
                        channel.send(res.message);

                        Object.keys(language.commands).forEach((originalCommandName) => {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            } else if (command == "eval") {
                                originalCommand = "eval";
                            }
                        });
                    } else {
                        Object.keys(language.commands).forEach((originalCommandName) => {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            }
                        });

                        bot.guilds.forEach((value) => {
                            if (value.name == "Discord Bots" ||
                                value.name == "Discord Bot List") return;

                            let sent = false;
                            const ch = value.channels.findAll("type", "text");
                            const preferred = ["misc", "bots", "meta", "hangout", "fellowship", "lounge", "congregation", "general",
                                "taffer", "family_text", "staff"
                            ];

                            for (let i = 0; i < preferred.length; i++) {
                                if (!sent) {
                                    let receiver = ch.find(val => val.name === preferred[i]);

                                    if (receiver) {
                                        receiver.send(res.message.replace(
                                            "+" + language.commands.announce + " ", ""
                                        )).catch(() => {
                                            // do nothing
                                        });

                                        sent = true;
                                    }
                                }
                            }
                        });

                        channel.send("Done.");
                    }

                    let cleanArgs = args.toString().replaceAll(",", " ");
                    if (originalCommand == "puppet" || originalCommand == "eval" || originalCommand == "announce") cleanArgs = "";

                    central.logMessage(res.level, sender, source, "+" + originalCommand + " " + cleanArgs);
                });
            } catch (e) {
                central.logMessage("err", sender, source, e.message);

                channel.send(e.message);
                console.error(e.stack);
                return;
            }
        } else {
            try {
                verseHandler.processRawMessage(raw, rawSender, language, (result) => {
                    if (!result.invalid) {
                        if (result.twoMessages) {
                            channel.send(result.firstMessage);
                            channel.send(result.secondMessage);
                        } else {
                            channel.send(result.message);
                        }

                        central.logMessage(result.level, sender, source, result.reference);
                    }
                });
            } catch (e) {
                central.logMessage("err", sender, source, e.message);
                return;
            }
        }
    });
});


central.logMessage(
    "info", "global", "global", "BibleBot v" + process.env.npm_package_version +
    " by Elliott Pardee (vypr)");
bot.login(config.token);
"use strict";

var _central = require("./central");

var _central2 = _interopRequireDefault(_central);

var _config = require("./data/config");

var config = _interopRequireWildcard(_config);

var _discord = require("discord.js");

var Discord = _interopRequireWildcard(_discord);

var _commands = require("./handlers/commands");

var _commands2 = _interopRequireDefault(_commands);

var _verses = require("./handlers/verses");

var _verses2 = _interopRequireDefault(_verses);

var _settings = require("./handlers/commands/settings");

var _settings2 = _interopRequireDefault(_settings);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var bot = new Discord.Client();

var commandHandler = new _commands2.default();
var verseHandler = new _verses2.default();

bot.on("ready", function () {
    _central2.default.logMessage("info", "global", "global", "connected");
    bot.user.setPresence({
        status: "online",
        afk: false,
        game: {
            "name": "BibleBot v" + process.env.npm_package_version,
            "url": "https://biblebot.vypr.space"
        }
    });
});

bot.on("debug", function (debug) {
    if (config.debug) {
        _central2.default.logMessage("debug", "global", "global", debug);
    }
});

bot.on("reconnecting", function () {
    _central2.default.logMessage("info", "global", "global", "attempting to reconnect");
});

bot.on("disconnect", function () {
    _central2.default.logMessage("info", "global", "global", "disconnected");
});

bot.on("warning", function (warn) {
    _central2.default.logMessage("warn", "global", "global", warn);
});

bot.on("error", function (e) {
    _central2.default.logMessage("err", "global", "global", e);
});

bot.on("message", function (raw) {
    // taking the raw message object and making it more usable
    var rawSender = raw.author;
    var sender = rawSender.username + "#" + rawSender.discriminator;
    var channel = raw.channel;
    var message = raw.content;
    var source = void 0;

    if (config.debug) {
        // TODO: Replace this with user IDs.
        switch (sender) {
            case "vipr#4035":
                break;
            default:
                if (config.versionAdders.indexOf(sender) != -1) {
                    break;
                } else {
                    return;
                }
        }
    }

    _settings2.default.languages.getLanguage(rawSender, function (language) {
        // channel.guild is used here because
        // of the possibility that DMs are being used
        // otherwise, i'd use guild.name
        if (typeof channel.guild != "undefined" && typeof channel.name != "undefined") {
            source = channel.guild.name + "#" + channel.name;
        } else {
            source = "unknown (direct messages?)";
        }

        if (sender == config.botname) return;
        if (channel.guild.name.includes("Discord Bot")) {
            if (raw.author.id != config.owner) {
                return;
            }
        }

        if (message.charAt(0) == "+") {
            var command = message.substr(1).split(" ")[0];

            var args = message.split(" ");
            var returnValue = args.shift(); // remove the first item

            if (returnValue == undefined) {
                args = null;
            }

            try {
                commandHandler.processCommand(command, args, language, rawSender, function (res) {
                    var originalCommand = void 0;

                    if (!res.announcement) {
                        channel.send(res.message);

                        Object.keys(language.commands).forEach(function (originalCommandName) {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            } else if (command == "eval") {
                                originalCommand = "eval";
                            }
                        });
                    } else {
                        Object.keys(language.commands).forEach(function (originalCommandName) {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            }
                        });

                        bot.guilds.forEach(function (value) {
                            if (value.name == "Discord Bots" || value.name == "Discord Bot List") return;

                            var sent = false;
                            var ch = value.channels.findAll("type", "text");
                            var preferred = ["misc", "bots", "meta", "hangout", "fellowship", "lounge", "congregation", "general", "taffer", "family_text", "staff"];

                            var _loop = function _loop(i) {
                                if (!sent) {
                                    var receiver = ch.find(function (val) {
                                        return val.name === preferred[i];
                                    });

                                    if (receiver) {
                                        receiver.send(res.message.replace("+" + language.commands.announce + " ", "")).catch(function () {
                                            // do nothing
                                        });

                                        sent = true;
                                    }
                                }
                            };

                            for (var i = 0; i < preferred.length; i++) {
                                _loop(i);
                            }
                        });

                        channel.send("Done.");
                    }

                    var cleanArgs = args.toString().replaceAll(",", " ");
                    if (originalCommand == "puppet" || originalCommand == "eval" || originalCommand == "announce") cleanArgs = "";

                    _central2.default.logMessage(res.level, sender, source, "+" + originalCommand + " " + cleanArgs);
                });
            } catch (e) {
                _central2.default.logMessage("err", sender, source, e.message);

                channel.send(e.message);
                console.error(e.stack);
                return;
            }
        } else {
            try {
                verseHandler.processRawMessage(raw, rawSender, language, function (result) {
                    if (!result.invalid) {
                        if (result.twoMessages) {
                            channel.send(result.firstMessage);
                            channel.send(result.secondMessage);
                        } else {
                            channel.send(result.message);
                        }

                        _central2.default.logMessage(result.level, sender, source, result.reference);
                    }
                });
            } catch (e) {
                _central2.default.logMessage("err", sender, source, e.message);
                return;
            }
        }
    });
});

_central2.default.logMessage("info", "global", "global", "BibleBot v" + process.env.npm_package_version + " by Elliott Pardee (vypr)");
bot.login(config.token);
从“/central”导入中心文件;
从“/data/config”导入*作为配置;
从“Discord.js”导入*作为Discord;
const bot=new Discord.Client();
从“/handlers/commands”导入CommandHandler;
从“/handlers/verses”导入VerseHandler;
const commandHandler=new commandHandler();
const verseHandler=新的verseHandler();
从“/handlers/commands/settings”导入设置;
bot.on(“就绪”,()=>{
logMessage(“信息”、“全球”、“全球”、“连接”);
bot.user.setPresence({
状态:“在线”,
afk:错,
游戏:{
“名称”:“BibleBot v”+process.env.npm_包版本,
“url”:”https://biblebot.vypr.space"
}
});
});
bot.on(“调试”,(调试)=>{
if(config.debug){
logMessage(“调试”、“全局”、“全局”、调试);
}
});
bot.on(“重新连接”,()=>{
logMessage(“信息”、“全局”、“全局”、“尝试重新连接”);
});
bot.on(“断开连接”,()=>{
logMessage(“信息”、“全局”、“全局”、“断开连接”);
});
bot.on(“警告”,“警告)=>{
日志消息(“警告”、“全局”、“全局”、“警告”);
});
bot.on(“错误”,(e)=>{
日志信息(“err”、“全球”、“全球”、e);
});
bot.on(“消息”,(原始)=>{
//获取原始消息对象并使其更可用
让rawssender=raw.author;
让sender=rawssender.username+“#”+rawssender.discriminator;
设channel=raw.channel;
让message=raw.content;
让源;
if(config.debug){
//TODO:将其替换为用户ID。
开关(发送器){
案例“vipr#4035”:
打破
违约:
if(config.versionAdders.indexOf(发送方)!=-1){
打破
}否则{
返回;
}
}
}
settings.languages.getLanguage(rawSender,(language)=>{
//此处使用channel.guild是因为
//使用DMs的可能性
//否则,我会使用guild.name
if((typeof channel.guild!=“未定义”)&&
(typeof channel.name!=“未定义”)){
source=channel.guild.name+“#”+channel.name;
}否则{
source=“未知(直接消息?);
}
if(sender==config.botname)返回;
if(channel.guild.name.includes(“Discord Bot”)){
if(raw.author.id!=config.owner){
返回;
}
}
如果(message.charAt(0)=“+”){
const command=message.substr(1.split)(“”[0];
设args=message.split(“”);
const returnValue=args.shift();//删除第一项
if(returnValue==未定义){
args=null;
}
试一试{
processCommand(命令,参数,语言,rawSender,(res)=>{
让原始命令;
如果(!res.announcement){
信道发送(res.message);
Object.keys(language.commands).forEach((originalCommandName)=>{
if(language.commands[originalCommandName]==command){
originalCommand=originalCommand名称;
}else if(命令==“eval”){
原始命令=“eval”;
}
});
}否则{
Object.keys(language.commands).forEach((originalCommandName)=>{
if(language.commands[originalCommandName]==command){
originalCommand=originalCommand名称;
}
});
bot.guilds.forEach((值)=>{
如果(value.name==“不协调机器人程序”||
value.name==“Discord Bot List”)返回;
让发送=假;
const ch=value.channels.findAll(“类型”、“文本”);
const preferred=[“杂项”、“机器人”、“元”、“闲逛”、“团契”、“休息室”、“会众”、“将军”,
“塔夫绸”、“家庭文本”、“员工”
];
for(设i=0;ival.name==preferred[i]);
中频(接收机){
接收器。发送(res.message.replace(
“+”+language.commands.announce+”,“
)).catch(()=>{
//无所事事
});
发送=真;
}
}
}
});
频道。发送(“完成”);
}
让cleanArgs=args.toString().replaceAll(“,”,”);
import central from "./central";
import * as config from "./data/config";

import * as Discord from "discord.js";
const bot = new Discord.Client();

import CommandHandler from "./handlers/commands";
import VerseHandler from "./handlers/verses";

const commandHandler = new CommandHandler();
const verseHandler = new VerseHandler();

import settings from "./handlers/commands/settings";

bot.on("ready", () => {
    central.logMessage("info", "global", "global", "connected");
    bot.user.setPresence({
        status: "online",
        afk: false,
        game: {
            "name": "BibleBot v" + process.env.npm_package_version,
            "url": "https://biblebot.vypr.space"
        }
    });
});

bot.on("debug", (debug) => {
    if (config.debug) {
        central.logMessage("debug", "global", "global", debug);
    }
});

bot.on("reconnecting", () => {
    central.logMessage("info", "global", "global", "attempting to reconnect");
});

bot.on("disconnect", () => {
    central.logMessage("info", "global", "global", "disconnected");
});

bot.on("warning", (warn) => {
    central.logMessage("warn", "global", "global", warn);
});

bot.on("error", (e) => {
    central.logMessage("err", "global", "global", e);
});

bot.on("message", (raw) => {
    // taking the raw message object and making it more usable
    let rawSender = raw.author;
    let sender = rawSender.username + "#" + rawSender.discriminator;
    let channel = raw.channel;
    let message = raw.content;
    let source;

    if (config.debug) {
        // TODO: Replace this with user IDs.
        switch (sender) {
            case "vipr#4035":
                break;
            default:
                if (config.versionAdders.indexOf(sender) != -1) {
                    break;
                } else {
                    return;
                }
        }
    }

    settings.languages.getLanguage(rawSender, (language) => {
        // channel.guild is used here because
        // of the possibility that DMs are being used
        // otherwise, i'd use guild.name
        if ((typeof channel.guild != "undefined") &&
            (typeof channel.name != "undefined")) {
            source = channel.guild.name + "#" + channel.name;
        } else {
            source = "unknown (direct messages?)";
        }

        if (sender == config.botname) return;
        if (channel.guild.name.includes("Discord Bot")) {
            if (raw.author.id != config.owner) {
                return;
            }
        }

        if (message.charAt(0) == "+") {
            const command = message.substr(1).split(" ")[0];

            let args = message.split(" ");
            const returnValue = args.shift(); // remove the first item

            if (returnValue == undefined) {
                args = null;
            }

            try {
                commandHandler.processCommand(command, args, language, rawSender, (res) => {
                    let originalCommand;

                    if (!res.announcement) {
                        channel.send(res.message);

                        Object.keys(language.commands).forEach((originalCommandName) => {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            } else if (command == "eval") {
                                originalCommand = "eval";
                            }
                        });
                    } else {
                        Object.keys(language.commands).forEach((originalCommandName) => {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            }
                        });

                        bot.guilds.forEach((value) => {
                            if (value.name == "Discord Bots" ||
                                value.name == "Discord Bot List") return;

                            let sent = false;
                            const ch = value.channels.findAll("type", "text");
                            const preferred = ["misc", "bots", "meta", "hangout", "fellowship", "lounge", "congregation", "general",
                                "taffer", "family_text", "staff"
                            ];

                            for (let i = 0; i < preferred.length; i++) {
                                if (!sent) {
                                    let receiver = ch.find(val => val.name === preferred[i]);

                                    if (receiver) {
                                        receiver.send(res.message.replace(
                                            "+" + language.commands.announce + " ", ""
                                        )).catch(() => {
                                            // do nothing
                                        });

                                        sent = true;
                                    }
                                }
                            }
                        });

                        channel.send("Done.");
                    }

                    let cleanArgs = args.toString().replaceAll(",", " ");
                    if (originalCommand == "puppet" || originalCommand == "eval" || originalCommand == "announce") cleanArgs = "";

                    central.logMessage(res.level, sender, source, "+" + originalCommand + " " + cleanArgs);
                });
            } catch (e) {
                central.logMessage("err", sender, source, e.message);

                channel.send(e.message);
                console.error(e.stack);
                return;
            }
        } else {
            try {
                verseHandler.processRawMessage(raw, rawSender, language, (result) => {
                    if (!result.invalid) {
                        if (result.twoMessages) {
                            channel.send(result.firstMessage);
                            channel.send(result.secondMessage);
                        } else {
                            channel.send(result.message);
                        }

                        central.logMessage(result.level, sender, source, result.reference);
                    }
                });
            } catch (e) {
                central.logMessage("err", sender, source, e.message);
                return;
            }
        }
    });
});


central.logMessage(
    "info", "global", "global", "BibleBot v" + process.env.npm_package_version +
    " by Elliott Pardee (vypr)");
bot.login(config.token);
"use strict";

var _central = require("./central");

var _central2 = _interopRequireDefault(_central);

var _config = require("./data/config");

var config = _interopRequireWildcard(_config);

var _discord = require("discord.js");

var Discord = _interopRequireWildcard(_discord);

var _commands = require("./handlers/commands");

var _commands2 = _interopRequireDefault(_commands);

var _verses = require("./handlers/verses");

var _verses2 = _interopRequireDefault(_verses);

var _settings = require("./handlers/commands/settings");

var _settings2 = _interopRequireDefault(_settings);

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var bot = new Discord.Client();

var commandHandler = new _commands2.default();
var verseHandler = new _verses2.default();

bot.on("ready", function () {
    _central2.default.logMessage("info", "global", "global", "connected");
    bot.user.setPresence({
        status: "online",
        afk: false,
        game: {
            "name": "BibleBot v" + process.env.npm_package_version,
            "url": "https://biblebot.vypr.space"
        }
    });
});

bot.on("debug", function (debug) {
    if (config.debug) {
        _central2.default.logMessage("debug", "global", "global", debug);
    }
});

bot.on("reconnecting", function () {
    _central2.default.logMessage("info", "global", "global", "attempting to reconnect");
});

bot.on("disconnect", function () {
    _central2.default.logMessage("info", "global", "global", "disconnected");
});

bot.on("warning", function (warn) {
    _central2.default.logMessage("warn", "global", "global", warn);
});

bot.on("error", function (e) {
    _central2.default.logMessage("err", "global", "global", e);
});

bot.on("message", function (raw) {
    // taking the raw message object and making it more usable
    var rawSender = raw.author;
    var sender = rawSender.username + "#" + rawSender.discriminator;
    var channel = raw.channel;
    var message = raw.content;
    var source = void 0;

    if (config.debug) {
        // TODO: Replace this with user IDs.
        switch (sender) {
            case "vipr#4035":
                break;
            default:
                if (config.versionAdders.indexOf(sender) != -1) {
                    break;
                } else {
                    return;
                }
        }
    }

    _settings2.default.languages.getLanguage(rawSender, function (language) {
        // channel.guild is used here because
        // of the possibility that DMs are being used
        // otherwise, i'd use guild.name
        if (typeof channel.guild != "undefined" && typeof channel.name != "undefined") {
            source = channel.guild.name + "#" + channel.name;
        } else {
            source = "unknown (direct messages?)";
        }

        if (sender == config.botname) return;
        if (channel.guild.name.includes("Discord Bot")) {
            if (raw.author.id != config.owner) {
                return;
            }
        }

        if (message.charAt(0) == "+") {
            var command = message.substr(1).split(" ")[0];

            var args = message.split(" ");
            var returnValue = args.shift(); // remove the first item

            if (returnValue == undefined) {
                args = null;
            }

            try {
                commandHandler.processCommand(command, args, language, rawSender, function (res) {
                    var originalCommand = void 0;

                    if (!res.announcement) {
                        channel.send(res.message);

                        Object.keys(language.commands).forEach(function (originalCommandName) {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            } else if (command == "eval") {
                                originalCommand = "eval";
                            }
                        });
                    } else {
                        Object.keys(language.commands).forEach(function (originalCommandName) {
                            if (language.commands[originalCommandName] == command) {
                                originalCommand = originalCommandName;
                            }
                        });

                        bot.guilds.forEach(function (value) {
                            if (value.name == "Discord Bots" || value.name == "Discord Bot List") return;

                            var sent = false;
                            var ch = value.channels.findAll("type", "text");
                            var preferred = ["misc", "bots", "meta", "hangout", "fellowship", "lounge", "congregation", "general", "taffer", "family_text", "staff"];

                            var _loop = function _loop(i) {
                                if (!sent) {
                                    var receiver = ch.find(function (val) {
                                        return val.name === preferred[i];
                                    });

                                    if (receiver) {
                                        receiver.send(res.message.replace("+" + language.commands.announce + " ", "")).catch(function () {
                                            // do nothing
                                        });

                                        sent = true;
                                    }
                                }
                            };

                            for (var i = 0; i < preferred.length; i++) {
                                _loop(i);
                            }
                        });

                        channel.send("Done.");
                    }

                    var cleanArgs = args.toString().replaceAll(",", " ");
                    if (originalCommand == "puppet" || originalCommand == "eval" || originalCommand == "announce") cleanArgs = "";

                    _central2.default.logMessage(res.level, sender, source, "+" + originalCommand + " " + cleanArgs);
                });
            } catch (e) {
                _central2.default.logMessage("err", sender, source, e.message);

                channel.send(e.message);
                console.error(e.stack);
                return;
            }
        } else {
            try {
                verseHandler.processRawMessage(raw, rawSender, language, function (result) {
                    if (!result.invalid) {
                        if (result.twoMessages) {
                            channel.send(result.firstMessage);
                            channel.send(result.secondMessage);
                        } else {
                            channel.send(result.message);
                        }

                        _central2.default.logMessage(result.level, sender, source, result.reference);
                    }
                });
            } catch (e) {
                _central2.default.logMessage("err", sender, source, e.message);
                return;
            }
        }
    });
});

_central2.default.logMessage("info", "global", "global", "BibleBot v" + process.env.npm_package_version + " by Elliott Pardee (vypr)");
bot.login(config.token);