Я пытаюсь заставить моего супер простого бота отправить сообщение с указанием статуса пользователя. как если бы кто-то не в сети, не в сети и т. д., он автоматически отправляет сообщение на сервер о том, что произошло. Я просто работаю, чтобы он мог обновляться (я знаю, что мне нужно! статус каждый раз)
у кого-нибудь есть идея заставить его отправлять то же сообщение сразу после срабатывания presenceUpdate?
let userStatus = [];
bot.on("presenceUpdate", (oldMember, newMember) => {
let username = newMember.user.username;
let status = newMember.user.presence.status;
userStatus.push(username, status);
console.info(`${newMember.user.username} is now ${newMember.user.presence.status}`);
})
bot.on('message', (message) => {
// if (!message.content.startsWith(prefix)) return;
if (console.info())
let [username, status] = userStatus;
if (message.content.startsWith(prefix + "status")) {
let botembed = new Discord.RichEmbed()
.setDescription("Status Update")
.setColor("#FFF")
.addField('.............................................', `${username} is now ${status}`);
message.channel.send(botembed);
userStatus = [];
}
});





Проблема, с которой, как мне кажется, вы столкнулись, заключается в том, что у вас больше нет прямой ссылки на канал, поэтому вы не можете «легко» вызвать <TextChannel>.send(...). Вам нужно будет решить, на какой канал вы хотите отправить сообщение, в прослушивателе событий presenceUpdate. Как только вы решите, вы можете использовать этот код, чтобы получить ссылку на этот канал, используя name канала:
client.on('presenceUpdate', (oldMember, newMember) => {
// get a reference to all channels in the user's guild
let guildChannels = newMember.guild.channels;
// find the channel you want, based off the channel name
// -> replace '<YOUR CHANNEL NAME>' with the name of your channel
guildChannels.find('name', '<YOUR CHANNEL NAME>')
.send('test message!')
.then(msg => {
// do something else if you want
})
.catch(console.error)
});
Примечание: вам не обязательно использовать свойство name канала для идентификации уникального канала, вы можете использовать id канала, выполнив
guildChannels.get('<YOUR CHANNEL ID')
.send('...
Надеюсь это поможет!
Большое спасибо. я мало что знал, чтобы понять это.