【问题标题】:How to disable sending messages to people with closed DM如何禁用向已关闭 DM 的人发送消息
【发布时间】:2020-10-07 09:56:54
【问题描述】:

所以我不想给封闭的 DM 的人发送消息。

当前代码:

message.guild.members.cache.forEach(member => {
  if (member.id !== bot.user.id && !member.user.bot);
  member.send(message);
});

【问题讨论】:

  • 在此之前,已经有一个问题了:你的分号结束了你的if 语句,没有让它保护任何东西,所以它会一直发送。
  • 我测试过,它只发送一次
  • 编写的代码将发送给每个成员,甚至是机器人。您似乎试图编写代码来跳过机器人,但 ifsend() 之前被错误地终止并且什么都不做。
  • 它工作正常,它没有向机器人发送消息,所以现在我想阻止向已关闭 dm 的人发送消息
  • 您发布的代码无法过滤掉机器人,因为它没有正确跳过发送给它们的过程。我不知道我可以说多少种方式。如果它无法发送给机器人,那只是因为他们拒绝了 DM,而您没有检查是否引发了异常,表明您的 if 不起作用。见Discord.js How to check if the user does not accept Direct Messages

标签: bots discord discord.js


【解决方案1】:

好吧,你不能检查某人是否打开了 DM,至少目前是这样。您可以做的是发送消息并在有人关闭 DM 时捕获错误。

另外,你在 if 后面加了一个分号,这基本上使 if 语句的目的无效。删除分号,它不应该发送给任何机器人。

例如:

message.guild.members.cache.forEach(member => {
  if (member.id !== bot.user.id && !member.user.bot) // remove the semicolon here
  member.send(message).catch(() => {}); // catch an error if the user has their DMs closed
});

希望这会有所帮助。

【讨论】:

  • 是的,我不知道为什么我首先添加了分号,但是是的,谢谢你的帮助,至少我可以这样做
猜你喜欢
  • 1970-01-01
  • 2022-01-11
  • 2020-06-13
  • 2021-12-03
  • 2022-08-11
  • 2020-06-12
  • 1970-01-01
  • 2013-07-11
  • 2021-03-03
相关资源
最近更新 更多