Обмен сообщениями с discord.js - PullRequest
3 голосов
/ 23 сентября 2019

Я пытаюсь выяснить, как я могу набрать команду в #channel1 и сделать так, чтобы discord bot отправил сообщение (и планировал в будущем, чтобы оно также было ясно) в #channel2

Это мой код:

const Discord = require('discord.js');
Bot = new Discord.Client();
gbot = new Discord.Guild();
const token = '....';
bot.on('message', msg =>{
    if(msg.content === 'Hello'){
        var channel2 = 
        gbot.channels.find(val => 
        val.name === "channel2")             
        msg.channel2.send("hey");
    }
}
bot.login(token); 

Это ошибка, которую я получаю:

Невозможно прочитать свойство 'send' of undefined at Client.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Я думаю, что у вас ошибка на msg.channel2.send("hey"), это должно быть channel2.send("hey"), также, как упоминал Карим, вы не должны инициализировать новый объект Гильдии, вы должны использовать тот, который является частью сообщения.

const Discord = require('discord.js');
bot = new Discord.Client();
const token = '....';
bot.on('message', msg =>{
    if(msg.content === 'Hello'){           
        var channel2 =  
        msg.guild.channels.find(val => 
        val.name === "channel2");          
        channel2.send("hey");
    }
}
bot.login(token); 
1 голос
/ 24 сентября 2019

Как Rafeal сказал, что вы хотите использовать channel2.send(), кроме того, способ, которым вы получаете канал, немного странный.Кажется, вы создаете новую гильдию вместо того, чтобы получить ту, откуда было отправлено сообщение.Вы можете найти это в объекте сообщения.

Попробуйте вместо этого код.

const Discord = require('discord.js');
const bot = new Discord.Client();
const token = '....';
bot.on('message', msg =>{
    if(msg.content === 'Hello'){
        var channel2 = 
        msg.guild.channels.find(val => 
        val.name === "channel2")             
        channel2.send("hey");
    }
}
bot.login(token); 
...