Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Аналог Zoom, кроме skype?

Лучший ответ:
Поставить свой?
BigBlueButton - в помощь

Худший ответ:
Слышали что-нибудь про WebRTC? Если кратко, то это такая технология, которая позволяет звонить через браузер. Сам звонок бесплатный, браузеры напрямую соединяются с друг-другом, достаточно иметь специальную ссылку.

Вот вам несколько сервисов на пробу:
https://videolink2me.com/start
https://talky.io/
Но на самом деле их очень много. Количество участников, наличие текстового чата и возможность демонстрации экрана зависит от самого сервиса. Для звонка создаете комнату и ссылку передаете собеседнику.
Вопрос: Блокировка сайта роскомнадзором, какова причина?

Лучший ответ:
С чего Вы решили пардон, что он заблокирован? Я вижу "Forbidden" - что означает косяк в настройке, запрещающий доступ к сайту средствами самого сайта

Худший ответ:
как будто вы сами не знаете. потому что вы торгуете лисами, которых держать дома запрещено. 
https://www.garant.ru/products/ipo/prime/doc/72181062/
Вопрос: Не понятно где домен. Как перенести?

Лучший ответ:
Не вижу причин для беспокойства. Похоже у вас включена услуга сокрытия личных данных в WHOIS. https://subreg.cz/en/: We offer to domains for free
<…>
Anonymous registration of domain (Whois protection)*
* if domain offers (it's not possible for CZ, EU etc.)
Радоваться надо — у многих регистраторов такая услуга является платной! Если это вам не нравится и не получается найти, где эта услуга отключается, напишите в поддержку.

Худший ответ:
Да все ок, сокрытие данных работает. Не переживай, у европейских регистраторов такое часто встречается в связи с GDPR.
Вопрос: Нужна помощь с поиском проксе. Где найти?

Лучший ответ:
github.com/DevAlone/proxy_py
Собирает прокси с публичных списков, чекает, сохраняет в базе и предоставляет API
>   Сервис должен отдавать рандомную проксю по API запросу (либо список проксей)http localhost:55555/api/v2/get_proxy_for_id id=""

http localhost:55555/api/v2/get_proxies_for_id id="" number=2
id пока игнорируется и выдаётся рандомный прокси. 
>  2. Возможность получать прокси под определенное гео
Пока нет, хотя апи отдаёт местоположение IP и можно сделать костылём, фильтруя вручную

Худший ответ:
Могу предложить вот этот прокси-лист: есть доступ по API с выбором географии, типа прокси, степени анонимности, скорости и т.д., экспорт в txt, csv, json.
Доступ к API тоже платный, как и на proxyorbit, но значительно дешевле. За те же деньги вы получите годовую подписку, вместо месячной. Проксей, при этом, по некоторым позициям доступно даже больше. Сам прокси-лист можете пощупать в открытую, никаких котов в мешке.
Напишите в техподдержку, вам расскажут как оформить подписку, предоставят документацию к API.
Вопрос: Насколько разница в производительности ОС Windows между физической машиной и виртуальной (VMware ESXi)?

Лучший ответ:
Разница будет.
Ощутима или нет - зависит от ваших задач. 
ИМХО, несущественная разница.
Просто попробуйте.

Худший ответ:
Смотря что будете делать. Любой серверный сервис, любое офисное приложение, да и вообще все, не работающее с графикой (с графикой там жопа разных размеров - от небольшой и изящной до огромнейшей) - будет работать так, что фактически заметно не будет.
Вопрос: Имеет ли работодатель доступ к данным о моем местоположении при использовании корпоративного ноутбука и VPN?

Лучший ответ:
Потенциально может.
На VPN сервере виден Ваш текущий адрес с которого вы установили сессию AnyConnect.  А он будет числится за одним из российских провайдеров.

Худший ответ:
Если только Вы для выхода в тырнет не используете прокси, то разумеется у него в логах подключения отобразится IP-адрес с которого было подключение. А уж пробить геолокацию IP-адреса элементарно. (IP в логах буде всегда, но в случае с прокси - это будет IP прокси)
Вопрос: ПК для office < 15k?

Лучший ответ:
Лучше 8 Гб, а так норм. Главное, не берите комусовские ПК.

Худший ответ:
В качестве печатной машинки, компа для бабушки или маленького ребенка - есть.
Вопрос: Правда ли что другие пользователи смогут использовать мой айпи адрес в качестве входной, средней, и выходной ноды?

Лучший ответ:
Читайте документацию по настройке прежде, чем использовать. Точка.

Худший ответ:
В качестве выходной не смогут - насколько я знаю, по умолчанию тор не работает в режиме выходной ноды. Но с такими вещами лучше не баловаться :)
Вопрос: Как реализовать полоску процентов?

