parseGuildAnnouncementChannel method

GuildAnnouncementChannel parseGuildAnnouncementChannel(
  1. Map<String, Object?> raw, {
  2. Snowflake? guildId,
})

Implementation

GuildAnnouncementChannel parseGuildAnnouncementChannel(Map<String, Object?> raw, {Snowflake? guildId}) {
  assert(raw['type'] == ChannelType.guildAnnouncement.value, 'Invalid type for GuildAnnouncementChannel');

  return GuildAnnouncementChannel(
    id: Snowflake.parse(raw['id']!),
    manager: this,
    topic: raw['topic'] as String?,
    // Discord doesn't seem to include this field if the default 3 day expiration is used (3 days = 4320 minutes)
    defaultAutoArchiveDuration: Duration(minutes: raw['default_auto_archive_duration'] as int? ?? 4320),
    defaultThreadRateLimitPerUser:
        maybeParse<Duration?, int>(raw['default_thread_rate_limit_per_user'], (value) => value == 0 ? null : Duration(seconds: value)),
    guildId: guildId ?? Snowflake.parse(raw['guild_id']!),
    isNsfw: raw['nsfw'] as bool? ?? false,
    lastMessageId: maybeParse(raw['last_message_id'], Snowflake.parse),
    lastPinTimestamp: maybeParse(raw['last_pin_timestamp'], DateTime.parse),
    name: raw['name'] as String,
    parentId: maybeParse(raw['parent_id'], Snowflake.parse),
    permissionOverwrites: maybeParseMany(raw['permission_overwrites'], parsePermissionOverwrite) ?? [],
    position: raw['position'] as int,
    rateLimitPerUser: maybeParse<Duration?, int>(raw['rate_limit_per_user'], (value) => value == 0 ? null : Duration(seconds: value)),
  );
}