Я хочу добавить что-то, чтобы после воспроизведения блока из API я хотел, чтобы он воспроизводил другой статус. Например, если он воспроизводит блок в течение нескольких минут, он переходит к воспроизведению чего-то вроде «привет, мир», а затем возвращается к воспроизведению блока через несколько минут. Ниже приведен код, который у меня сейчас есть:
function updateBlock() {
let response3 = axios.get(`https://google/api/getblockcount`)
.then((response3) => {
return Promise.resolve(response3);
}).catch((error) => {
console.info("Can not connect to API");
console.info(error);
return Promise.resolve({
failed: true
})
});
response3.then((response3)=> {
if (response3.failed) {
console.info("API Response Failed");
return response3;
}
let b = response3.data;
try {
Client.user.setActivity("B: " + b, { type: 'WATCHING' })
.then()
.catch(console.error);
} catch(err) {
console.info("This is an API error catch");
console.info(err);
}
});
}
Client.on("ready", () => {
console.info(botName + " online!");
updateBlock();
setInterval(() => {
updateBlock();
}, 10000);
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Предположим, вы используете библиотеку discord.js, вот как отобразить случайный элемент из массива textList, в котором также высота блока, полученная от API, меняется каждые 1 минуту.
client.on('ready', () => {
setInterval(async ()=>{
let {data: blocks} = await axios.get('https://chain.ragnaproject.io/api/getblockcount').catch(console.info)
let textList = ['Hello World','Lorem Ipsum','Discord Bots', 'Blocks: ' + blocks]
var text = textList[Math.floor(Math.random() * textList.length)];
client.user.setActivity(text , { type: 'WATCHING' })
},60000) // milliseconds
});
Не загружается, тоже пробовал редактировать}, 60000); // миллисекунды
Не может быть, я тестировал этот код на собственном боте. Есть ли ошибка в консоли?
Вы меняли его на обоих местах client.on.. и client.user.setActivity...?
Спасибо, он отлично работает, очень признателен за вашу помощь
Вы можете использовать Client.user.setActivity(): первый аргумент - это имя игры, которую вы хотите отобразить, второй - объект options. options.type определяет строку, которая стоит перед названием вашей игры: «Играю», «Наблюдаю», «Прослушивая» и «Потоковая передача». ActivityTypes соответственно:
'PLAYING'
'WATCHING'
'LISTENING'
'STREAMING'
Если вы установите 'STREAMING' как тип, вы также можете установить options.url как URL-адрес вашей прямой трансляции.
Вот пример реализации:
client.user.setActivity("your sample text", {
type: 'WATCHING'
});
// OR
client.user.setActivity("Overwatch", {
type: 'STREAMING',
url: "https://example.com"
});
Спасибо, я попробую это очень ценю