首页 > 解决方案 > 在 v13 API 中使用 .createInvite 方法时出现空错误

问题描述

我正在使用这个基本代码让机器人生成一个到服务器的邀请链接——其中公会 ID 是我的公会 ID 的字符串:

const Guild = await client.guilds.fetch(guildId);
            
const invite = await Guild.systemChannel.createInvite({
    maxAge: 14,
    maxUses: 10,
    unique: true
});

执行此操作后,我收到错误: TypeError: Cannot read properties of null (reading 'createInvite')

我想知道是否有人可以指出我是否错误地使用了这种方法?

只是为了一些额外的信息,我的公会对象返回如下:

<ref *2> Guild {
  id: 'XXXXXXXXXX',
  name: 'NAMEHERE',
  icon: 'a_479390a16bfef56aee3c39330d4d2e3e',
  features: [
    'MEMBER_PROFILES',
    'ROLE_ICONS',
    'PRIVATE_THREADS',
    'THREE_DAY_THREAD_ARCHIVE',
    'SEVEN_DAY_THREAD_ARCHIVE',
    'INVITE_SPLASH',
    'BANNER',
    'ANIMATED_ICON'
  ],
  commands: <ref *1> GuildApplicationCommandManager {
    permissions: ApplicationCommandPermissionsManager {
      manager: [Circular *1],
      guild: [Circular *2],
      guildId: 'CENSORED',
      commandId: null
    },
    guild: [Circular *2]
  },
  members: GuildMemberManager { guild: [Circular *2] },
  channels: GuildChannelManager { guild: [Circular *2] },
  bans: GuildBanManager { guild: [Circular *2] },
  roles: RoleManager { guild: [Circular *2] },
  presences: PresenceManager {},
  voiceStates: VoiceStateManager { guild: [Circular *2] },
  stageInstances: StageInstanceManager { guild: [Circular *2] },
  invites: GuildInviteManager { guild: [Circular *2] },
  deleted: false,
  available: true,
  shardId: 0,
  splash: '53c57d1053959d572635640ef34aecce',
  banner: null,
  description: null,
  verificationLevel: 'MEDIUM',
  vanityURLCode: null,
  nsfwLevel: 'DEFAULT',
  discoverySplash: null,
  memberCount: 459,
  large: true,
  applicationId: null,
  afkTimeout: 300,
  afkChannelId: null,
  systemChannelId: null,
  premiumTier: 'TIER_2',
  premiumSubscriptionCount: 9,
  explicitContentFilter: 'DISABLED',
  mfaLevel: 'NONE',
  joinedTimestamp: 1634610823632,
  defaultMessageNotifications: 'ONLY_MENTIONS',
  systemChannelFlags: SystemChannelFlags { bitfield: 0 },
  maximumMembers: 250000,
  maximumPresences: null,
  approximateMemberCount: null,
  approximatePresenceCount: null,
  vanityURLUses: null,
  rulesChannelId: null,
  publicUpdatesChannelId: null,
  preferredLocale: 'en-US',
  ownerId: 'CENSORED',
  emojis: GuildEmojiManager { guild: [Circular *2] },
  stickers: GuildStickerManager { guild: [Circular *2] }
}

标签: discorddiscord.js

解决方案


根据discord.js 文档Guild#systemChannel,该属性可以为 null,这意味着并非每个公会都有systemChannel. 您可能想在创建邀请之前检查它是否为空,因此您可以选择另一个频道以防万一。


推荐阅读