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

discord.js 如何使机器人进入网站 api 并发送回网站所说的任何内容

如何使 discord.js 机器人在另一个频道中重复给它的消息?

当我们提到(@)机器人时,如何使 Discord.js 机器人响应本地图片?

discord.js guildCreate.js 事件未触发

Discord.js票务系统错误发送未定义错误