【问题标题】:discord.js - Code doesn't destroy all channels because the loop is incorrectly typed?discord.js - 代码不会破坏所有通道,因为循环输入错误?
【发布时间】:2020-11-20 08:11:11
【问题描述】:

尽管我尝试修复代码并进行研究,但我删除所有通道的命令拒绝执行,只是在命令行中打印文本。这是当前的源代码:

for (var i = 0; i < message.guild.channels;) {
message.guild.channels.delete[i];
}
console.log('all channels got deleted!');

我要问的是,i 是否输入错误? message.guild... 是否输入错误且顺序正确?是否缺少代码?循环是否正确?我一直在阅读 Discord.js 文档,但不了解 Channel 页面中的某些属性。非常感谢帮助

编辑:忘记通知我使用的是 v12

【问题讨论】:

  • 一般来说,放尽可能多的相关信息是很有用的,不仅仅是指定版本,除非它是一个众所周知的npm包,然后,指定它是一个npm很有用包,但在这种情况下,你有一个 javascript 错误,这与不和谐的实现无关,所以你的问题可以更好地描述你想要得到的答案

标签: javascript node.js discord bots discord.js


【解决方案1】:

简短的回答

1:您在for 循环中缺少i++

2:如果你在循环一个频道列表,那么你需要通过下标获取频道,并调用它的删除方法

for (let i = 0; i < message.guild.channels.length; i++) {
   message.guild.channels[i].delete();
}

尽管如此

以上所有内容只是 JavaScript 语法以及如何使用循环和数组,但从 DiscrodJs 文档来看,它看起来像 guild 对象,不包含频道列表,而是一个GuildChannelManager 哪些接缝来处理通道,但目前尚不清楚您是否可以按照您尝试的方式迭代通道,因此您也应该检查一下,您可能正在尝试做一些实际上不可能的事情

【讨论】:

    【解决方案2】:

    删除公会中所有频道的最简单方法如下:

    guild.channels.forEach(channel => channel.delete())
    

    【讨论】:

      【解决方案3】:

      你的 for 循环是错误的;你忘了在代码块执行后增加i

      for(...; i++) {
      //...
      }
      

      另外,您在 delete 方法中使用了方括号而不是括号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        相关资源
        最近更新 更多