# GateContextBase

`interface` in `core` · v0.1.0-next.5

<https://docs.seedcord.org/packages/core/0.1.0-next.5/interfaces/gate-context-base>

The transport-agnostic gate context, the scalar identity of the acting user resolvable from any transport's payload. Every field except `core` is nullable, since an event or DM may carry no guild or member. Each transport extends it with its own arm. For example, the gateway adds the djs `user`/`guild`/`member` objects and the live interaction or event payload.

```ts
interface GateContextBase
```

## Examples

```ts
// a gate reading only the base fields fits any handler on any transport
const NeedsGuild = defineGate('NeedsGuild', (ctx: GateContextBase) => {
    if (!ctx.guildId) throw new NotInGuild();
});
```

## Properties

### appPermissions

```ts
readonly appPermissions: bigint | null
```

The bot's permissions in the invoked channel, the wire `app_permissions` value. Null on gateway events.

### channelId

```ts
readonly channelId: string | null
```

The channel id, or null when the source carries none.

### core

```ts
readonly core: CoreBase
```

Gates read the config and the rate limiter through it.

### guildId

```ts
readonly guildId: string | null
```

The guild id, or null outside a guild.

### memberPermissions

```ts
readonly memberPermissions: bigint | null
```

The member's permission bits, or null outside a guild. On an interaction these are the channel-scoped permissions the payload contains, on a gateway event the member's guild-level ones.

### memberRoleIds

```ts
readonly memberRoleIds: readonly string[]
```

The member's role ids without the everyone role, the shape a raw interaction payload contains. Empty outside a guild or when the source contains none.

### routeId

```ts
readonly routeId: string | null
```

The dispatched handler as `kind:route` (`slash:daily`, `button:confirm`), or null off a route (a plain event handler, or a gate run outside a handler). `runHandlerGates` sets it from the handler's metadata. `Cooldown` uses it so its window is stable across restarts and isolates.

### userId

```ts
readonly userId: string | null
```

The acting user's id, or null on an event that carries none.
