DiscordJS v13 发送到特定频道

DiscordJS v13 send to specific channel

所以我正在尝试将嵌入发送到与用作日志通道的命令不同的通道,但是我尝试了几种不同的方法,但是我现在所处的位置是我得到的错误是 qChann.send is not a function 它在 .send 部分大喊大叫。

这是 index.js 中引用的部分 是的,我知道从主文件中引用和导出是不好的做法,但我迫切需要解决方案

client.on('ready', async () => {
    console.log('Online');

    const qChann = client.channels.cache.get('960425106964885535');

    console.log(qChann);
})

第二部分在命令文件调用中deposit.js 它使用 2 部分收集器 忽略来自 express 的日期和时间内容 我也在使用 mongoDB 并且它完全可以正常工作,尽管最后一个小声明让我很困难 qChann.send({embed: steelEmbed}); qChann 也包含在 const qChann = require('../index');

if (collected.content.toLowerCase() === 'steel') {
                message.reply('Enter the amount youd like to deposit');
                collector.stop('user entered steel');

                const steelCollector = message.channel.createMessageCollector({
                    filter,
                    max: 1,
                    time: 1000 * 20,
                  });
                
                steelCollector.on('collect', async (collected) => {
                    const steelAmount = collected.content;

                    await steelSchema.findOneAndUpdate({
                        $inc: {
                            steel: +steelAmount,
                        }
                    })
                 
                    steelNewCount = await steelSchema.findOne({steelSchema}, {_id: 0});
                    
                    const steelEmbed = new MessageEmbed()
                    .setColor('#4278f5')
                    .setTitle(`Ammo11 Stash Update`)
                    .setDescription(`Steel Count Updated`)
                    .addField(`Stash Updated`, `by <@${message.author.id}>`, true)
                    .addField(`Date Log`, `${date} / ${month} / ${year}`, true)
                    .addField(`Steel Deposited`, `${steelAmount}`, true)
                    .addField(`New Steel Count`, `${steelNewCount}`, true )
                    .setTimestamp()
                    .setFooter({text:'THIS MESSAGE IS NOT TO BE DELETED'});
                    
                qChann.send({embed: steelEmbed});

                })
                
                
                
          }

您需要定义通道然后导出它。你没有导出,所以你不能从另一个文件中获取它。

// outside of events

const qChann = client.channels.cache.get("960425106964885535")
module.exports = { qChann }

在您的主文件上进行此编辑后,您可以通过在命令文件中使用 require 导入来访问您的频道。