我正在尝试创建一个机器人,当用户通过链接加入服务器时,该机器人将被赋予角色,但这不起作用。 错误:
C:\DGhostsBot\bot.js:45
bot.on("guildMemberAdd", (member) => {
^
ReferenceError: bot is not defined
at Object.<anonymous> (C:\DGhostsBot\bot.js:45:1)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)
我的代码在这里:
const Discord = require('discord.js');
const client = new Discord.Client();
var prefix = "dg!"
client.login(`**************************************************************`);
client.on("message", (message) => {
if(message.content == prefix + "test") {
message.reply("just a command that is used for performance testing. Do not pay attention.");
}
});
client.on("message", (message) => {
if(message.content == prefix + "cake") {
message.reply("here's your cake :3 :cake: ");
}
});
client.on("message", (message) => {
if(message.content == prefix + "help") {
message.reply("it's in development");
}
});
client.on("message", (message) => {
if(message.content == prefix + "kick") {
if(message.member.roles.some(r=>["Developer", "devadmin"].includes(r.name)) ) {
const user = message.mentions.users.first();
if (user) {
const member = message.guild.member(user);
if (member) {
member.kick()
}
}
} else {
message.reply("!!!!ACCESS_DENIED!!!!").then(sentMessage => sentMessage.delete("delete"));
}
}
});
bot.on("guildMemberAdd", (member) => {
if (member.id == bot.user.id) {
return;
}
let guild = member.guild
guild.fetchInvites().then(invdat => {
invdat.forEach((invite, key, map) => {
console.log(invite.code)
if (invite.code === "qQAkqFQ") {
return member.addRole(member.guild.roles.find(role => role.name === "Member"));
}
})
})
});
我在互联网上检查了很多答案,但是所有这些都没有用。 因此,我不知道如何解决此错误。
答案 0 :(得分:0)
您必须将bot.on(...)
更改为client.on(...)
您没有在先前的代码中定义bot
,因此无法使用它。您在以下行中将Discord客户端定义为client
:
const client = new Discord.Client();
这就是为什么您必须使用客户端。您无法为不存在的客户端创建侦听器。
有关Discord.js所有事件的更多详细信息,请查看正式的discord.js文档:documentation
您还可以在其中找到有关如何收听事件等的所有详细信息。
答案 1 :(得分:0)
您可以像以前一样使用bot
来代替client
。
有些人做const client = new Discord.Client();
,但也有人把它命名为bot
甚至是很奇怪的东西。
如果您想学习如何制作自己的机器人,可以使用discord.js
的成员和创建者创建的开源指南:https://discordjs.guide/