Ответы пользователя по тегу Node.js
  • Как получить фотографию в рамке, как в ВК?

    @loonny
    В VK картинка с сервера приходит квадратная, круглой она становиться уже с помощью CSS.
    Судя по тегам, вам нужно именно в nodeJS получить круглую картинку. Вам понадобится модуль canvas, установите его командой: npm install canvas
    Дальше используйте привычный Canvas API с некоторыми дополнениями. Вот пример:
    const { createCanvas, loadImage } = require('canvas')
    
    
    const canvas = createCanvas(50, 50)
    const ctx = canvas.getContext('2d')
    
    loadImage('https://habrastorage.org/r/w60/webt/5d/fc/84/5dfc84d27a4a2949249978.jpeg')
      .then((image) => {
        ctx.drawImage(image, 0, 0, 50, 50);
        ctx.globalCompositeOperation = 'destination-in';
        ctx.beginPath();
        ctx.arc(25, 25, 25, 0, Math.PI * 2);
        ctx.closePath();
        ctx.fill();
    
        console.log(canvas.toDataURL()) // Выводим в консоль Data URL
      })

    Результат: 5edcdd6758dd6509301326.png
    P.S. Дуболом Одноклеточный, стыбрил твою аву для демонстрации, не обижайся)
    Ответ написан
    1 комментарий
  • Как правильно писать infinite scroll для back end(node.js)?

    @loonny
    Не обязательно создавать отдельные модули, достаточно просто передавать дополнительный GET параметр, например, ajax=1
    Предположим вы хотите это реализовать на странице товаров, назовем ее products.
    app.get('/products', function (req, res) {
      if (req.query.ajax = 1) { // Если есть get параметр ajax = 1
        // Делаете что-то и возвращаете не целую страничку, а только то что нужно добавить
      } else { // Если нет
        // Делаете что-то и возвращаете целую html страничку
      }
    });
    Ответ написан
    Комментировать
  • INLINE кнопки для VK-Бота на NODE.JS?

    @loonny
    Читайте в документации node-vk-bot, документация на русском. Эта библиотека не поддерживает отправку inline клавиатуры. Вы можете залезть в исходный код и немного его подправить для добавления этой функции. Это некрасиво, но если вам необходимо это для решения задачи - допустимо.

    Вот, я уже сделал это за вас. Измените код Keyboard.ts на этот:
    export enum KeyboardColor {
      PRIMARY = 'primary',
      DEFAULT = 'default',
      NEGATIVE = 'negative',
      POSITIVE = 'positive'
    }
    
    /**
     * Класс для создания клавиатуры для бота
     */
    export default class Keyboard {
      private obj: any
    
      constructor(oneTime = false, inline = false) { this.obj = { one_time: oneTime, inline: inline, buttons: [] } }
    
      addButton(label: string, color: string = KeyboardColor.DEFAULT, payload = null) {
        if (!this.obj.buttons.length) this.obj.buttons.push([])
    
        let lastRow = this.obj.buttons[this.obj.buttons.length - 1]
        if (lastRow.length === 4) throw new Error('Maximum amount of buttons in one row = 4')
    
        lastRow.push({ action: { type: 'text', label, payload }, color })
    
        return this
      }
    
      addRow() {
        if (this.obj.buttons.length === 10) throw new Error('Maximum amount of rows = 10')
        this.obj.buttons.push([])
    
        return this
      }
    
      toString() { return JSON.stringify(this.obj) }
    }

    Конструктор Keyboard теперь будет иметь не 1, а 2 параметра. Первый это oneTime с дефолтным значением false, а второй inline с дефолтным значением false.
    Ответ написан
    Комментировать
  • Как сделать ожидание сообщения от пользователя на Node.Js 12.16.3 для вк бота ??

    @loonny
    Храните в базе ID пользователя и номер загадки что он решает на данный момент

    Предположим такой диалог:
    5ec8336dcb8a3290734064.jpeg
    Что мы видим? Бот принимает 2 команды "старт" и "еще", обе команды делают одно и то же - присылают загадку, по этому будем считать что это одна и та же команда.
    1) Пользователь пишет "старт" или "еще"
    2) Бот высылает задачу и в БД фиксируетID пользователя и номер загадки которую он отгадывает.
    3) Пользователь предполагает отгадку "15 телепузиков"
    4) Бот смотрит ID пользователя что ему написал, смотрит в БД номер загадки которую он сейчас отгадывает. Потом в Базе загадок ищет по номеру эту загадку и сравнивает отгадку что дал пользователем и правильную отгадку .
    5) Правильный ответ "семеро козлят", а пользователь ответил "15 телепузиков" значит не верно, отвечаем пользователю "не верно".
    6) Пользователь пишет другую отгадку "семеро козлят"
    7) повторяется шаг 4, правильный ответ "семеро козлят", а пользователь ответил "семеро козлят" значит верно, отвечаем пользователю "верно" и удаляем из БД информацию о нем.
    И так по кругу. Надеюсь понятно объяснил.
    Ответ написан
  • Как поочерёдно загрузить файлы из API?

    @loonny
    А зачем вы вот это делаете?
    const binaryData = new Buffer(json.data.file_content, 'base64').toString('binary');


    Просто записывайте сразу в base64, а если хотите поочередно, но используйте writeFileSync вместо writeFile
    fs.writeFileSync(`./download/${item.file_name}`, json.data.file_content, 'base64', function(err) {
      console.log(err);
    });
    Ответ написан
    4 комментария
  • Как рисовать большие буквы в консоли на Node.js?

    @loonny
    Обычно рисуют с помощью юникода. На счет библиотеки не знаю, но я ручками рисовал. Это на сколько я знаю называется псевдографика. Собственно в этой статье Википедии и узнаете как рисовать.
    ▓░▓░░░░▓▓░░░░░▓▓░░░▓░░▓░░▓░░▓
    ▓▓▓░░░▓░░▓░░░▓░░▓░░▓░░▓░░▓░▓▓
    ░░▓░░░▓░░▓░░░▓▓▓▓░░▓▓▓▓░░▓▓░▓
    ▓▓▓░░▓▓▓▓▓▓░░▓░░▓░░░░░▓░░▓░░▓
    Ответ написан
    Комментировать
  • Как решить ошибку CORS: "Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request."?

    @loonny
    Ваш localhost доступен только вам. Ошибку просто переведите

    CORS: «Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.»

    CORS: «Ответ на предварительный запрос не проходит проверку контроля доступа: перенаправление не разрешено для предварительного запроса.»
    Ответ написан
  • Как распознавать голосовые сообщения в вк?

    @loonny
    приветА, не можем так как это не бесплатно. Yandex SpeechKit или Google Cloud Speech - это то что вам нужно. У гугла есть бесплатный лимит, на счет яндекса сомневаюсь
    Ответ написан
  • Ошибка при включении сервера, что делать?

    @loonny
    Можно ради разнообразия начать читать ошибки Error: Cannot find module переводится как Ошибка: не удается найти модуль. Скорее всего вы напартачили с путями
    Ответ написан
    Комментировать
  • Как наложить картинку на картинку?

    @loonny
    вы имеете ввиду вставлял ее в рамку или что?

    UDP: используйте Canvas_API
    Ответ написан