discord - 在 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] }
}
解决方案
根据discord.js 文档Guild#systemChannel
,该属性可以为 null,这意味着并非每个公会都有systemChannel
. 您可能想在创建邀请之前检查它是否为空,因此您可以选择另一个频道以防万一。
推荐阅读
- shell - awk 将多个文件中的特定列打印到新文件
- android - 错误:无法解析“:app@debug/compileClasspath”的依赖关系:无法解析项目:将应用模块添加到android应用程序
- lua - 如何在lua中增加每个循环的值?
- angular - Web.Config 文件无法在 Angular 应用程序中加载
- mysql - MySQL Date_Format 在 Excel 中返回“i”
- c++ - 将程序从 x86 转换为 x64
- apache-kafka - 如何通过 Flume 向 kafka 发送键值
- php - “CVE-2018-5712”在PHP变更日志中多次出现,这让我很困惑
- python - 如果在 os._exit() 之前不关闭套接字会发生什么?
- python - 将 python 3.8 文件转换为 .exe