不和谐.JS |如何使用 **channel.client** 功能而不显示机器人客户端信息?

Posted

技术标签:

【中文标题】不和谐.JS |如何使用 **channel.client** 功能而不显示机器人客户端信息?【英文标题】:Discord.JS | How to use the **channel.client** function without it bringing up the bot client information? 【发布时间】:2020-03-20 02:46:40 【问题描述】:

我正在尝试在我的机器人上使用 Discord.js 上的 ChannelUpdate 事件,当频道更新时,我会记录频道的旧信息,例如名称、ID、类型、创建者等. 然后我记录了频道的更新信息。其他一切都很好,但是当我尝试使用 channel.client.user.username 来获取频道的创建者时,它最终会显示机器人的用户名。我该如何解决?代码如下。

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.on('ready', () => 

    console.log(`$bot.user.username is now online!`)
);

// Channel Update Event ---

bot.on('channelUpdate', oldChannel => 

    console.log(`$oldChannel.name has been updated in $oldChannel.guild.name the info for the channel is below:`);
    console.log(`Channel Name Before: $oldChannel.name`);
    console.log(`Channel ID Before: $oldChannel.id`);
    console.log(`Channel Creator Before: $oldChannel.client.user.username`);
    console.log(`Channel Type Before: $oldChannel.type`);
    console.log(`Channel Creation Date Before: $oldChannel.createdAt`);

    console.log(`Channel Name Now: $channel.name`);
    console.log(`Channel ID Now: $channel.id`);
    console.log(`Channel Creator Now: $guild.channel.client.user`);
    console.log(`Channel Type Now: $channel.type`);
    console.log(`Channel Creation Date Now: $channel.createdAt`);
);

【问题讨论】:

【参考方案1】:

就我而言,任何东西上的 client 属性只会调出您自己的机器人客户端,因为它是 bot 的客户端与 Discord 通信以检索诸如频道和行会。最重要的是,访问任何其他用户的客户端太危险了(想象一下通过访问他们的client.token 可以做什么)。

对于您这里的情况,您可以通过获取公会的审核日志来找出谁更新了频道来做一些事情。 Here 是有关 Guild.fetchAuditLogs() 的文档的链接。

【讨论】:

我没有这样想,但你完全正确。也感谢您提供有用的链接。【参考方案2】:

文档说您需要 oldChannel AND newChannel。

client.on("channelUpdate", async (oldChannel, newChannel) =>  

    console.log(`$oldChannel.name has been updated in $oldChannel.guild.name the info for the channel is below:`);
    console.log(`Channel Name Before: $oldChannel.name`);
    console.log(`Channel ID Before: $oldChannel.id`);
    console.log(`Channel Creator Before: $oldChannel.client.user.username`);
    console.log(`Channel Type Before: $oldChannel.type`);
    console.log(`Channel Creation Date Before: $oldChannel.createdAt`);

    console.log(`Channel Name Now: $newChannel.name`);
    console.log(`Channel ID Now: $newChannel.id`);
    console.log(`Channel Creator Now: $newChannel.guild.channel.client.user`);
    console.log(`Channel Type Now: $newChannel.type`);
    console.log(`Channel Creation Date Now: $newChannel.createdAt`);

);

这应该是您要查找的信息。

【讨论】:

以上是关于不和谐.JS |如何使用 **channel.client** 功能而不显示机器人客户端信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 YTDL 和 discordjs/voice 包流式传输音乐。不和谐JS

不和谐.JS |如何使用 **channel.client** 功能而不显示机器人客户端信息?

如何使用机器人删除不和谐的消息,但只能使用特殊角色 node.js

如何在不和谐的服务器(js)中删除所有频道

如何将不和谐消息发送到另一个频道? (不和谐 JS)

如何让 discord bot 等待回复 5 分钟然后发送消息?使用不和谐的 js