这是在我的 index.js 文件中。我的机器人有一个
类型错误:无法读取未定义的属性“id”
即使代码在早期工作。
流程基本上是:
- 发生消息事件
- 它获取消息出现的公会网络钩子
- 然后对于每个 webhook 它:
- 检查 webhook 的名称。
- 检查所有者ID并查看它是否与机器人的ID相同
- 检查 webhook 是否在发送消息的位置
- 它与表情符号反应。
问题是它不知道 webhook.owner.id 是什么
我将 webhook 与其他错误的 webhook 混合在一起。
我的代码要么什么都不做,要么在控制台中出现错误。
稍微改变一下 if() 语句。有时会发生错误或什么也没有发生。
添加和删除!在里面webhook.owner.id
doopliss.on('message', async (message) => {
const webhooks = await message.guild.fetchWebhooks();
await webhooks.forEach(async webhook => {
if(message.author.id == doopliss.user.id)
return //checks if author is me(bot)
else if(message.author.bot)
return //checks if author is a bot
else if(webhook.name == `Marker`)
return //checks if webhook name is "Marker"
else if(webhook.owner.id !== doopliss.user.id)
return //checks if the webhook owner id equals the bot's id
else if(message.channel.id == webhook.channelID)
return //checks if the channel ID is equal to the webhook channel's ID.
else
var thisWord = ">groc";
if(!message.content.includes(thisWord))
return
else
var thatWord = ">sc";
if(!message.content.includes(thatWord))
return
else
message.react(doopliss.emojis.find(emoji => emoji.id === "596458828011405334")) //approve
.then(() => message.react(doopliss.emojis.find(emoji => emoji.id === "596458827994497024"))) //deny
.catch(() => console.error('One of the emojis failed to react.'));
})})
我希望输出是机器人在对每条消息做出反应之前检查所有内容,但实际结果是机器人要么什么都不做,要么在控制台中吐出一个错误。较早的 if() 语句之一必须是错误的,但我不知道是哪一个。