【问题标题】:DiscordJS GuildMemberRoleManager doesn't have a cacheDiscordJS GuildMemberRoleManager 没有缓存
【发布时间】:2022-01-22 08:43:37
【问题描述】:

我正在尝试查看用户是否具有 discordjs v13 的角色。我也在使用打字稿。

在多个帖子中,我看到人们使用此代码:

function handleCommand(interaction: CommandInteraction) {
...
  let isAdmin = interaction.member.roles.cache.some(role => role.name === 'Admin')
...

This is an example

但是,我收到一个错误:

  Property 'cache' does not exist on type 'string[]'.

22   console.log(interaction.member.roles.cache.some((r) => r.name == "Admin"));
                                          ~~~~~

这样做的正确方法是什么?

【问题讨论】:

  • interaction.member.roles 被键入为字符串数组,而不是 GuildMemberRoleManager。你能展示你是如何塑造你的价值观的吗
  • 我必须手动投射它,然后它才起作用!谢谢

标签: javascript node.js discord.js


【解决方案1】:

正如 Elitezen 所指出的,interaction.member.roles 是 string[] 而不是 GuildMemberRoleManager。我手动将其转换为正确的类型,并且成功了!

  let roles = (interaction.member.roles as GuildMemberRoleManager).cache;
  let isAdmin = roles.some(
    (role) => role.name === "admin")
  );

【讨论】:

    猜你喜欢
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2011-05-26
    相关资源
    最近更新 更多