Лучший ответ:
Внешним врапером и внутри див, который как раз и будет строкой % и длина её будет в % от от ширины враппера и равна количеству процентов прогресса

Худший ответ:
Есть на Bootstrap
Вопрос: Зачем вырезали ifconfig в новых дистрибутивах убунты?

Лучший ответ:
Была целая статья, и даже неплохая, по этому поводу.

Худший ответ:
не удалили.
сохранится даже в 20.04 focal fossa focal/amd64/net-tools/filelist потом посмотрим.
просто не ставится бай-дефаулт, смотри ответ ky0
доустанови и пользуй. но лучше обновляй свои привычки.
Вопрос: Как оценить стоимость вывода сайта в топ яндекса и гугла?

Лучший ответ:
В каждой нише свой уровень конкуренции и свой средний уровень прокачанности (количество контента, ссылочная масса и т.п.) для сайта в топе. Нужно видеть Ваш сайт.
Стоимость вывода в топ всегда складывается из стоимости отдельных видов работ:доработки сайта до его приведения в соответствие требованиям к сайту на уровне лидеров топа (тут очень много параметров);подготовки и размещения контента (тексты, фото, видео);стоимости наращивания ссылочной массы (методы и цены могут быть разные в зависимости от стратегии продвижения и соотношения риск/результат/время достижения топа).
Продвижение по 4-м ключам, как правило, мало перспективно, тем более, в регионе Москва с самой высокой конкуренцией в топе по стране. Гораздо выгоднее продвигать сайт по большой пачке ключей. Этим достигается гораздо больший трафик и бОльшая стабильность результатов.
Пришлите мне адрес сайта и ключевые фразы через форму контактов или телеграм на сайте в моём профиле. Отвечу подробнее.

Худший ответ:
попросите смету у кого будете заказывать 
способов для продвижения в сео куча стоят они по разному
Вопрос: Как запретить запись экрана?

Лучший ответ:
Никак.

Худший ответ:
Если действительно необходимо, то можно использовать drm защиту видео. При записи с помощью захвата видео на месте видео будет черный экран. А drm от microsoft(playready) позваляет защититься даже от устройств видеозахвата. Но это все очень сложно и дорого
Вопрос: Как преобразовать курс в строку?

Лучший ответ:
Прочитать учебник "Самые-самые основы Python для дошколят" хотя бы.

Худший ответ:
Вам возвращается словарь.
Дёргайте course.values() или значение по ключу "RUB".
Вопрос: Где проверять авторизацию пользователя?

Лучший ответ:
Показывать или не показывать блок на странице, это логика отображения

Худший ответ:
Иногда логика отображания может быть очень сложной, и вроде бы все просто есть контроллер, есть шаблон, есть данные. Подходов для решения может быть много, я бы выбрал следующий:
1. Контроллер принимает запрос от пользозователя и обращается к сервису для получения контента
2. Сервис контента, формирует контент но при этом проверяет права доступа, авторизиван не авторизован, дата,время, группа пользователя если атворизован, его пол и все что угодно. Отдает обратно контент согласно условиям.
3. Контроллер получив контент передает в шаблон.
Вопрос: В чем здесь ошибка?

Лучший ответ:
Стоит загуглить ошибку, там есть и обсуждения проблемы и решения с этим кодом Webasyst.

Если хотите исправлять ошибку сами, то нужно исправить ровно то о чём написано в ошибке, объявление класса привести в соответствие с интерфейсом от которого он наследуется.

upd.
Cтоит учесть что официально webasyst не работает на РНР выше 7.2.
Так что если вы ставите именно его и у вас РНР > 7.2 то решение только использовать старую версию РНР или ждать обновления от разработчиков.
https://developers.webasyst.ru/docs/installation/

