Как бот discord может получить миниатюру игры, в которую пользователь играет в данный момент?

#discord.js

Вопрос:

Я пытаюсь написать простого бота Раздора с помощью discord.js (приложение nodejs), которое будет отслеживать игровое время пользователей. Я также хочу отправить встроенное сообщение на каналы, как только пользователь прекратит играть в игру.

Я использую событие «presenceUpdate» для всей этой логики и смог получить название игры, а также отправить сообщение в чат. Однако я также хочу отобразить миниатюру игры в сообщении, но, к сожалению, я понятия не имею, как найти эту миниатюру.

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

 const user = newPresence.user;
const activities = activityDiff(oldPresnece, newPresence);

activities.forEach(activity => {
    const playTime = getPlayTime(activity);
    newPresence.guild.channels.cache.filter(c => c.isText()).each(channel => {
        channel.send("Mesasge...")
    })
})
 

Внутри объекта активности я нахожу атрибут под названием applicationId, который имеет некоторое значение, но я не знаю, как его использовать. Я видел других ботов, показывающих миниатюры игр в своих сообщениях в чате, и маловероятно, что у них есть своя собственная база миниатюр и они заполняют ее парами (идентификатор приложения, миниатюра). Это так много работы, когда вокруг так много игр. Для этих миниатюр должна существовать какая-то общая база данных…

Ответ №1:

Вы можете использовать RichPresenceAssets.smallImageURL() . Вот как это реализовать:

 member.presence.activities[0].assets.smallImageURL()
 

Комментарии:

1. Мне жаль, но атрибут «активы» равен НУЛЮ. Я тестирую игру No Man Sky с помощью steam.

2. Я также пробовал игры CS:GO и киберпанк из steam, также атрибут «активы» равен нулю.