Подключение WAX ExpressTrade к своему сайту

В данной инструкции мы будем использовать:
- NodeJS
- npm
- Документация trade.opskins.com
- Модуль opskins-trade-manager
- Родительский модуль opskins-trade-interface
Также, данная инструкция подразумевает, что вы знакомы с терминологией разработки gambling проектов под Steam Web API.
Немного о модулях
opskins-trade-manager представляет собой обертку для opskins-trade-interface, с возможностью автоматического пуллинга изменений в последних 100 трейдофферах, а также со своей иерархией классов и методов. Больше всего он как раз подходит под обработку трейд офферов, а остальные методы trade-opskins-api реализованы в чистом виде в opskins-trade-interfacе.
Создание аккаунта бота
Естественно, для подключения ExpressTrade нам понадобится аккаунт Opskins для бота, его можно зарегистрировать по ссылке.

После того, как мы зарегистрировали аккаунт, нам понадобится подключить двух-факторную аутентификацию, а в дальнейшем получить apikey для работы с API Opskins. Не забудьте сохранить секретный ключ двух-факторной аутентификации, иначе вы не сможете совершать обмены автоматически.
Также, не стоит забывать про трейд-ссылку. Если депозит на ваш сайт будет осуществляться через нее, то стоит сгенерировать ее на странице настроек. Настоятельно рекомендую включить опцию “Allow Two Factor Code Reuse for Sending & Accepting Offers”, иначе вы сможете отправлять только 1 трейд раз в 30 секунд.

Кстати, а помните как нам нужно было создавать множество аккаунтов Steam, чтобы уместить больше 1000 вещей CSGO? Так вот, теперь это — в прошлом! В ExpressTrade аккаунта Opskins можно хранить неограничное количество вещей!
Пример использования opskins-trade-manager
Рассмотрим небольшой пример для большего понимания.
Создав нашего бота и залив на него, скажем, 100 предметов, мы хотим сделать раздачу вещей в нашей группе ВК (Facebook, Steam, тд. )! Пользователи оставляют в комментариях свои трейд ссылки и первые 100 получат по одной вещи.
Собственно, код:
Рассмотрим пошагово что происходит в коде:
- Загружается инвентарь бота методом IUser/GetInventory с параметром app_id = 1 (VGO) и RECURSIVE = true (позволяет загрузить весь инвентарь, а не только первые 100 предметов)
- Выбирается случайная вещь из всего списка
- К трейду прикрепляется сообщение “Привет, ты выиграл в раздаче вещей!”
- Все параметры подаются на метод ITrade/SendOffer и трейд отправляется
Легко и просто.
Методы ввода/вывода вещей
Как мы знаем, на сайтах-гэмблингах есть 2 классических способа депозита вещей на сайт:
- Через трейд-ссылку. Вещи напрямую отправляются под трейд-ссылке на аккаунт вашего бота на Opskins.
- Посредством отправки трейда пользователю по его трейд-ссылке (или без нее).
Ну, а вывод уже возможен только путем отправки трейда пользователю. Я лично рекомендую использовать второй способ, так как он позволяет кастомизировать окно депозита, добавив суммирование цен вещей и тд. Однако, для наглядности, в данной инструкции мы будем использовать первый способ.
Депозит
И так, наконец, приступим непосредственно к кодингу. Начнем, очевидно, с депозита вещей на сайт. Как мы помним, юзер сам переходит по трейд ссылке нашего бота и отправляет трейд, а нам лишь нужно его обработать и принять либо отклонить.
Инициализируем класс Manager:
Создаем Listener на Event “offer_new_received”, обрабатываем трейд и принимаем его:
Не забываем сохранить id полученных предметов, чтобы в дальнейшем их можно было включить в трейд на вывод. Кстати, id не изменяется в процессе обмена, нежели в Steam, что очень удобно!
Описание объекта offer доступно в документации Opskins ExpressTrade.
Вывод
Для вывода нам потребуется освоить метод ITrade/SendOfferToSteamId или метод ITrade/SendOffer. Первый позволяет отправлять трейды по SteamId пользователя, который вы могли получить при его авторизации через Steam. Второй же требует uid и token из трейд-ссылки пользователя и используется, обычно, в случаях, если пользователь сделал профиль приватным в настройках ExpressTrade.
Пример вывода вещей на steam_id:
Получение инвентаря и цен на предметы
Помните как сложно было найти хороший парсер цен без накрученных предметов? Так вот, теперь это в прошлом! Opskins сам для вас выдает рекомендуемые цены предметов и сразу включает их при загрузке инвентаря. Однако, загрузка инвентаря усложнилась по сравнению с Steam. Теперь предметы разбиты по 100 штук на страницу, то есть, для инвентаря в 1353 вещей нужно будет сделать 14 (!!!) запросов. Для начинающих разработчиков это может вызвать массу вопросов, поэтому в модуле opskins-trade-manager (и родительском opskins-trade-interface) предусмотрена опция RECURSIVE со значением true или false. При true, модуль автоматически загружает все имеющиеся страницы, однако, это может занять некоторое время. Я лично рекомендую реализовать обычную пагинацию, чтобы лишний раз не заставлять пользователя долго ждать загрузки.
Загрузка инвентаря с помощью opskins-trade-manager методом ITrade/GetUserInventoryFromSteamId:
inventory будет массивом вещей.
Итог
И так, мы научились базовым вещам при работе с WAX ExpressTrade.
Весь код данной инструкции можно найти по ссылке, а также он представлен ниже:
Очень рекомендую ознакомиться полностью с документацией, а также внести свой вклад в развитие opskins-trade-manager и opskins-trade-interface, что поможет вам больше разобраться в trade-opskins-api.