Худший ответ:
Вам на русский перевести просто ошибку? )))
Объявление класса должно быть совместимо с классом который он расширяет. В Вашем случае у вас количество аргументов в методе класса разное.
Вопрос: Откуда сайты берут курсы валют различных банков?

Лучший ответ:
Некоторые банки предоставляют эти данные в виде API,
некоторые просто на сайте выкладывают в открытом виде.
Дальше кто-то парсит эти данные сам, кто-то парсит и раздаёт эти данные в виде API и так далее.
Не уверен что есть готовый рецепт

Худший ответ:
Например: https://www.moex.com/a2193
Вопрос: Как интернет провайдер видит инфу?

Лучший ответ:
В первую очередь смотрят дебиторскую задолженность.
Потом смотрят сессию, по которой вас тарифицируют. Это может быть ipoe, dhcp, 802.x, pppoe, pptp, l2tp, etc.
Потом смотрят порт на коммутаторе, какой с него прилетает mac-адрес, когда он последний раз отключался.
Потом запускают пинги-трассировки.
Потом вторая линия, а тут уже внутренняя методика проверки оператора.
Продвинутые предоставляют свои роутеры со своей прошивкой, управляемые через провайдерскую систему управления.

Худший ответ:
Да хоть пингом по вашему внешнему IP, если он не серый.
Видят состояние линии, объём переданных данных, текущую скорость, потери пакетов.
Не переживайте, всем плевать на сайты, на которые вы ходите.
Вопрос: Добавление строки к строке до определённого (бесконечно большого) числа и нахождение в ней символа 'а'. Как решить?

Лучший ответ:
Вам не нужно конкатенировать миллиарды символов, вы можете посчитать количество повторов в исходной строке, а затем умножить это число на количество полных повторов строки + остаток
static long repeatedString(String s, long n) {
        /* Кол-во повторов в исходной строке */
        int rep = (int) s.toLowerCase()
                .chars()
                .filter(c -> c == 'a').count();

        /* Кол-во циклов, в которых исходная строка будет полностью скопирована */
        long cycles = (n / s.length()) - 1;

        /* Кол-во повторов в остаточной строке, которой не хватило на полный цикл */
        int remainder = (int) s.toLowerCase()
                .substring(0, (int) n % s.length())
                .chars()
                .filter(c -> c == 'a').count();

        return rep * cycles + remainder + rep;
}

Худший ответ:
я отвечу на этот вопрос вопросом. сколько потребуется памяти, чтобы повторить строку "udjlitpopjhipmwgvggazhuzvcmzhulowmveqyktlakdufzcefrxufssqdslyfuiahtzjjdeaxqeiarcjpponoclynbtraaawrps" 872514961806 раз?
Вопрос: Как подключиться к wifi через сmd?

Лучший ответ:
так сделайте профиль, потом подключайтесь
netsh wlan connect ssid=YOURSSID name=PROFILENAME

Худший ответ:
Для того, чтобы подключиться к сети, вам нужен XML-файл профиля сети.
Примеры профилей: https://docs.microsoft.com/en-us/windows/win32/nat...
Вопрос: Взламывают, как защитить сайт?

Лучший ответ:
У вас в коде возможна sql инъекция.'SELECT * FROM `users` WHERE `id` = "'.$user_id.'"
Инструкция как их избежать:habrphp.net

Худший ответ:
На все данные, приходящие извне, нужно применять фильтрацию регулярными выражениями.
Затем, использовать подготовленные запросы для обращения к БД через запросы.
Как защитить сайты от взлома?
Вопрос: Анимация и перетаскивание элемента canvas в определенную точку?

Лучший ответ:
Почитать про анимации можно тут: https://learn.javascript.ru/js-animation
про рисование на канвасе - https://developer.mozilla.org/ru/docs/Web/API/Canv...snippet

Худший ответ:
1. Делаешь сетинтервал с частотой 16мс и каждый тик меняещь координаты зеленого куба на +1пиксель. Проверяешь координаты, если совпадают с  не закрашенным, удаляешь сетинтервал.
2. Проверяешь по координатам, если пользователь кликнул на красный блок, вешаешь обработчик  на mousemove и меняешь координаты красного на координаты позиции курсора.
Вопрос: Какие советы вы можете дать начинающему программисту?

