#discord #discord.js
Вопрос:
Я использую этот базовый код, чтобы бот сгенерировал ссылку для приглашения на сервер, где идентификатор гильдии — это строка моего идентификатора гильдии:
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] }
}
Комментарии:
1.
Guild.systemChannel
возвращает значение null, убедитесьGuild
, что возвращает то, что вы ожидаете, и проверьте.systemChannel
2. Да, и я вижу это — но Гильдия возвращает объект гильдии правильно, но не со строкой системного канала в объекте. Есть идеи, почему? Эта функция работает на некоторых моих серверах, а не на других, и я ломаю голову, пытаясь понять, почему
3. Только что обновил свой пост с объектом гильдии, о котором мы упоминаем — я максимально следую api discord v13
Ответ №1:
В соответствии с discord.js документы для Guild#systemChannel
, это свойство может быть нулевым, что означает, что не у каждой Гильдии есть systemChannel
. Возможно, вам захочется проверить, является ли он нулевым перед созданием приглашения, чтобы вы могли выбрать другой канал, если это так.