Node.js Discord Bot : TypeError: Cannot read property 'message' of undefined
Node.js Discord Bot : TypeError: Cannot read property 'message' of undefined
我仍在学习 discord.js 但我正在努力将不和谐消息发送功能从一个 .js 文件传递到另一个文件。下面我把复杂的东西都去掉了,只留下了准系统,希望有人能理解它,并提供指导!
这个想法是,(最终)当 'true'
上有新更新时,它会向所有不和谐服务器发送消息 'hello world'。现在出于调试目的,我使用我的开发人员不和谐频道获得它。
一切都是 运行 通过 nf run npm start
Hello.js
const Discord = require('discord.js');
const client = new Discord.Client();
const disconfig = require("./config/default.json");
// new function
function message(message) {
const messageInfoEmbed = new Discord.RichEmbed()
.addField('Hey:')
.addField('Testing: ')
.addField('NoWorries: ')
return messageInfoEmbed
}
// Function OnUpdate() {
// if (updatedcontent === true) {
exports.wrapper = async(client, message) => {
client.channels.get("519344197078220804").send(message(message));
}
//}
//}
Server.js
const Discord = require('discord.js')
const client = new Discord.Client()
const disconfig = require("./config/default.json");
client.on("ready", () => {
client.user.setActivity(`Serving ${client.guilds.size} servers`);
var sayHello = require('./hello');
sayHello.wrapper(); // "Hello World! Message via Discord"
});
client.on("message", async(message) => {
if (message.author.bot) return;
if (message.content.indexOf(disconfig.prefix) !== 0) return;
const args =
message.content.slice(disconfig.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
if (command === "test?") {
}
}
client.login(disconfig.token);
错误
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'channels' of undefined
at Object.exports.wrapper (X:\xxx\xxx\xxx\xxx\app\hello.js:20:8)
在 JavaScript(以及几乎所有其他编程语言)中,内部作用域中的变量声明影子(认为覆盖)外部作用域中具有相同名称的声明:
var foo = 3;
var bar = 5;
var f = (foo) => {
var bar = 1;
return [foo, bar];
};
var results = f(0);
console.log(results); // [0, 1]
N.B。你没有得到 [3, 5]
。所以在你的代码中:
exports.wrapper = async(client, message) => {
表示该函数希望传入客户端。该参数声明隐藏了在文件顶部定义的客户端(这意味着它在函数内部是不可见的)。所以当你像这样在另一个文件中调用它时
sayHello.wrapper();
没有参数,kaboom。
改用message.guild
。应该可以。
我仍在学习 discord.js 但我正在努力将不和谐消息发送功能从一个 .js 文件传递到另一个文件。下面我把复杂的东西都去掉了,只留下了准系统,希望有人能理解它,并提供指导!
这个想法是,(最终)当 'true'
上有新更新时,它会向所有不和谐服务器发送消息 'hello world'。现在出于调试目的,我使用我的开发人员不和谐频道获得它。
一切都是 运行 通过 nf run npm start
Hello.js
const Discord = require('discord.js');
const client = new Discord.Client();
const disconfig = require("./config/default.json");
// new function
function message(message) {
const messageInfoEmbed = new Discord.RichEmbed()
.addField('Hey:')
.addField('Testing: ')
.addField('NoWorries: ')
return messageInfoEmbed
}
// Function OnUpdate() {
// if (updatedcontent === true) {
exports.wrapper = async(client, message) => {
client.channels.get("519344197078220804").send(message(message));
}
//}
//}
Server.js
const Discord = require('discord.js')
const client = new Discord.Client()
const disconfig = require("./config/default.json");
client.on("ready", () => {
client.user.setActivity(`Serving ${client.guilds.size} servers`);
var sayHello = require('./hello');
sayHello.wrapper(); // "Hello World! Message via Discord"
});
client.on("message", async(message) => {
if (message.author.bot) return;
if (message.content.indexOf(disconfig.prefix) !== 0) return;
const args =
message.content.slice(disconfig.prefix.length).trim().split(/ +/g);
const command = args.shift().toLowerCase();
if (command === "test?") {
}
}
client.login(disconfig.token);
错误
UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'channels' of undefined
at Object.exports.wrapper (X:\xxx\xxx\xxx\xxx\app\hello.js:20:8)
在 JavaScript(以及几乎所有其他编程语言)中,内部作用域中的变量声明影子(认为覆盖)外部作用域中具有相同名称的声明:
var foo = 3;
var bar = 5;
var f = (foo) => {
var bar = 1;
return [foo, bar];
};
var results = f(0);
console.log(results); // [0, 1]
N.B。你没有得到 [3, 5]
。所以在你的代码中:
exports.wrapper = async(client, message) => {
表示该函数希望传入客户端。该参数声明隐藏了在文件顶部定义的客户端(这意味着它在函数内部是不可见的)。所以当你像这样在另一个文件中调用它时
sayHello.wrapper();
没有参数,kaboom。
改用message.guild
。应该可以。