Лучший ответ:
Запоздало вы ищите совета. Набираться реального опыта нужно как можно раньше. После первого же семестра, с февраля начинаешь искать летнюю практику. Любую, куда возьмут. Ищешь через преподов, родителей, знакомых, объявления. После первой-второй практики пытаешься залезть куда-нибудь на полставки. Если повезёт, туда же, где практику проходил. Часто университетские ВЦ берут студентов на полставки. Курса с 4-го можно пробовать договариваться с деканатом и преподавателями о свободном посещении и переходить на полную ставку. В случае успеха, вместе с дипломом получаешь статус мидла, заинтересованность в тебе рынка труда и возможность выбирать работодателя. Что касается выбора языка, выбирать язык надо тот, который наиболее применяется в интересующей области деятельности.

Худший ответ:
Получай запись в трудовую от года, что работал программистом.
Собирай вещи и сваливай из гос-сектора в частные компании на свой C#.
Работай над нормальными проектами, получай деньги, заводи девочку, квартиру, машину
Как все уже будет и за***ет работать на износ, сможешь вернуться в науку просиживать штаны до пенсии.
Вопрос: Что делать если не запускается gnome-terminal в Ubuntu?

Лучший ответ:
Итак. 

sudo locale-gen
sudo localectl set-locale LANG=en_US.utf8

reboot system или sudo systemctl restart gdm или sudo service gdm restart

Источник: https://askubuntu.com/questions/918558/terminal-wo...

P.S. Ответ был найден благодаря одному приятному человеку из чата убунты, спасибо ему.

Худший ответ:
создай новый профиль(пользователя), зайди под ним и проверь работу терминала
или открой сессию от рута (это всё есть в гугле)
Вопрос: Как сделать email-рассылку 1000 пользователям и не попасть в спам?

Лучший ответ:
А что если использовать сторонний сервис рассылок, ведь не нужно потом парится из-за спама.

Худший ответ:
Не надо спамить.
Вопрос: Список вирусных процессов?

Лучший ответ:
Есть ли где-нибудь в интернете список названий вредоносных процессов? Ибо я не нашел :)
Нет. Они либо прячутся за лигитимными названиями либо вообще имеют рандомное название.

Худший ответ:
Большинство вирусов либо маскируются под системные имена, либо просто генерится рандомное имя типа alkzxklcjfds.exe
Можно обращать внимание на "системные процессы", которые запущены от вашего пользователя.
Это из тех, которые можно увидеть в процессах.
Вопрос: Лучшие книги для изучении информатики с нуля?

Лучший ответ:
но понял что там 80% воды, 15% бредни "академиков" написавших эти книги, и только 5% реально годной информации

Каким образом вы это определили?

не писать быдлокод как 90% программистов

Смелое заявление.

Начните с «Код. Тайный язык информатики» Чарльза Петцольда — это прекрасная книга для постижения основ информатики. Далее берите учебники по ОС, Сетям, Алгоритмам. По-последнему очень рекомендую «Грокаем Алгоритмы».

Худший ответ:
книги для изучении информатики с нуля?
но без и так всем очевидным рассказам, что такое компьютер, что у него есть мышка монитор и т.п
ок. если не ошибаюсь это пишут даже в учебниках для вузов. от дураки то.
не писать быдлокод как 90% программистов

))))
серия "классика computer science" довольно интересная.
Вопрос: Существует ли софт для отображения запросов установленных приложений в интернет?

Лучший ответ:
Ставите  фэйковый сертификат и устанавливаете 
https://www.telerik.com/download/fiddler
как системный прокси. Все остальное блочите. 
ну и как сказал CityCat4 wireshark или его аналоги https://habr.com/ru/news/t/502546/

Худший ответ:
Окей гугл.
wireshark

Но сейчас все пошифровано, так что от такого перехвата толку немного.
Вопрос: Как правильно посчитать сумму товаров с копейкими?

Лучший ответ:
Вы неправильно считаете. 
392.12 может получиться, если цена будет 98.03. Т.е. 3 копейки, а в примере у вас указано 30 копеек.

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

console.log( 200.30 * 3 )
// 600.9000000000001
Вопрос: Для чего нужен typeof в js?

Лучший ответ:
При динамическом изменении значения переменной можно проверить, что за тип прилетел и выполнить необходимое действие. let item = 0;

