![](/img/trans.png)
[英]TypeError: Cannot read properties of undefined (reading 'path') in discord.js v13
[英]discord.js v13 TypeError: Cannot read properties of undefined (reading 'presence')
我想和我的朋友開玩笑命令禁止正在玩 Roblox 的人或者他是否具有 Roblox 游戲狀態。 如果有解決方案,我已經搜索了 inte.net 和堆棧溢出中的所有內容,但我找不到一個有效的解決方案。 這是我的代碼:
module.exports = async (client) => {
const guild = client.guilds.cache.get('877016354581004389');
if(guild){
setInterval(async () => {
if(!guild.me.permissions.has('ADMINISTRATOR')) return;
const channel = guild.channels.cache.get('877016354581004392');
if(!channel) return console.log('ANNOUNCEMENT CHANNEL NOT FOUND...')
let bannedAmount = 0;
await guild.members.fetch().then(members => {
members.forEach(member => {
for(const allMember of Object.keys(member)){
if(allMember.user.presence.activities){
const activity = allMember.user.presence.activities[0]
if(activity.name.toLowerCase() == "roblox"){
channel.send(`${allMember} got banned because he's playing ROBLOX!!`)
allMember.ban({ reason: `he played roblox lol`});
bannedAmount = bannedAmount + 1
break;
}
}
}
})
});
let members;
if(bannedAmount > 1) members = 'members';
let kid;
if(bannedAmount > 1) kid = 'kids';
if(bannedAmount <= 0 || null){
console.log(`No member banned for playing Roblox...`);
} else if(bannedAmount > 0) {
channel.send(`${bannedAmount} ${kid || 'kid'} got banned in this server for playing Roblox. Don't do it kids!`)
console.log(`${bannedAmount} ${members || 'member'} got banned for playing Roblox...`)
}
}, 20000);
}
}
我不討厭玩 Roblox 的家伙,他們只是在閑逛,哈哈
PS:我已經在 discord 開發網站和 index.js 文件中啟用了意圖,並且還使用了<member>.presence.activities
但看起來只有用戶具有存在屬性。
那么,問題是GuildMember#presence返回或Presence class OR undefined ,因為它是一個可選屬性。 您在代碼中所做的是獲取可能不存在的用戶的存在屬性,這就是為什么allMember.user.presence
返回 undefined 和allMember.user.presence.activities[0]
的原因。 另請記住,您使用成員的用戶,但在 GuildMembers 而不是用戶上存在 go。
調試:
allMember
而不是allMember.user
,這樣您就可以使用GuildMember而不是User的存在,此后具有存在的 Member 也將返回存在數據。我希望這對你有幫助,如果你有任何問題,請聯系我 Discord ~ Iliannnn#0001
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.