Guild is not defined

2020-08-02 16:56发布

问题:

I am currently making a discord.js bot for discord, but i'm getting the same issue all time :

ReferenceError: guild is not defined
at Client.client.on.message (C:\Users\Valentin\Documents\JsBot_dev\bot.js:27:30)
at emitOne (events.js:101:20)
at Client.emit (events.js:188:7)
at MessageCreateHandler.handle (C:\Users\Valentin\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
at WebSocketPacketManager.handle (C:\Users\Valentin\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:120:65)
at WebSocketManager.eventMessage (C:\Users\Valentin\node_modules\discord.js\src\client\websocket\WebSocketManager.js:273:31)
at WebSocket.onMessage (C:\Users\Valentin\node_modules\ws\lib\WebSocket.js:442:14)
at emitTwo (events.js:106:13)
at WebSocket.emit (events.js:191:7)
at Receiver.ontext (C:\Users\Valentin\node_modules\ws\lib\WebSocket.js:841:10)

I tried to update my discord.js and re-install node.js but nothing worked.

Thanks for the help !

The bot code :

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


const client = new Discord.Client();
myid = "your id is :"
const hook = new Discord.WebhookClient('NoIdForYou', 'NoTokenForYou');

client.on('ready', () => {
  console.log(`Logged in as ${client.user.username}!`);
});

client.on('message', message => {

  if (message.content === '-avatar') {
    message.reply(message.author.avatarURL);
  }
});
client.on('hook', hook => {
    if (message.content === '-test') {
        hook.sendMessage('Ok.')
    }
});

client.on('message', message => {
    if (message.content === '-react') {
        const emoji = guild.emojis.first();
        client.react(emoji.name.ballot_box_with_check)
    }
});



client.login('NoTokenForYou');

回答1:

const emoji = guild.emojis.first();

Take a look at this first.

guild is basically a class for what we call in discord a 'server'. But basically you only just called a server, but you did not specify which server it came from. So in fact, do
const emoji = message.guild.emojis.first();

Secondly : client.react(emoji.name.ballot_box_with_check)
Reactions are added to messages. The client is the bot itself.
message.react(/*emoji*/); would be the correct one.



回答2:

I had the same problem and i solved it downloading discord.js and not discord.io

npm install discord.js --save
                    ^
                 not .io