if (typeof item === 'number' ) {
  console.log(`It's number`)
} else {
  console.log(`It's string`)
}

Худший ответ:
Вот есть, предположим, функция, которая работает с булевым значением. Чтобы понять, что именно туда было передано.
Вопрос: Как посчитать сумму цифр числа пока оно не станет однозначным?

Лучший ответ:
def countDigitsSum(num):
  return num if num < 10 else countDigitsSum(sum(map(int, str(num))))
или

def countDigitsSum(num):
  while num > 9:
    num = sum(int(n) for n in str(num))

  return num

Худший ответ:
Не нужны тут ни цикл, ни рекурсия:
def digital_root(n):
    return n % 9 or n and 9

s = input()
r = digital_root(int(s))
https://en.wikipedia.org/wiki/Digital_root
Вопрос: Почему websotrm не видит alias из webpack?

Лучший ответ:
Мне помогает jsconfig.json в корне проекта

{ 
  "compilerOptions": {
    "baseUrl": "./",
    "paths": {
        "@/*": ["src/*"]
    }
  },
  "exclude": ["node_modules", "dist"]
}

Худший ответ:
У меня так. Добавьте свой alias и если потребуется перезапустите WebStorm/PhpStorm

// webpack.config.js

const path = require('path');

function resolve(dir) {
  return path.resolve(__dirname, dir);
}

module.exports = {
  resolve: {
    extensions: ['.js', '.vue', '.json', '.ts'],
    alias: {
      '@': resolve('src/'),
    },
  },
};
Вопрос: Как правильно называть переменные в заголовке функции (параметры или аргументы)?

Лучший ответ:
В объявлении параметр https://en.cppreference.com/w/cpp/language/function
https://en.cppreference.com/w/cpp/language/functions
https://en.cppreference.com/w/cpp/language/functio...
Аргументы это то что фактически передаётся в функцию при вызове, или аргументы по умолчанию https://en.cppreference.com/w/cpp/language/default...

Худший ответ:
Одна сатана. В терминологии одних языков принято parameter, других argument.
Вопрос: MongoDb в Django?

Лучший ответ:
Цитата из документации по Django:Django officially supports the following databases:
PostgreSQL
MySQL
Oracle
SQLite
Можно конечно и MongoDb прикрутить при желании - но смысл тогда вообще Django использовать?

Худший ответ:
1. Django начнёт официально поддерживать монгу только в 3 версии, и то непонятно, в какой именно и насколько хорошо. Т.к. async они тоже собираются завезти в 3 версию, но в коде 3.0a там им и не пахнет (например, асинхронным ORM)
2. Монга немного упрощает разработку (хотя, с Django ORM и миграциями, я не вижу, как она упростит разработку), но сильно уменьшает качество продукта, особенно в неумелых руках. Например, у вас легко могут оказаться неконсистентные данные в бд, с которыми вам будет непонятно, что делать.
Есть миллиард статей о том, как монга со временем испортила продукт. Хотя, есть такой же миллиард, где её восхваляют. Однако, очевидно, что реляционные БД дают тебе больше строгости и заставляют проектировать сущности лучше. С ними сложнее, но и сложнее отстрелить себе ноги.
Вопрос: Есть ли будущее у мобильного разработчика после тимлида?

Лучший ответ:
Если ничем кроме разработки под мобилку не занимаешься то твой кругозор и знания, будь ты 100500 раз senior, для позиции тимлида или CTO ничтожны. Для этих позиций надо быть несколько другим человеком и с другой стороны смотреть на проект. Бэки чаще вылезают на эти позиции по тому что они ближе к инфраструктуре проекта и, соответственно, имеют более глубокое понимание и погружение, а бизнесу это выгоднее.

Худший ответ:
если шаришь в Андроид, говори "я бэк - в Джава шарю"
если не шаришь...
Вопрос: Как можно уникализировать картинку для facebook?

Лучший ответ:
Попробуйте добавить картинке шум, 5–10%

Худший ответ:
Есть шикарная программка для пакетной обработки фото - ImBatch. Бесплатная с какими-то оговорками, но точно не лепит никаких своих водяных знаков. Там доступно очень много операций обработки изображений, их можно комбинировать. Плюс некоторые задания поддерживают рандомизацию параметров - можно получать на выходе разные картинки каждый прогон. Вот эта статья будет хорошим стартом, если вам надо уникализировать много картинок за раз
Вопрос: Не могу найти в чем ошибка. кто поможет?

