不和谐.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** 功能而不显示机器人客户端信息?