• Как объединить в боте несколько js файлов?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    Я так понимаю, что у тебя несколько команд и ты хочешь их разбросать по файлам, самое простое решение, это вот:

    Создай папку commands рядом с файлом index.js(Ну или какой ты там файл запускаешь)

    файл commands/music.js

    module.exports = (message) => {
      // Код для музыкального файла
    }


    Файл commands/otherCommand.js

    module.exports = (message) => {
      // Код другой команды
    }


    А в основном файле (у меня это index.js)
    const musicCommand = require('./commands/music.js');
    const otherCommand = require('./commands/otherCommand.js');
    
    client.on('message', msg => {
      if (msg.content === 'music') {
        musicCommand(msg);
      }
    
      if (msg.content === 'other') {
        otherCommand(msg);
      }
    });


    Обязательно глянь это видео
    Ответ написан
  • Как сделать в боте команду !say?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    client.on('message', msg => {
      if (msg.content === '!say') {
        const text = message.content.split(' ').slice(1).join(' ');
    
        msg.reply(text);
      }
    });
    Ответ написан
    Комментировать
  • Как сделать рандомные ответы от бота дискорд?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    Вот что касается получение рандомного слова в js:
    const randomWords = [
      "Apples",
      "Bananas",
      "Pears"
    ];
    
    const randomIndex = Math.floor(Math.random() * randomWords.length);
    const word = randomWords[randomIndex];


    Далее с помощью метода channel.send(word), вы можете отправить это рандомное слово в чат;

    Я конечно понимаю, что вы попробовали сами написать и ничего не получилось, однако гугл никто не отменял.
    Ответ написан
  • Как вывести данные пользователя в Node js + Express, MongoDB?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    Ну смотри, я думаю совет, посмотреть в ютубе тебя не интересует, но вкратце вот алгоритм:

    Регистрация:
    1) Фронт отправляет на бэк POST запрос с данными, которые ввел юзер.
    2) Бык выносит данные пользователя в отдельную переменную(к примеру user), т.к. нужно будет с этими данными в будущем работать и желательно это делать в отдельной переменной.
    3) Бэк проверяет данные на валидность, например, что нет не нужных символов в пароле, или что почта валидная
    4) Бэк с помощью bcryptjs шифрует пароль юзера и заменяет то, что ввёл юзер, на то, что выдаёт модуль bcryptjs (помните, что меняем только данные в созданной переменной (к примеру user), а не данные, которые которые прилетели POST запросом)
    5) Бэк генерирует accessToken и сохраняет в нашу переменную с данными юзера (к примеру user) (можно тот-же bcryptjs для этого конечно юзать, но в будущем советую поискать что-то ещё)
    6) Бэк отправляет запрос на монго, чтобы сохранить юзера в базе данных
    7) Бэк отправляет на фронт accessToken юзера, который нужно сохранить в куки


    Теперь, что касается получения данных:
    1) Фронт отправляет на бэк GET запрос получения данных юзера. При этом отправляя куки, которые мы сохранили ранее
    2) Бэк отправляет запрос в монгу, на поиск юзера по accessToken в базе данных
    3) Бэк возвращает на фронт данные юзера полученные из монги
    4) Фронт эти данные показывает юзеру


    Что касается авторизации:
    1) Фронт отправляет POST запрос на бэк с введёнными юзером email и паролем.
    2) Бэк отправляет запрос в монгу, на поиск юзера по email
    3) Бэк с помощью bcryptjs.compareSync() проверяет совпадают ли пароль полученные из базы данных с тем, что ввёл юзер
    4) Бэк возвращает на фронт accessToken юзера, который нужно сохранить в куки


    Несколько замечаний:
    1) email должен быть уникальным, двух юзеров с одним email быть не должно, поэтому если вы используете mongoose - укажите "unique: true" в схеме юзера
    Пример:
    const userSchema = new Schema({
      email: {
        type: String,
        unique: true,
      }
    });


    2) mongoose вам очень поможет во взаимодействии с MongoDB

    Вопросы есть?
    Ответ написан
  • Как получить данные из асинхронной функции node js?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    Смотри, твой вопрос очень не понятен, но я постараюсь ответить на то, что я понял. Смотри вот пример как работает async/await:

    У тебя есть асинхронная функция
    async function testName() {
        // Code
      }


    Для того, чтобы выполнить в этой функции код по порядку, тебе нужно перед промисом(функция, которая даёт обещание выполнить что-то), поставить ключевое слово await.

    async function testName() {
        await func1();
        await func2();
      }


    Ты как-бы говоришь, что функция "testName" должна подождать пока выполнится код в функции "func1", затем в функции "func2", после этого продолжить выполнение остального кода.

    И если ты хочешь получить данные из кода, который ты указал выше первым, то тебе примерно нужна такая конструкция:

    async function testName() {
      const data = await request({
        url: 'https://api.steampowered.com/IEconService/GetTradeOffers/v1/?key=MYAPIKEY&get_sent_offers=1&active_only=1&format=json',
        json: true
      }, (err, responser, body, undefined) => {
        tradeItems = JSON.stringify(body.response['trade_offers_sent'][0].items_to_give);
      });
    }


    Теперь у вас в переменной data будет находится ответ от сервера к которому вы отправили запрос, в данном случае это торговая площадка стима. А дальше используйте data как вам нужно.

    Однако ты должен понимать, что await ставится для асинхронных методов, например реквест, который ты посылаешь на торговую площадку стима - это асинхронный запрос.

    Я тебе очень сильно советую посмотреть это видео
    Надеюсь, что помог, я постарался максимально легко объяснить это всё.
    Ответ написан
  • Как спарcить данные с сайта при помощи JS?

    kiidii_aniname
    @kiidii_aniname
    Node.JS Developer
    Вам поможет папитьер. Он поддерживается Гуглом и впринципе очень хорош для парсинга страниц в интернете. Более того, вы можете спокойно настроить ввод данных, клик мышью и многое другое. Вот ссылка: https://pptr.dev
    Ответ написан
    Комментировать