Discord Bot Node JS简单错误.send

时间:2017-08-19 14:56:48

标签: javascript discord

在学习本教程时,我遇到了一个奇怪的问题。构建一个JS Discord bot,实际上只有33行,并且它的抛出错误是关于.send未定义的。我已经google了一下,我找不到任何有助于更接近解决问题的方法。

const fs = require("fs");
const Discord = require("discord.js");
const client = new Discord.Client();
const config = require("./config.json");

client.login(config.token);

client.on("ready", () => {
  client.user.setGame(`on ${client.guilds.size} servers`);
  console.log(`Ready to serve on ${client.guilds.size} servers, for ${client.users.size} users.`);
});

client.on("guildMemberAdd", (member) => {
    console.log(`New User ${member.user.username} has joined ${member.guild.name}` );
    member.guild.defaultChannel.send(`${member.user} has joined this server`);
});

client.on("message", (message) => {

    if (!message.content.startsWith(config.prefix) || message.author.bot) return;

    if (message.content.startsWith(config.prefix + "ping")) {
        message.channel.send("pong!");
    } else

    if (message.content.startsWith(config.prefix + "foo")) {
        message.channel.send("bar!");
    }
});

  client.on("error", (e) => console.error(e));
  client.on("warn", (e) => console.warn(e));
  client.on("debug", (e) => console.info(e));

运行时,console.log可以毫不费力地运行,但是默认通道的消息会在PowerShell中引发以下错误

C:\Users\super\Desktop\autoslap\mybot.js:18
        member.guild.defaultChannel.send(`${member.user} has joined this server`);
                                   ^

TypeError: Cannot read property 'send' of undefined

任何帮助都会受到赞赏,对可能是如此简单的东西感到沮丧。

2 个答案:

答案 0 :(得分:1)

我知道这是一个迟到的回复,你可能已经知道如何做到这一点,但我仍然会向那些可能需要帮助的人解释。

  

截至2017年8月3日,公会中没有更多默认频道   龃龉。 #general默认频道可以删除,并且   guild.defaultChannel属性不再有效 - 来自   https://anidiots.guide/frequently-asked-questions.html

如果您想要替代方案,https://anidiots.guide/frequently-asked-questions.html中的代码可以解决问题。只需进入网站并向下滚动,直到看到默认频道!

如果您的机器人有管理员权限,那么它的第一个可写通道"是顶部的那个。它可以是任何频道,所以如果他们的默认频道被删除,你可能会惹恼很多人。

希望这有帮助!

  

答案 1 :(得分:0)

如果删除了服务器的默认频道,您将收到该错误。以前,您无法删除默认频道,但现在可以。确定,制作一台新服务器并在那里试用。