Discordjs - 使用 fs.watchFile 事件创建频道

时间:2020-12-30 01:42:15

标签: javascript

我正在尝试让我的机器人在触发 fs.watchFile 事件时创建一个频道。

这是代码

const Discord = require('discord.js')
const client = new Discord.Client()
//1000 lines of code here
const banLogFile = "logs/banlist_info.log";
fs.watchFile(banLogFile, (curr, prev) => {
        fs.readFile(banLogFile, 'utf-8', (err, data) => {
            // Parsing the new line in the file.
            const banSendPubAdmin = {} //embed here, I cut the details
            const baname2 = 'br-' + banName // Name of the channel + banned player name
            guild.channels //ISSUE IS HERE
                .create(baname2, {
                    type: 'text',
                    permissionOverwrites: [
                        {
                            id: 'config.AdminRoleId',
                            allow: ['VIEW_CHANNEL']
                        },
                    ]
                })           
                .then((channelBanReview) => {
                    const categoryId = '793625324927057982'
                    channelBanReview.setParent(config.BanReviewCategoryId)
                    client.channels.cache.get(channelBanReview.id).send({ embed: banSendPubAdmin });
                })
            
        });
});
//Another 500 lines of codes here too
client.login(config.token)

我在触发事件时遇到 TypeError: Cannot read property 'create' of undefined 和其他一些类似的未定义问题。

我尝试了 .create 行的许多变体,但无济于事。

谢谢。

1 个答案:

答案 0 :(得分:0)

在我的键盘上敲了几个小时后发现了这个问题。

要创建频道,您首先需要公会信息。 绝大多数情况下,人们使用聊天命令来执行此操作,聊天命令存储消息所需的所有必要信息。

但是当创建一个没有不和谐事件的频道时,你必须定义你的公会。 我之前确实尝试过,但忘记了 sguilds

这是解决我的问题的行。

client.guilds.cache.get('Guild ID here').channels.create().then()