【问题标题】:discord.js - Removing role from player - Errordiscord.js - 从玩家中删除角色 - 错误
【发布时间】:2023-01-29 12:53:16
【问题描述】:

我有一个玩家表,如果玩家的 is_deleted 为 1,则应从他那里删除该角色,我使用下面的代码执行此操作,但似乎不起作用,所以我的问题是:这个错误是关于什么的?

错误

member.roles.remove(role);
       ^

TypeError: Cannot read properties of undefined (reading 'roles')

代码

conec.query("SELECT players.user_discord_id, teams.discord_group_id FROM players RIGHT JOIN teams ON players.team_id=teams.id WHERE players.is_deleted=1", async function (err, result, fields) {
    if (err) throw err;
        
    for (const item of result) {
        user = item.user_discord_id;
        role = item.discord_group_id;

        guild = client.guilds.cache.get(targetGuild);
        member = guild.members.cache.get(user);

        member.roles.remove(role);
        console.log("removed role " + role + " from " + user);
        }
    })

【问题讨论】:

  • 你如何存储user_discord_iddiscord_group_id?作为字符串还是数字?
  • user_discord_id 是完整的标签 -> 例如Name#1234 -> 存储为 varchar 所以是一个字符串。 discord_group_id 也存储为 varchar 所以一个 String
  • 哦,我明白了,所以这实际上不是用户的 ID,而是他们的标签。您应该存储他们的 ID。如果您无法更改它,则可以获取所有成员并遍历它们以找到具有您保存在数据库中的标签的成员。

标签: javascript discord.js


【解决方案1】:

这意味着“成员”变量具有空值。所以你不能访问空值的属性。

尝试改变

member = guild.members.cache.get(user);

member = await guild.members.fetch(user);

也许用户不存在于您的缓存中,或者您不希望该函数返回数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2020-11-03
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多