From b3dc1caf9480d9f4192148240b6031eb614cf175 Mon Sep 17 00:00:00 2001 From: shay <43248357+shayypy@users.noreply.github.com> Date: Thu, 9 Jul 2026 11:31:38 -0500 Subject: [PATCH 1/3] feat: attachment flags --- packages/discord-bitflag/src/flags/attachment.ts | 9 +++++++++ packages/discord-bitflag/src/index.ts | 3 +++ packages/discord-bitflag/src/wrappers/attachments.ts | 6 ++++++ 3 files changed, 18 insertions(+) create mode 100644 packages/discord-bitflag/src/flags/attachment.ts create mode 100644 packages/discord-bitflag/src/wrappers/attachments.ts diff --git a/packages/discord-bitflag/src/flags/attachment.ts b/packages/discord-bitflag/src/flags/attachment.ts new file mode 100644 index 00000000..ea036028 --- /dev/null +++ b/packages/discord-bitflag/src/flags/attachment.ts @@ -0,0 +1,9 @@ +import type { BitFlags } from "bitflag-js"; + +export const AttachmentFlags = Object.freeze({ + IsClip: 1n << 0n, + IsThumbnail: 1n << 1n, + IsRemix: 1n << 2n, + IsSpoiler: 1n << 3n, + IsAnimated: 1n << 5n, +}) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/index.ts b/packages/discord-bitflag/src/index.ts index 83859d24..6d044c91 100644 --- a/packages/discord-bitflag/src/index.ts +++ b/packages/discord-bitflag/src/index.ts @@ -3,6 +3,9 @@ export { BitField, type BitFlagResolvable, type BitFlags } from "bitflag-js"; export { ApplicationFlags } from "./flags/application.js"; export { ApplicationFlagsBitField } from "./wrappers/applications.js"; +export { AttachmentFlags } from "./flags/attachment.js"; +export { AttachmentFlagsBitField } from "./wrappers/attachments.js"; + export { ChannelFlags } from "./flags/channel.js"; export { ChannelFlagsBitField } from "./wrappers/channels.js"; diff --git a/packages/discord-bitflag/src/wrappers/attachments.ts b/packages/discord-bitflag/src/wrappers/attachments.ts new file mode 100644 index 00000000..eff2cd4f --- /dev/null +++ b/packages/discord-bitflag/src/wrappers/attachments.ts @@ -0,0 +1,6 @@ +import { BitField } from "bitflag-js"; +import { AttachmentFlags } from "../flags/attachment.js"; + +export class AttachmentFlagsBitField extends BitField { + static ALL = BitField.resolve(Object.values(AttachmentFlags)); +} From 9fff15c9cd3268a37366f12cc7f9fecb33aaf28b Mon Sep 17 00:00:00 2001 From: shay <43248357+shayypy@users.noreply.github.com> Date: Mon, 28 Sep 2026 14:09:12 -0500 Subject: [PATCH 2/3] feat: sku, system channel flags, update all --- packages/discord-bitflag/README.md | 17 ++++++++++------- packages/discord-bitflag/src/flags/channel.ts | 2 ++ .../discord-bitflag/src/flags/guild-member.ts | 6 ++++++ packages/discord-bitflag/src/flags/message.ts | 2 ++ packages/discord-bitflag/src/flags/sku.ts | 7 +++++++ .../discord-bitflag/src/flags/system-channel.ts | 10 ++++++++++ packages/discord-bitflag/src/wrappers/skus.ts | 6 ++++++ .../src/wrappers/system-channels.ts | 6 ++++++ 8 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 packages/discord-bitflag/src/flags/sku.ts create mode 100644 packages/discord-bitflag/src/flags/system-channel.ts create mode 100644 packages/discord-bitflag/src/wrappers/skus.ts create mode 100644 packages/discord-bitflag/src/wrappers/system-channels.ts diff --git a/packages/discord-bitflag/README.md b/packages/discord-bitflag/README.md index 188c5a3e..31f15668 100644 --- a/packages/discord-bitflag/README.md +++ b/packages/discord-bitflag/README.md @@ -39,10 +39,13 @@ The Permissions BitField class checks for the Admin permission by default when y Each bit field class extends the `BitField` class from [bitflag-js](https://www.npmjs.com/package/bitflag-js). -- [Application Flags](https://discord.com/developers/docs/resources/application#application-object-application-flags): `ApplicationFlagsBitField` and `ApplicationFlags` -- [Channel Flags](https://discord.com/developers/docs/resources/channel#channel-object-channel-flags): `ChannelFlagsBitField` and `ChannelFlags` -- [Guild Member Flags](https://discord.com/developers/docs/resources/guild#guild-member-object-guild-member-flags): `GuildMemberFlagsBitField` and `GuildMemberFlags` -- [Intent Flags](https://discord.com/developers/docs/topics/gateway#list-of-intents): `IntentFlagsBitField` and `IntentFlags` -- [Message Flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags): `MessageFlagsBitField` and `MessageFlags` -- [Permission Flags](https://discord.com/developers/docs/topics/permissions#permissions-bitwise-permission-flags): `PermissionsBitField` and `PermissionFlags` -- [User Flags](https://discord.com/developers/docs/resources/user#user-object-user-flags): `UserFlagsBitField` and `UserFlags` +- [Application Flags](https://docs.discord.com/developers/resources/application#application-object-application-flags): `ApplicationFlagsBitField` and `ApplicationFlags` +- [Attachment Flags](https://docs.discord.com/developers/resources/message#attachment-object-attachment-flags): `AttachmentFlagsBitField` and `AttachmentFlags` +- [Channel Flags](https://docs.discord.com/developers/resources/channel#channel-object-channel-flags): `ChannelFlagsBitField` and `ChannelFlags` +- [Guild Member Flags](https://docs.discord.com/developers/resources/guild#guild-member-object-guild-member-flags): `GuildMemberFlagsBitField` and `GuildMemberFlags` +- [Intent Flags](https://docs.discord.com/developers/topics/gateway#list-of-intents): `IntentFlagsBitField` and `IntentFlags` +- [Message Flags](https://docs.discord.com/developers/resources/channel#message-object-message-flags): `MessageFlagsBitField` and `MessageFlags` +- [Permission Flags](https://docs.discord.com/developers/topics/permissions#permissions-bitwise-permission-flags): `PermissionsBitField` and `PermissionFlags` +- [SKU Flags](https://docs.discord.com/developers/resources/sku#sku-object-sku-flags): `SKUFlagsBitField` and `SKUFlags` +- [System Channel Flags](https://docs.discord.com/developers/resources/guild#guild-object-system-channel-flags): `SystemChannelFlagsBitField` and `SystemChannelFlags` +- [User Flags](https://docs.discord.com/developers/resources/user#user-object-user-flags): `UserFlagsBitField` and `UserFlags` diff --git a/packages/discord-bitflag/src/flags/channel.ts b/packages/discord-bitflag/src/flags/channel.ts index 64f5b21f..b78e8ccc 100644 --- a/packages/discord-bitflag/src/flags/channel.ts +++ b/packages/discord-bitflag/src/flags/channel.ts @@ -4,4 +4,6 @@ export const ChannelFlags = Object.freeze({ Pinned: 1n << 1n, RequireTag: 1n << 4n, HideMediaDownloadOptions: 1n << 15n, + ChannelObfuscated: 1n << 17n, + IsSpoilerChannel: 1n << 21n, }) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/flags/guild-member.ts b/packages/discord-bitflag/src/flags/guild-member.ts index 1f49c195..71e136bb 100644 --- a/packages/discord-bitflag/src/flags/guild-member.ts +++ b/packages/discord-bitflag/src/flags/guild-member.ts @@ -5,4 +5,10 @@ export const GuildMemberFlags = Object.freeze({ CompletedOnboarding: 1n << 1n, BypassesVerification: 1n << 2n, StartedOnboarding: 1n << 3n, + IsGuest: 1n << 4n, + StartedHomeActions: 1n << 5n, + CompletedHomeActions: 1n << 6n, + AutomatedQuarantinedUsername: 1n << 7n, + DmSettingsUpsellAcknowledged: 1n << 9n, + AutomatedQuarantinedGuildTag: 1n << 10n, }) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/flags/message.ts b/packages/discord-bitflag/src/flags/message.ts index 682ae281..d38705c1 100644 --- a/packages/discord-bitflag/src/flags/message.ts +++ b/packages/discord-bitflag/src/flags/message.ts @@ -12,4 +12,6 @@ export const MessageFlags = Object.freeze({ FailedToMentionSomeRolesInThread: 1n << 8n, SuppressNotifications: 1n << 12n, IsVoiceMessage: 1n << 13n, + HasSnapshot: 1n << 14n, + IsComponentsV2: 1n << 15n, }) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/flags/sku.ts b/packages/discord-bitflag/src/flags/sku.ts new file mode 100644 index 00000000..0885922d --- /dev/null +++ b/packages/discord-bitflag/src/flags/sku.ts @@ -0,0 +1,7 @@ +import type { BitFlags } from "bitflag-js"; + +export const SKUFlags = Object.freeze({ + Available: 1n << 2n, + GuildSubscription: 1n << 7n, + UserSubscription: 1n << 8n, +}) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/flags/system-channel.ts b/packages/discord-bitflag/src/flags/system-channel.ts new file mode 100644 index 00000000..06664e9d --- /dev/null +++ b/packages/discord-bitflag/src/flags/system-channel.ts @@ -0,0 +1,10 @@ +import type { BitFlags } from "bitflag-js"; + +export const SystemChannelFlags = Object.freeze({ + SuppressJoinNotifications: 1n << 0n, + SuppressPremiumSubscriptions: 1n << 1n, + SuppressGuildReminderNotifications: 1n << 2n, + SuppressJoinNotificationReplies: 1n << 3n, + SuppressROLE_SubscriptionPurchaseNotifications: 1n << 4n, + SuppressROLE_SubscriptionPurchaseNotificationReplies: 1n << 5n, +}) satisfies BitFlags; diff --git a/packages/discord-bitflag/src/wrappers/skus.ts b/packages/discord-bitflag/src/wrappers/skus.ts new file mode 100644 index 00000000..620ead95 --- /dev/null +++ b/packages/discord-bitflag/src/wrappers/skus.ts @@ -0,0 +1,6 @@ +import { BitField } from "bitflag-js"; +import { SKUFlags } from "../flags/sku.js"; + +export class SKUFlagsBitField extends BitField { + static ALL = BitField.resolve(Object.values(SKUFlags)); +} diff --git a/packages/discord-bitflag/src/wrappers/system-channels.ts b/packages/discord-bitflag/src/wrappers/system-channels.ts new file mode 100644 index 00000000..fb257852 --- /dev/null +++ b/packages/discord-bitflag/src/wrappers/system-channels.ts @@ -0,0 +1,6 @@ +import { BitField } from "bitflag-js"; +import { SystemChannelFlags } from "../flags/system-channel.js"; + +export class SystemChannelFlagsBitField extends BitField { + static ALL = BitField.resolve(Object.values(SystemChannelFlags)); +} From 30d54cbf5e79c0c397db3217d993bc43e90c8cc9 Mon Sep 17 00:00:00 2001 From: shay <43248357+shayypy@users.noreply.github.com> Date: Mon, 28 Sep 2026 14:12:26 -0500 Subject: [PATCH 3/3] export new bitfields --- packages/discord-bitflag/src/index.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/discord-bitflag/src/index.ts b/packages/discord-bitflag/src/index.ts index 6d044c91..98b1aa0f 100644 --- a/packages/discord-bitflag/src/index.ts +++ b/packages/discord-bitflag/src/index.ts @@ -21,5 +21,11 @@ export { MessageFlagsBitField } from "./wrappers/messages.js"; export { PermissionFlags } from "./flags/permissions.js"; export { PermissionsBitField } from "./wrappers/permissions.js"; +export { SKUFlags } from "./flags/sku.js"; +export { SKUFlagsBitField } from "./wrappers/skus.js"; + +export { SystemChannelFlags } from "./flags/system-channel.js"; +export { SystemChannelFlagsBitField } from "./wrappers/system-channels.js"; + export { UserFlags } from "./flags/user.js"; export { UserFlagsBitField } from "./wrappers/users.js";