【问题标题】:Discord Bot can't find channel by name or idDiscord Bot 无法按名称或 ID 找到频道
【发布时间】:2018-10-31 22:55:39
【问题描述】:

我正在尝试使用 node.js 制作一个不和谐的机器人 我只想在特定频道发布消息 我试图这样做以将通道保存在变量中,但这不起作用:

const Discord = require('discord.js');
const fs = require("fs");

var bot = new Discord.Client();
var myToken = 'NDQ2OTQ1...................................................';
//client.msg = require ("./char.json");

var prefix = ("/");

//let preset = JSON.parse(fs.readFileSync('preset.json', 'utf8')); // This calls the JSON file.


var offTopic = bot.channels.find("id","448400100591403024"); //.get("448392061415325697");
console.log(offTopic);

每当我运行我的机器人时,它都会用 find 返回“null”,用 get 返回“undefined”。 我在互联网上搜索帮助,即使我关注这篇文章,我的代码也不起作用:Discord Bot Can't Get Channel by Name 我也尝试按名称查找我的频道,但我也得到了“未定义”:/

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:
        bot.on('ready', (message) => {
            var offTopic = client.channels.cache.get("448400100591403024")
            console.log(offTopic)
        })
    

    【讨论】:

      【解决方案2】:

      您从客户端检索信息的方式在 discordjs v12 中发生了变化,如果信息已被缓存,则适用。

      var offTopic = bot.channels.cache.get('448400100591403024'); //.get('448392061415325697');
      console.log(offTopic);
      

      如果信息未缓存,则需要使用 Taylan 建议的 fetch 方法。此方法使用 Discord API 通过 ID 获取 Discord 对象。

      client.channels.fetch('448400100591403024')
        .then(channel => console.log(channel.name));
      

      您可以阅读有关 discordjs v12 here 带来的更改的更多信息

      【讨论】:

        【解决方案3】:

        似乎新版本的库使用.fetch 而不是.get 并返回一个承诺:

        const Discord = require('discord.js');
        const client = new Discord.Client();
        
        client.on('ready', () => {
          client.channels.fetch('448400100591403024')
            .then(channel => console.log(channel.name));
        });
        

        【讨论】:

          【解决方案4】:

          确保您已将“查找”行放置在事件侦听器中。 例如,假设您想在机器人连接成功时找到特定频道:

          bot.on('ready', () => {
              console.log(`Logged in as ${bot.user.tag}!`);
              var offTopic = bot.channels.get("448400100591403024");
              console.log(offTopic);
          });
          

          当然,有大量可用的事件侦听器,它们将适合您要查找频道的场景。您将在Events section of the Client Class in the DiscordJS docs. 中找到事件侦听器 试试这个,让我知道它是否有效。

          【讨论】:

          • 你应该在这里使用.get
          • 我使用完全相同的代码,但我收到错误“bot.channels.get 不是函数”
          猜你喜欢
          • 2017-05-21
          • 2020-02-16
          • 2021-06-28
          • 1970-01-01
          • 2021-11-10
          • 2019-05-05
          • 2021-03-26
          • 2018-02-15
          • 2021-04-11
          相关资源
          最近更新 更多