[Инструкция]Пишем простого бота для dtf.ru
Меня вчера попросили объяснить как работать с API dtf.ru.
Напишем простого бота на NodeJS
Если Вы не знакомы с NodeJS, то ничего страшного - сейчас изучим.
Скачиваем дистрибутив и устанавливаем
Создаём папку для проекта.
В папке создаём файл "test.js". В нём пишем любым текстовым редактором следующий код:
Создаем файл "test.bat" с кодом:
Запускаем test.bat.
Получаем:
Поздравляю. Теперь Вы официально junior программист. Вам положена зарплата в 300К рублей в месяц. Не соглашайтесь на меньшее!
Вы решаете что 300К в месяц - это конечно хорошо, но пора повышать квалификацию и стать наконец middle программистом!
Давайте не вставая с дивана повысим нашу квалификацию. Для этого немножечко усложним наш код и напишем бота для dtf.ru
Берегись, Паймон.
Создание бота для dtf.ru
Для начала Вам потребуется зарегистрировать нового пользователя под Вашего бота. Можете конечно использовать Вашу учётку как это делает Трактирщик. Ваше право.
Вы должны знать логин, пароль и числовой идентификатор бота.
Наш бот будет максимально простым: будет отвечать тем что мы ему отправили.
Что такое бот? Если коротко, то это программа, которая получает какие-то данные и что-то делает: например создаёт посты или комментарии. А может и не получает никакие данные или ничего не делает. Боты разные.
Единственный цивилизованный способ получать данные с dtf.ru - это веб-сокет, на котором можно сделать подписку на события сайта: о новых постах, комментариях, лайках и т.п.
Создание постов, комментов происходит отправкой запросов по API.
Код бота желательно оформить в отдельном файле, т.е. в модуле, который мы сможем вызвать из другого более главного файла.
Скачайте и разархивируйте архив:
Обязательно напишите в комментах что в архиве вирус или майнер и Вы сейчас пишите с телефона.
Код бота представлен в файле "simple_bot/simple_bot.js":
Как видим ничего сложного.
Пропишем в
данные Вашего бота, которого вы регистрировали.
Вы же его регистрировали?
Да?
А кому и зачем я эту портянку пишу?
Всё. Бота можно запускать через run.bat
Он должен отвечать тем что Вы ему написали в ЛС или в комментариях
Как это работает?
NodeJS запускает функцию Simple_bot.init в котором создается объект бота.
В конструкторе Simple_Bot выполняется код функции main
Мы создаем собственный объект DTF_API, который будет отвечать за работу с API
Авторизуемся:
Выполняется функция auth.
При удачной авторизации мы получаем access_token - ключ который необходим для работы с API. Ключ позволит Вам создавать посты, комментарии, получать информацию о пользователях и т.п.
Кстати когда будете это тестировать, Вы будете часто логинится и получать 429 ошибку. \_(ツ)_/¯ Будьте к этому морально готовы.
Идём далее. Нам надо как-то получать данные с сайта.
Подключаем веб-сокеты:
ВАЖНО! Библиотека "socket.io-client" для работы с веб-сокетами должна быть 2.x.x версии. На текущий день - 2.5.0
ws-sio.dtf.ru не работает с 3.x.x !
Подписываться мы можем на различные события сайта: о новых постах, комментах. Но если нам необходимы события связанные с ботом, например событие когда что-то ему написали, то необходимы специальные юзер-хэши - временные ключи получаемые по API
Подписываемся на нужные каналы веб-сокета
Привязываем все приходящие события веб-сокета к нашей функции которая будет отвечать за логику бота:
Собственно начинаем смотреть логику работы бота.
Веб-сокет присылает объект event. Внимательно изучите что он присылает
В зависимости от типа события мы получаем либо текст комментария
Либо текст сообщения в ЛС
Отвечаем пользователю:
Полное описание API можно найти здесь