# GateContextBase

`interface` in `core` · v0.7.0

<https://docs.seedcord.org/packages/core/0.7.0/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.

### declaredRoute

```ts
readonly declaredRoute: string | null
```

The handler's own route, as `kind:route` (`slash:daily`, `button:confirm`). A handler registered on several reports the one this dispatch matched. Null when the handler declares none, which covers a plain event handler, the unhandled default, and a gate run outside a handler.

### dispatch

```ts
readonly dispatch: DispatchContext
```

The bag for this dispatch, the same instance the handler and its middleware hold. Every middleware runs before the first gate. A gate therefore reads what a middleware wrote.

### 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, and on a gateway event they're 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.

### userId

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

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