# RequireBotPermissions

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

<https://docs.seedcord.org/packages/core/0.1.0-next.5/functions/require-bot-permissions>

Requires the bot to hold every permission in `scope`. Refuses outside a guild first, then when a permission is missing. The Administrator bit passes any scope.

The default `'channel'` scope reads the bot's effective channel set (wire `app_permissions`), what Discord enforces in the invoked channel. The `'guild'` scope reads the bot's base set from roles and requires a [`GuildPermissionsContext`](/packages/core/0.1.0-next.5/interfaces/guild-permissions-context), so it fits a gateway handler only. `app_permissions` is absent on gateway events, the channel scope refuses there as unresolved, use `in: 'guild'` on an event handler.

## Signature 1

```ts
RequireBotPermissions(
    scope: PermissionScope,
    options: RequirePermissionsOptions & { in: "guild" }
): Gate<GuildPermissionsContext, "RequireBotPermissions">
```

Requires the bot to hold every permission in `scope`. Refuses outside a guild first, then when a permission is missing. The Administrator bit passes any scope.

The default `'channel'` scope reads the bot's effective channel set (wire `app_permissions`), what Discord enforces in the invoked channel. The `'guild'` scope reads the bot's base set from roles and requires a [`GuildPermissionsContext`](/packages/core/0.1.0-next.5/interfaces/guild-permissions-context), so it fits a gateway handler only. `app_permissions` is absent on gateway events, the channel scope refuses there as unresolved, use `in: 'guild'` on an event handler.

Parameters.

- `scope` `PermissionScope` — The permission flag bits the bot must all hold.
- `options` `RequirePermissionsOptions & { in: 'guild'; }` — Pick the scope with `in`, and override each refusal with `notInGuild` or `missing`.

Returns `Gate<GuildPermissionsContext, 'RequireBotPermissions'>`.

## Signature 2

```ts
RequireBotPermissions(
    scope: PermissionScope,
    options?: RequirePermissionsOptions & { in?: "channel" }
): Gate<GateContextBase, "RequireBotPermissions">
```

Parameters.

- `scope` `PermissionScope`
- `options?` `RequirePermissionsOptions & { in?: 'channel'; }`

Returns `Gate<GateContextBase, 'RequireBotPermissions'>`.
