【发布时间】:2021-10-11 17:50:10
【问题描述】:
我正在为我的不和谐服务器开发一个封禁上诉系统,当一个帐户被封禁时,无论是通过命令还是通过模组手动封禁,它都会向用户发送消息(如果可以的话)让他们知道他们可以对禁令提出上诉。然后,这将由我自己进行审核,并且仅由我自己进行审核,然后如果我觉得我应该这样做,我将解禁。 (我知道每个有封禁权限的人都可以解封,但我应该能够相信他们不会,因为我选择了他们作为我的模组)。
使用这里的文档:https://discord.js.org/#/docs/main/stable/class/GuildBan 来查看我可以使用的GuildBan 类型有什么,我专门查看.user 属性,因为我可以使用用户的.send 属性来发送消息给那个用户。
但是,在执行此代码后,我收到错误:
(node:435) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'send' of undefined
我很困惑,自然,因为我直接从 GuildBan 类型获取用户,我应该能够使用 .send 方法发送消息。
我尝试看看为什么会出现这种情况,我的代码中的参数ban 似乎只返回公会属性,没有别的。
最后是我的活动代码:
client.on("guildBanAdd", async (ban) => {
console.log(ban);
console.log(await ban.fetch()); // these both return only guild objects
ban.user.send("You have been banned from my discord server, you can submit a ban request here using the format provided: \n\n ```BAN APPEAL:\nReason:```");
});
总之,我使用文档来编写我的代码,由于某种原因,ban 参数只包含一个公会对象,文档说它应该包括用户对象以及其他一些对象。这意味着当用户被禁止时,我无法向用户发送 DM。
顺便说一句,我使用的是 discord.js 版本 12.5.3
是什么导致了这个问题,您能否给出一个可能的解决方法?
【问题讨论】:
-
您使用的是哪个版本的
discord.js? -
@PerplexingParadox 12.5.3(作为包双重检查,json 说 ^12.5.3,我认为它实际上是 13.0.0)
-
你可能需要做
await ban.user.fetch() -
@MrMythical 我刚试过这个,谢谢你的建议,但不幸的是它仍然说用户未定义
标签: discord.js