Лучший ответ:
Ну, смотри. Сообщение
self.x >= -self.width:
TypeError: '>=' not supported between instances of 'NoneType' and 'int'
указывает нам на то, что во время ошибки self.x = None
Изначально вижу x заполняется. Значит в процессе работы он в какой-то момент устанавливается в None.
Такой проблемный момент видно только в return_self, где его значение устанавливается в некий передаваемый radius
self.x = radius
который в свою очередь получается из функции find_radius.
При беглом взгляде на эту функцию бросается в глаза, что единственный return в ней из-за отступов находится внутри блока if. Т.е. если условие не выполняется, функция как раз и возвращает None, вызывая ошибку программы.
Так что проблему надо искать там. Так как запланированной логики работы игры я не знаю, предположу, что достаточно просто поправить эту строку с return radius (убрать лишний отступ), логично, чтобы она возвращала результат независимо от условия.

Худший ответ:
Перечитай внимательно саму ошибку, проверь строки на которые она указывает.
Вопрос: Стоит ли учить Big data, не окончив школу?

Лучший ответ:
в школе еще можно Big Soldato

гуляй пока, в ВУЗе догонишь

Худший ответ:
В вузе ничему не научат. В вузе максимум направление дадут.
Учиться можно и нужно всегда, всему в любом возрасте.
Вопрос: Структура React&Redux?

Лучший ответ:
Читал много информации но везде она разная
Всё верно. У каждого проекта своя структура может быть. Использовать нужно ту, что подходит больше всего для конкретных задач и целей.
Всё, что вы прочитали - имеет место быть. Возьмите лучшее, на ваш взгляд, из каждого подхода и используйте в своих проектах. 

я делаю отдельные компоненты для каждого элемента (для ul и li тоже отдельние)
Нельзя сказать, что это не правильно, но в большинстве среднестатистических проектах может быть слишком избыточно. Подумайте о том, зачем вам отдельный компонент LI и как вы будете его использовать. Возможно вам не нужно выносить этот элемент в отдельный компонент.

Худший ответ:
https://redux-toolkit.js.org/ вдоль и поперёк изучите. Там есть много примеров.
Вопрос: Где можно посмотреть адаптивность вёрстки?

Лучший ответ:
А чем chrome dev tool не устраивает?

Худший ответ:
Скачать все основные браузеры (Chrome, Opera, Firefox, Edge + Safari, если на мак оси) и смотреть в каждом из них
Вопрос: Должен ли выполняться конструктор, как общий функционал?

Лучший ответ:
Никакого класса Main, во всяком случае с методом Login быть не должно.

Худший ответ:
Название Main самим этим словом непроизвольно подталкивает вас к антипаттерну Суперкласс.
Если класс занят авторизацией - его логично назвать Auth, и у вас не будет желания запихнуть в него весь остальной движок.не камильфо
"не камильфо" - не комильфо. Комильфо - "не комильфо".
Вопрос: Какой ЯП лучше выбрать для написания ботов (Для сайтов)?

Лучший ответ:
Не нужно писать: Любой или что-то вроде того
python 3.7 подойдет 100%

Худший ответ:
Да в принципе многие языки подходят, опять же, в зависимости от того, какой бот тебе нужен. Если самый простой с простыми функциями, то и php подойдёт, он довольно лёгкий. Если же сложнее, то java или c#. Так же важно как именно ты собираешься строить бота, писать сам или через конструктор. Потому как есть конкретные гайды по типу https://chat-api.com/ru/whatsapp-bot-php.html но в тоже время есть и стандартный конструктор ботов. 
Как реализовать опросы в чат-ботах с интеграцией в amoCRM, включая WhatsApp?
Примерно то же было у меня в задаче, я писал бота для туристической организации, надо было принимать от клиентов заявки и перенаправлять информацию дальше. Изначально клиент хотел кастомную разработку, но это было дорого и долго. Поэтому попросили меня. И я написал им по гайду https://chat-api.com/ru/whatsapp-bot-php.html и в принципе проблем не составило.