簡體   English   中英

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 也將返回存在數據。
  • 添加一個 if 語句來控制成員是否存在,這樣您就不會再次遇到相同的錯誤。
  • 我不知道你是否對此有異議,但是如果一個成員有多個存在並且陣列中的第一個存在不是 Roblox,但是例如陣列中的第二個存在是 Roblox,則該成員不會被禁止.

我希望這對你有幫助,如果你有任何問題,請聯系我 Discord ~ Iliannnn#0001

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM