Discord Bot无法按名称或ID查找频道

时间:2018-05-22 08:30:45

标签: javascript node.js discord.js

我试图用node.js创建一个discord bot 我想只在特定频道发帖子 我尝试这样做是为了在变量中保存一个频道,但这不起作用:



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);




每当我运行我的机器人时,它都会返回' null'找到和' undefined'得到。 我在互联网上搜索帮助,即使我按照这篇文章发布我的代码也不起作用:Discord Bot Can't Get Channel by Name 我也试图通过名字找到我的频道,但我得到了#undefined'也是:/

3 个答案:

答案 0 :(得分:7)

该库的新版本似乎使用.fetch而不是.get,并且返回了一个Promise:

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
  client.channels.fetch('448400100591403024')
    .then(channel => console.log(channel.name));
});

答案 1 :(得分:1)

从客户端检索信息的方式在 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

答案 2 :(得分:0)

确保您已放置"发现"事件监听器中的行。 例如,假设您想在机器人成功连接时找到特定通道:

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.中找到事件监听器 试试这个,让我知道它是否有效。