Discord.js 向另一个频道发送消息

Posted

技术标签:

【中文标题】Discord.js 向另一个频道发送消息【英文标题】:Discord.js Sending a message to another channel 【发布时间】:2021-02-06 23:22:29 【问题描述】:

我目前有一个工作脚本,它根据发布者输入的参数分配角色。 我想要做的是让机器人向本地频道发送一条消息,以便发布者知道它有效,然后向另一个频道发送另一条消息,欢迎将角色获得服务器的用户。这就是我所拥有的:

const  client  = require('../main.js');


module.exports = 
    name: 'roles',
    description: "This is the command to give new recruits their role!",
    args: true,
    usage: '<department> <@user>',
    execute(message, args)

        //variables are defined here

        const channel = client.channels.cache.get('the channel id');
        message.delete(); //This deletes the posters command message

        if (!message.mentions.users.size)
            return message.channel.send('Please make sure to tag someone!');
             
        else if(args[0] === 'bcso')
            user.roles.add(bcso);
            user.roles.add(member);
            user.roles.add(whitelist)
            user.roles.remove(leoR);
            message.channel.send(`$user is now a full member of the BCSO`);
            channel.send('Message goes here');
        
   //rest of my code

但我在控制台中遇到的错误是:“TypeError: Cannot read property 'channels' of undefined”

只是为了确认我设置了一个高级代码处理程序,因此该代码位于其自己文件中的命令文件夹内。

想法?

【问题讨论】:

尝试将客户端作为execute() 参数传递并以这种方式引用它,而不是从另一个文件中导入它 @Elitezen 所以把它和另外两个一起添加?那么execute(message, args, client) ? 是的,只要确保所有文件中的参数顺序相同 我必须将它添加到甚至不引用它的命令文件中吗? 是的,所有参数的顺序和大小都应该相同 【参考方案1】:

您导入的client 似乎没有定义。可能是因为您没有在main.js 文件中正确导出它。

幸运的是,您只需使用该消息即可找到频道。为此,您需要将 client.channels.cache.get('the channel id'); 更改为 message.client.channels.cache.get('ID HERE');

【讨论】:

我很确定我试过了,而且我很确定它没有出错,但它也没有发布消息。我知道身份证是对的。我唯一能想到的是频道名称使用不和谐字体来更改字体,这会导致在消息中标记它的问题,但在将它们作为嵌入消息中的 ID 时,我从来没有遇到过问题。 您可以发送console.log(channel) 看看您的频道是否真的被找到了吗? 没想到。我会试试,让你知道 我一定是第一次搞砸了,因为它起作用了。谢谢!

以上是关于Discord.js 向另一个频道发送消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 discord.js 在第一个频道发送消息

检查用户是不是可以在提到的频道 discord.js 中发送消息

如何在 discord.js 中同时向不同频道发送消息?

Discord.js 机器人无法向特定频道发送消息

如何查找机器人在特定频道中发送的消息? [discord.js]

Discord.js 尝试在用户加入语音频道时发送消息