【问题标题】:Can't change discord channel name无法更改不和谐频道名称
【发布时间】:2021-09-06 12:22:56
【问题描述】:

我需要更改某些语音频道的名称。 我尝试了几个示例,但没有一个对我有用。

let guild = client.guilds.cache.get('Server ID');
let channel = guild.channels.get('Channel ID');
channel.setName('MY NAME WAS CHANGED!')

错误:

未处理的拒绝类型错误:guild.channels.get 不是函数

另一个不工作的例子

client.guilds.cache.get('Server ID').channels.get('Channel ID').channels.setName("MY NAME WAS CHANGED!");

错误:

未处理的拒绝类型错误:client.guilds.cache.get(...).channels.get 不是函数

如何正确更改频道名称?

更新:我可以获得频道的当前名称,但如何更改频道名称?

  client.channels.fetch("MYID")
  .then(channel => console.log(`The channel name is: ${channel.name}`))
  .catch(console.error);

频道名称为:change-my-name

  let channel = client.channels.fetch("ID")
  channel.setName("MY NAME WAS CHANGED!")
  .then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
  .catch(console.error);

未处理的拒绝类型错误:channel.setName 不是函数

即使在获取频道后,我在文档中找到的代码也无法更改名称。

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    尝试使用 guild.channels.fetch() 而不是 guild.channels.get()。 https://discord.js.org/#/docs/main/stable/class/GuildChannelManager?scrollTo=fetch 注意 - 当它返回一个承诺时,请确保使用 await 它或使用 .then()

    【讨论】:

    • 好像是setName的问题,怎么都改不了频道的名字……
    • 更改为 .fetch() 后代码的输出是什么?另外,您使用的是哪个 discord.js 版本?
    • Unhandled rejection TypeError: channel.setName is not a function 当我使用 fetch 而不是从第一个示例中获取时。总是功能问题...我不知道出了什么问题...
    • discord.js 应该是最新版本.. 一周前我开始使用 discord APIS
    • 由于 fetch() 返回一个承诺,您需要使用 .then() 或等待它。
    【解决方案2】:
      client.channels.fetch("ID")
      .then(channel => channel.setName("NewChannelName"));
      client.channels.fetch("ID2")
      .then(channel => channel.setName("NewChannelName2"));
    

    这里是解决方案。 guild.channels.get 似乎已经过时了,这就是为什么它对我来说可能没有成功。

    使用client.channels.fetch("ID"),您可以选择 ID,然后就可以更改频道名称。 .then(channel => channel.setName("YourNewChannelName"));

    【讨论】:

      【解决方案3】:

      get 方法必须用于cache 属性。

      let channel = guild.channels.cache.get('Channel ID')
      

      然而,这仅从缓存中获取,这意味着并非所有通道都存在。使用 fetch 从 API 获取通道意味着它不必在缓存中。当心这个方法返回一个Promise,你必须把它传给await(确保它是一个异步回调!)

      let channel = await guild.channels.fetch('Channel ID')
      

      然后设置名称,在声明下写下这个

      channel.setName("name-of-channel")
      

      【讨论】:

        猜你喜欢
        • 2021-06-22
        • 1970-01-01
        • 2023-04-05
        • 2020-05-07
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2018-07-10
        • 2019-10-11
        相关资源
        最近更新 更多