Вступление
Друзья, приветствую!
Как-то я рассказывал вам про сервис моментальной чистки комментов AFP.Monster, главной особенностью которого является возможность обрабатывать комментарии МОМЕНТАЛЬНО, как только их оставляют у вас под постами. Теперь же я покажу вам, как всё это работает под капотом, а заодно дам вам бесплатный аналог AFP.Monster.
DISCLAIMER
- это технически сложная статья, есть много мелкой возни, в которой желательно разбираться. И хотя я постарался донести всё максимально разжёвано — возможно, у вас ничего не получится, имейте в виду.
- проделывайте все нижеописанные операции ТОЛЬКО если вам нужен какой-то кастом, или у вас мало денег, или вы просто любопытны. Во всех прочих случаях следует плюнуть на всё это и использовать AFP.Monster. Там всё сделано для людей, и можно сосредоточиться на воронке, а не на техничке.
- прила, которую мы с вами настроим — будет работать только для одного акка фб. Новый акк? Вам придётся сделать всё с самого начала. Да, вы можете попробовать это автоматизировать, вопросов нет. Но в целом рекомендую использовать этот метод на акках-хранилищах ФПшек. Таким макаром вы быстренько сможете получать токены от фпшек и подключать их в систему.
А теперь поехали!
Что нам понадобится?
Любой домен с хостингом, куда можно закинуть вот эти PHP-файлы. В целом подойдёт и трекер Кейтаро, в который можно загрузить их архивом как лендинг.
WebHooks
Итак, основной фишкой, при помощи которой возможна моментальная очистка — это вебхуки, т.е. по сути — уведомления о произошедших событиях. Фэбэ может любезно уведомить наш скрипт о том, что на объяве появился новый коммент. Ну збс же?
Давайте создадим приложение, которое будет использовать эту фичу. Как создавать прилу описано вот в этой статье в разделе «Регистрация приложения», а я начну с того шага, когда всё уже зарегано и создано.
Необходимо добавить возможность взаимодействия с вебхуками для нашей прилы. Для этого жмём Add Product (на скрине), выбираем WebHooks и жмём Set up.

Далее в выпадающем меню выбираем Page — поскольку мы хотим взаимодействовать с событиями, происходящими на фп-шках (каждый рекламный пост — это пост на фп, если вы не в курсе). И жмём Subscribe.

Появляется окно для добавления адреса index.php нашего чистильщика. Также вводим абсолютно ЛЮБОЙ токен во второе поле. Жмём Verify and save.

Появляется окно выбора подписок. Нам нужно подписаться на обновления типа feed, жмём Subscribe.

Далее для того, чтобы наше приложение получало реальные данные из фб, нужно перевести его в режим Live.

Появится окно с предупреждением, что прежде чем включить Live режим, вам нужно указать урл политики приватности. Я предоставляю её вместе со скриптом в файле policy.html, если, вдруг, она перестанет прокатывать — сгенерируйте любую другую.

Я указываю эту политику также в поле Terms of Service.

Теперь нам осталось получить токены от тех фпшек, на которых мы хотим обрабатывать комментарии. Для этого переходим в верхнем меню Tools — Graph Api Explorer.
Выбираем в выпадающем меню Meta App нашу прилу. А в нижнем меню Permissions выбираем все разрешения, начинающиеся с pages_manage, pages_read и pages_show_list.

После этого жмём большую синюю кнопку Generate Access Token.

Появится отдельное окно где мы выбраем пункт с доступом ко всем страницам.

Проходим этот квест до конца и возвращаемся в наш Graph Explorer.
Теперь в меню User or Page у нас появились все страницы аккаунта. И когда вы будете добавлять на этот акк другие фп — они тут тоже появятся.

Выбираем страницу, на которой хотим чистить комменты, после чего копируем токен из поля сверху.

Идём в Tools — Access Token Debugger и пихаем в него токен.

Видим, что у токена есть все нужные права, а также то, что токен сдохнет через час. Поэтому скроллим до самого низа и тыкаем на кнопку Extend Access Token.

У вас попросят пароль и выдадут новый токен со сроком жизни в 2 месяца.

Сохраняем его себе (его будем добавлять в наш скрипт).
ИИИИИ, на этом с настройкой внутри фб ВСЁ, фуххх!
Настраиваем саму систему
Перво-наперво нужно открыть для редактирования файл settings.php и поменять там:
- админский пароль с qwerty на что-то более подходящее
- имя БД с comments.db на что-то более длинное и менее очевидно. В этой базе будут храниться токены от фпшек, поэтому нежелательно, чтобы кто-то имел возможность её выкачать. Символов 20-25 в названии будет норм.
Далее заходим на index.php и логинимся в админку, используя предварительно установленный пароль. Видим следующий интерфейс:

Сверху кнопка просмотра логов и выход из системы, слева добавление страниц и настройка режима чистки, справа работа с автоответом.
Добавляем страницу по её ID и используем тот самый токен, что мы получили в Graph Explorer. ID фп, кстати, можно быстро получить в том же Graph Explorer, запустив кнопкой Submit запрос, что там будет прописан по умолчанию.

Полагаю, что дальше вы разберётесь сами, но если нет — можете посмотреть видео, где я показываю, как это всё работает в приближённых к боевым условиях.
А на сегодня у меня для вас всё, лейте в плюс, господа!
P.S. И ещё раз: настоятельно рекомендую вам, прежде чем вы полезете ковыряться со скриптом, ЧЕКНИТЕ СЕРВИС AFP.Monster, там всё это УЖЕ есть, и не нужно ничего настраивать.
спасибо за софт, но не могу зайти на index.php http error 500 ошибка, попробовал зайти на login.php Там все ок но дальше кидает на admin.php и там тоже ошибка 500, можешь подсказать пж что не так сделал, там вроде ошибиться нельзя было при заливе файлов на хост 😅
Для начала можно включить debug=true в settings.php и посмотреть реальную ошибку, что напишет. Если не удастся решить — пиши в тг @dvygolov
спасибо за подсказку, у меня был не установлен SQLite3 на сервере поэтому все падало, установил и все заработало спасибо большое
отлично, рад слышать!
и можешь пожалуйста подсказать по каким правилам фильтруются коммментарии? всмысле удаление/скрытие происходит исходя из каких слов? их нужно где-то задавать самому или уже есть база в файлах?
нет никаких правил, удаляются/скрываются абсолютно ВСЕ комментарии, если только в комментарии нету триггерных слов. Если слова найдены — то публикуется ответ от имени фп и коммент остаётся.