• Автоматическое добавление в телеграм?

    vndrussia
    @vndrussia
    Вроде разработчик,а вроде и нет
    1- Берешь ноду,или питон на чем там у тебя бот.
    2- Как либо с сайта парсишь данные,через API или непосредственно из БД через соединение.(гайдов что на ноду,что на питон море в сети)
    для питона например - https://pythonpip.ru/examples/chtenie-i-poluchenie...
    для ноды - https://metanit.com/web/nodejs/8.4.php
    3- Далее получаешь список юзеров из канала и сверяешь его с бд,тех кого нет в бд удаляешь из канала,тех кто есть в бд но нет в канале добавляешь.

    Код за тебя писать никто не будет)

    P.S ну и вешаешь это все на планировщик.
    Ответ написан
    2 комментария
  • Как сделать, чтобы при наведении на элемент изменились все, кроме него?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Hover на всего родителя > все дети чёрного цвета.
    2. Hover на ребёнка и он оранжевого цвета, за счёт специфичности он перебьет п1.

    Ответ написан
    8 комментариев
  • Зачем в данной функции нужны круглые скобки?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Стрелочная функция может содержать несколько инструкций. И тогда ее тело обрамляется фигурными скобками. Также она может содержать одну инструкцию и неявно возвращать результат.
    В данном случае ваша функция имеет вид

    f = () => {
      return {
        ...fields
      }
    }


    Однако здесь всего одно выражение в теле функции и его можно сократить

    Мы не можем написать так

    f = () => {
      ...fields
    }


    Будет ошибка синтаксиса. Но можем обернуть возвращаемый объект в круглые скобки

    f = () => ({
      ...fields
    })
    Ответ написан
    Комментировать
  • Зачем в данной функции нужны круглые скобки?

    XanXanXan
    @XanXanXan
    Чтобы фигурные скобки воспринимались как возврат объекта, а не как тело функции.
    Ответ написан
    Комментировать
  • Как добавить класс если в блоке что то есть?

    sfi0zy
    @sfi0zy Куратор тега JavaScript
    Creative frontend developer
    через css хочу скрыть его, когда пуст

    В такой формулировке можно обойтись без дополнительных классов:
    .wishlist_products_counter_number:empty {
        display: none;
    }
    Ответ написан
    1 комментарий
  • Как авторизовация в webSocket через Bearer token?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Штатный метод WebSocket в JS не позволяет добавлять заголовки (кроме Sec-WebSocket-Protocol).
    Аутентификация возможна только после установления соединения, обычными сообщениями WS.
    Ответ написан
    2 комментария
  • Как массив объектов собрать в один объект, объединив одноимённые свойства в массивы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Получаем все возможные ключи; под каждый создаём пустой массив; при обработке объекта из исходного массива бежим по массиву ключей, добавляем в соответствующий массив значение из объекта или дефолтное - в зависимости от наличия ключа в объекте:

    function groupValues(arr, defaultValue = null) {
      const keys = [...new Set(arr.flatMap(Object.keys))];
      return arr.reduce((acc, n) => {
        keys.forEach(k => acc[k].push(Object.hasOwn(n, k) ? n[k] : defaultValue));
        return acc;
      }, Object.fromEntries(keys.map(k => [ k, [] ])));
    }
    
    
    const result = groupValues(arr);

    Или, результирующий объект изначально пуст; при обработке объекта из исходного массива перебираем его ключи; если ключ отсутствует в результирующем объекте, создаём массив с длиной как у исходного, заполняем его дефолтным значением; записываем в массив в результирующем объекте значение под тем же индексом, который имеет обрабатываемый объект в исходном массиве:

    const groupValues = (arr, defaultValue = null) =>
      arr.reduce((acc, n, i, a) => (
        Object
          .keys(n)
          .forEach(k => (acc[k] ??= Array(a.length).fill(defaultValue))[i] = n[k]),
        acc
      ), {});
    Ответ написан
    Комментировать
  • Как сделать таймер для карточек товара?

    Stalker_RED
    @Stalker_RED
    Если нашел этот код в интернетах - выбрось без сожаления, и возьми нормальный.
    Если написал сам, то можно доработать:
    1. вместо document.querySelectorAll('.time-count__days...
    можно найти нужный контейнер со счетчиком, а потом искать разметку таймера уже в нем
    const card = document.querySelector('#селектор_карточки_товара');
    const days = card.querySelector('.time-count__days');
    Причем можно это делать один раз при инициализации скрипта, и не дергать DOM много раз каждую секунду.

    2. прописывать в каждой карточке разметку для секунд и минут - так себе идея. Можно вставлять ее скриптом. Заодно и не нужно будет ее искать.

    3. пропишите в CSS жестко размеры для элементов таймера, чтобы браузер не пытался делать reflow при изменении текста в них. Если нужна резиновость - можно привязать размеры к vh vw или пересчитывать их по событию resize.

    4. setInterval(foo, 1000) - плохо.
    setInterval не обещает, что код в следующий раз запустится через 1000ms, он обещает что он запустится НЕ РАНЬШЕ, чем через 1000ms. То есть при наличии на странице каких-то тяжелых скриптов таймер может пропускать тики. Хорошо хоть вычсление t у вас не просто счетом, а сравнением с new Date()
    Можно обновлять по requestAnimationFrame. Естественно не каждый кадр, а только когда изменились секунды.
    Ответ написан
    Комментировать
  • BotFather поломался?

    @nozzy
    Symfony, Laravel, SQL
    Нужно пробовать еще больше разных устройств для создания бота и еще больше аккаунтов - только в этом случае в конце концов бот начинает работать, тут главное не отчаиваться и не останавливаться...
    Ответ написан
    6 комментариев
  • Как нарисовать график (интересует мат. формула)?

    Alexandroppolus
    @Alexandroppolus
    кодир
    y(x) = x < 2 ? 0 : (x-2) ** 2 / 16

    это навскидку, и из предположения, что отметки на шкале Y такой же длины, как на Х
    Ответ написан
    1 комментарий
  • Какой подход к CSS использовать в 2023 году?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    CSS-IN-JS, CSS-modules

    Но я бы выбрал CSS-modules, т.к:
    1. Производительность клиента, а SSR не всегда возможен.
    2. Отсутствие смешивания CSS и JS.
    3. Отсутствие дополнительного обучения для использования CSS-IN-JS.
    Ответ написан
    2 комментария
  • Почему псевдоэлемент after перекрывает собой родителя?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Ответ написан
    Комментировать
  • Как написать цикличный таймер?

    Stalker_RED
    @Stalker_RED
    Напишите список ваших задач, или периодов, или как их там. В них храните либо длительность, либо время начала и окончания, как вам удобнее.

    Напишите ОДИН setInterval, который сравнивает текущее время со временем старта или конца ваших периодов.

    Конструкции типа time-- идут лесом.
    Потому что и setInterval и setTimeout не гарантируют время срабатывания. Они работают "не раньше чем", а позже - запросто. Только хардкор: const now = new Date() на каждом тике таймера.

    Всякие циферки для отображения вычисляются из разницы между now и start или end, математика простейшая.
    Ответ написан
    Комментировать
  • Замыкания не существует?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Функция one() определяет переменную oneVar. Затем в ней определяется функция two(), в лексическое окружение которой попадает oneVar. В конце своей работы функция one() возвращает в качестве результата функцию two().
    В переменную three записывается результат работы one(), то есть функция two(). Несмотря на то, что one() уже закончила работу, переменная oneVar сохраняется в лексическом окружении функции two().
    При вызове three() фактически вызывается two(), в которой переменная oneVar доступна для использования.
    Ответ написан
  • Где хранить токены авторизации в браузере?

    Maksclub
    @Maksclub Куратор тега Веб-разработка
    maksfedorov.ru
    Ответ написан
    Комментировать
  • Как разрешить копировать картинку с сайта?

    meusov11
    @meusov11
    * {
      user-select: none;
    }


    Вот это =)
    Ответ написан
    Комментировать
  • Как сделать так чтобы окно предупреждение о cookie после соглашения больше не показывалось?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    window.onload = () => {
    
      const popUp = document.getElementById('cookiePopup');
    
      function showPopup() {
        popUp.classList.add('show');
        popUp.classList.remove('hide');
      }
    
      function hidePopup() {
        popUp.classList.add('hide');
        popUp.classList.remove('show');
      }
    
      document.getElementById('acceptCookie').addEventListener('click', () => {
        localStorage.setItem('cookieAccepted', '1');
        hidePopup();
      });
    
      if (localStorage.getItem('cookieAccepted') === '1') {
        hidePopup();
      } else {
        showPopup();
      }
    
    };
    Ответ написан
    Комментировать
  • Как правильней будет сверстать такой каталог?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Как сверстать такой каталог?

    Таблицей, и не парится.
    Либо гриды. Флексы здесь вообще плохо вписываются.

    Ответ написан
    2 комментария
  • Почему не работает nodemailer?

    vool
    @vool
    Разработчик
    Можно ещё таким способом отправлять:
    (Пример отправки кода подтверждения)
    const nodemailer = require('nodemailer');
    const directTransport = require('nodemailer-direct-transport');
    const fromHost = `mysite.com`;
    const from = 'site' + '@' + "gmail.com";
    
    console.log('Email will be sent from:');
    console.log(from, '\n');
    
    // Ask for email address
    const to = prompt('Enter your email address ').trim();
    
    // Генерируем код
    const trueVerificationCode = Math.round(Math.random() * (10e5 - 1)).toString();
    
    const transport = nodemailer.createTransport(directTransport({
      name: fromHost
    }));
    let y = trueVerificationCode;
    // Отправляем письмо
    transport.sendMail({
      from, to,
      subject: 'Verify your email address',
      html: `
             <div style="width:100%;display:flex;flex-direction:column;justify-content:center;
             align-items:center;background:lightblue;padding:50px;box-sizing:border-box;">
             <h1>Verify your email address</h1>
             <p>Site has tried to verify your email address "${to}".
             If this wasn't you, ignore and delete this email. Otherwise, the verification code is bellow:</p>
             <div style="padding:50px;background:lightgray;border-radius:10px;font-size:30px;
             font-family:monospace;">${trueVerificationCode}</div></div>
            `
    }, (err, data) => {
      if (err) {
        console.error('There was an error:', err);
      } else {
        console.log('\nVerification email sent, check your inbox\n');
        const userVerificationCode = prompt('Enter your verification code ');
        if (userVerificationCode == trueVerificationCode) {
          console.log('Email address verified');
        } else {
          console.log('Code incorrect');
        }
      }
    });
    Ответ написан
    6 комментариев