#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, также атрибут «активы» равен нулю.