Задать вопрос
@getaxe
JS developer

Как правильно создать свой файл с функциями?

Вообщем то я плохо сёрчу интернет судя по всему, облазил весь, но не нашел нужного мне.
У меня получилось сделать то, что я хотел, но не полностью.
То, что у меня есть:
//в main.js
bot.func = require('./functions'); //должно писаться именно так, ибо переменная бот летает по всему коду. 

//в /functions/index.js
function getMemoryMember (bot, id) {
   //1412351235
}
function getGuildMember (bot, id) {
     //1412351235
}
function addExp (bot, id, exp) {
     //1412351235
}
function getGuildRole (bot, id) {
    //1412351235
}
function declOfNum(n, text_forms) {  
     //1412351235
}
function getTime (time) {
     //1412351235
}

module.exports = {
    getMemoryMember: getMemoryMember,
    getGuildMember: getGuildMember,
    addExp: addExp,
    getGuildRole: getGuildRole,
    declOfNum: declOfNum,
    getTime: getTime
};

С этим кодом могу спокойно обращаться во всех файлах к bot.func."название функции" и все хорошо. Но мне очень не нравиться что сюда не передается переменная bot, и приходиться передавать ее при использовании функции.
Что примерно хочу:
//в main.js 
bot.func = require('./functions')(bot);

//в /functions/index.js
module.exports = (bot) => {
function getMemoryMember (bot, id) {
   //1412351235
}

Как я понял, при таком синтаксисе require сам становиться функцией и не может передать что-то из себя. Как мне сделать это правильно, чтоб бот отправлялся туда с помощью require.
p.s. прочитал уже статей 15 о функциях, require, и экспорте =/
  • Вопрос задан
  • 151 просмотр
Подписаться 3 Простой Комментировать
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Ну например, так, если не менять определение функций:
//в main.js 
bot.func = require('./functions')(bot);

//в /functions/index.js
module.exports = (bot) => ({
    getMemoryMember: (id) => getMemoryMember(bot, id),
    getGuildMember: (id) => getGuildMember(bot, id),
    ...
    declOfNum,
    getTime,
});


Хотя я бы может просто добавил их в прямо в бота и использовал this.
// в main.js
Object.assign(bot, require('./functions'));

// вместо bot.func.getMemoryMember(bot, id)
bot.getMemoryMember(id);

//в /functions/index.js
function getMemoryMember (id) {
   // тут использовать this вместо bot
}
function getGuildMember (id) {
     //1412351235
}
...

module.exports = {
    getMemoryMember,
    getGuildMember,
    addExp,
    getGuildRole,
    declOfNum,
    getTime
};


А может даже надо в прототип бота добавить, но это уже нужно смотреть как определяется bot и его прототип.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы