【问题标题】:discord.js dm a user in the "guildBanAdd" eventdiscord.js 在“guildBanAdd”事件中 dm 用户
【发布时间】: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


【解决方案1】:

如果您的discord.js 版本是12.5.3,那么它在documentation 中说guildBanAdd 事件发出两个参数:guilduser(而不是1 ban,对于v13 )。您只将ban 分配给Guild,因此您只获得Guild 对象。要解决此问题,您只需输入两个参数即可:

client.on("guildBanAdd", async (guild, user) => {

【讨论】:

  • 哦,在左上角(假设您在桌面上),有一个下拉菜单,您可以在其中更改 discord.js 文档的版本。您的链接当前设置为 stable,我认为是 v13 而不是 12.5.3。
  • 好吧,这肯定已经排序了,但是现在它DiscordAPIError: Cannot send messages to this user 我的 alt 确实允许来自用户的消息,但是这可能是机器人无法访问用户的情况,因为用户不在服务器?
  • 查看question 了解有关该问题的更多信息。
  • 正如我所说,我的 alt(即 acc im 禁令)已经允许来自服务器的消息
猜你喜欢
  • 1970-01-01
  • 2022-10-01
  • 2020-09-27
  • 2021-10-26
  • 2021-10-17
  • 2021-06-12
  • 1970-01-01
  • 2021-12-31
  • 2021-05-04
相关资源
最近更新 更多