使用 discord.js 进行消息传递

3
我想知道如何在#channel1中输入命令,让Discord机器人发送消息(并计划在将来清除它),并且在#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' 属性 在客户端。


很抱歉,Rafael Duarte的回答没有帮助。顶一下。 - Ron Shloosh
你正在尝试在一个新初始化的类中找到一个通道吗? - Steam gamer
2个回答

2

我认为你在 msg.channel2.send("hey") 处犯了一个错误,应该改为 channel2.send("hey"),此外,正如Kareem所提到的,你不应该初始化一个新的Guild对象,而应该使用消息中的那个。

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); 

我已经更新了我的回答,你不应该初始化一个新的 Guild 对象,而是需要使用与消息相关联的那个对象。 - Rafael Duarte

1

正如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); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接