Discord.js -- 使 presenceUpdate 发送消息
Posted
技术标签:
【中文标题】Discord.js -- 使 presenceUpdate 发送消息【英文标题】:Discord.js -- make presenceUpdate send a message 【发布时间】:2018-08-25 01:56:12 【问题描述】:我试图让我的超级简单机器人发送一条说明用户状态的消息。就好像有人离线、在线等一样,它会自动向服务器发送一条消息,说明发生了这种情况。 我只是在做一个工作,以便它可以得到更新(我知道我每次都需要!status)
有人想在presenceUpdate
触发后立即发送相同的消息吗?
let userStatus = [];
bot.on("presenceUpdate", (oldMember, newMember) =>
let username = newMember.user.username;
let status = newMember.user.presence.status;
userStatus.push(username, status);
console.log(`$newMember.user.username is now $newMember.user.presence.status`);
)
bot.on('message', (message) =>
// if (!message.content.startsWith(prefix)) return;
if (console.log())
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 = [];
);
【问题讨论】:
【参考方案1】:我认为您遇到的问题是您不再直接引用频道,这就是您不能“轻松”致电<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('...
希望这会有所帮助!
【讨论】:
非常感谢。我知道的不多。以上是关于Discord.js -- 使 presenceUpdate 发送消息的主要内容,如果未能解决你的问题,请参考以下文章
discord.js 如何使机器人进入网站 api 并发送回网站所说的任何内容
如何使 discord.js 机器人在另一个频道中重复给它的消息?
当我们提到(@)机器人时,如何使 Discord.js 机器人响应本地图片?