インタラクションAPIリファレンス

次のセクションでは、ライブラリによって実装されたインタラクションの API について概説します。

ライブラリの残りの部分のドキュメントについては、 APIリファレンス を参照してください。

モデル

Discordモデル と同様に、これらはユーザーが構築するものではありません。

Interaction

class discord.Interaction

Discordのインタラクションを表します。

インタラクションは、ユーザーに返信をする必要のあるアクションが行われた際に発生します。現在の例はスラッシュコマンドとコンポーネントです。

バージョン 2.0 で追加.

id

インタラクションのID。

int

type

インタラクションの種類。

InteractionType

guild_id

インタラクションが送信されたギルドのID。

Optional[int]

channel

インタラクションが送信されたチャンネル。

Note that due to a Discord limitation, if sent from a DM channel recipient is None.

Optional[Union[abc.GuildChannel, abc.PrivateChannel, Thread]]

application_id

インタラクションの対象となったアプリケーションのID。

int

user

インタラクションを送信したユーザーまたはメンバー。

Union[User, Member]

message

このインタラクションを送信したメッセージ。

これは InteractionType.component インタラクションの場合にのみ使用できます。

Optional[Message]

token

インタラクションを続行するのに使うトークン。有効期限は15分です。

str

data

生のインタラクションデータ。

dict

locale

インタラクションを呼び出したユーザーのロケール。

Locale

guild_locale

インタラクションの送信元のギルドの優先ロケール。もし無ければ None となります。

Optional[Locale]

extras

インタラクションの処理中に使用する追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

dict

command_failed

このインタラクションに関連付けられたコマンドの実行に失敗したかどうか。これにはチェックとコマンドの実行が含まれます。

bool

property client

このインタラクションを処理するクライアント。

なお、 AutoShardedClientBotAutoShardedBot はすべてClientのサブクラスです。

Client

property guild

インタラクションが送信されたギルド。

Optional[Guild]

property channel_id

The ID of the channel the interaction was sent from.

Optional[int]

property permissions

権限の上書きを含むチャンネルでのメンバーの権限。

ギルド以外の文脈では権限が適用されないため、空の権限オブジェクトが返されます。

Permissions

property app_permissions

権限の上書きを含む、アプリケーションまたはボットの解決された権限。

Permissions

namespace

このインタラクションの解決された名前空間。

アプリケーションコマンドに関連したインタラクションでない場合、またはクライアントにツリーが関連付けられていない場合は、空の名前空間を返します。

app_commands.Namespace

command

このインタラクションから呼び出されるコマンド。

アプリケーションコマンドに関連したインタラクションでない場合、またはコマンドがクライアントのアタッチされたツリーにない場合は、 None が返されます。

Optional[Union[app_commands.Command, app_commands.ContextMenu]]

response

インタラクションへの応答をするためのオブジェクトを返します。

応答は一度だけ行うことができます。複数回にわたってメッセージを送信する必要がある場合は、代わりに followup を使用することを検討してください。

InteractionResponse

followup

フォローアップのインタラクションのためのフォローアップウェブフックを返します。

Webhook

property created_at

インタラクションが作成された時間を示します。

datetime.datetime

property expires_at

インタラクションが期限切れになった時の時間を示します。

datetime.datetime

is_expired()

bool:インタラクションが期限切れした場合には True を返します。

await original_response()

This function is a coroutine.

インタラクションに関連付けられた元のメッセージを取得します。

もしインタラクションの応答が新しく作成されたメッセージである場合( InteractionResponse.send_message()thinkingTrueInteractionResponse.defer() 等)はそのメッセージを返します。それ以外の場合は、インタラクションが作成されたメッセージを返します。(コンポーネント 等)

これを繰り返し呼び出すと、キャッシュされた値が返されます。

例外
  • HTTPException -- 元のインタラクションのメッセージの取得に失敗した場合。

  • ClientException -- メッセージのチャンネルの解決ができなかった場合。

  • NotFound -- インタラクションの応答のメッセージが存在しなかった場合。

戻り値

元のインタラクションの応答メッセージ。

戻り値の型

InteractionMessage

await edit_original_response(*, content=..., embeds=..., embed=..., attachments=..., view=..., allowed_mentions=None)

This function is a coroutine.

元のインタラクションの応答メッセージを編集します。

これは InteractionMessage.edit() の下位互換のインターフェースで、メッセージを取得及び、HTTPリクエストを保存することが必要でない場合に使用します。

また、一時的なメッセージを送った場合、この方法でのみメッセージを編集することができます。

パラメータ
  • content (Optional[str]) -- メッセージの内容を編集する場合はそのメッセージを、内容を削除する際は、None を指定します。

  • embeds (List[Embed]) -- メッセージを編集するための埋め込みのリスト。

  • embed (Optional[Embed]) -- メッセージを編集するための埋め込み。 None を渡すと埋め込みが除去されます。 embeds パラメータと同時に使用できません。

  • attachments (List[Union[Attachment, File]]) --

    メッセージ内で残す添付ファイルと、新規にアップロードする添付ファイルのリスト。 [] が渡された場合すべての添付ファイルが除去されます。

    注釈

    新しいファイルは常に現在の添付ファイルのあとに表示されます。

  • allowed_mentions (AllowedMentions) -- このメッセージで処理されるメンションを制御します。詳細は abc.Messageable.send() を参照してください。

  • view (Optional[View]) -- このメッセージを更新するために更新されたビュー。 None が渡された場合、ビューは削除されます。

例外
  • HTTPException -- メッセージの編集に失敗した場合。

  • NotFound -- インタラクションの応答のメッセージが存在しなかった場合。

  • Forbidden -- 自分以外のメッセージを編集しようとした場合。

  • TypeError -- embedembeds の両方を指定した場合。

  • ValueError -- embeds の長さが無効だった場合。

戻り値

編集された新しいメッセージ。

戻り値の型

InteractionMessage

await delete_original_response()

This function is a coroutine.

元のインタラクション応答メッセージを削除します。

これは InteractionMessage.delete() の下位互換のインターフェースで、メッセージを取得及び、HTTPリクエストを保存することが必要でない場合に使用します。

例外
  • HTTPException -- メッセージの削除に失敗した場合。

  • NotFound -- インタラクションの応答のメッセージが存在しなかった場合、または既に削除されていた場合。

  • Forbidden -- 自分以外のメッセージを削除しようとした場合。

await translate(string, *, locale=..., data=...)

This function is a coroutine.

Translator を使用して文字列を翻訳します。

バージョン 2.1 で追加.

パラメータ
  • string (Union[str, locale_str]) -- 翻訳する文字列。 locale_str を使用して、文脈、情報、または必要なメタデータを追加できます。

  • locale (Locale) -- 使用するロケール。特定のロケールの翻訳が必要な場合に便利です。既定値はユーザの locale です。

  • data (Any) -- 翻訳される追加のデータ。指定されない場合は、 command または message のうち利用できるものが渡されます。

戻り値

翻訳された文字列、またはトランスレータが設定されていない場合 None

戻り値の型

Optional[str]

InteractionResponse

Attributes
Methods
class discord.InteractionResponse

Discordのインタラクション応答を表します。

この型は Interaction.response からアクセスできます。

バージョン 2.0 で追加.

is_done()

bool: インタラクションに既に応答したか。

インタラクションは一度だけ応答できます。

property type

送信された応答の種類。まだ応答していない場合は None です。

InteractionResponseType

await defer(*, ephemeral=False, thinking=False)

This function is a coroutine.

インタラクションの応答を遅らせます。

これは通常、インタラクションを認識した後、後で他のことを実行する場合に使われます。

以下のインタラクションでのみサポートされています:

パラメータ
例外
await pong()

This function is a coroutine.

Pingのインタラクションに応答します。

ほとんどの場合使われません。

例外
await send_message(content=None, *, embed=..., embeds=..., file=..., files=..., view=..., tts=False, ephemeral=False, allowed_mentions=..., suppress_embeds=False, silent=False, delete_after=None)

This function is a coroutine.

インタラクションにメッセージで応答します。

パラメータ
  • content (Optional[str]) -- 送信するメッセージの内容。

  • embeds (List[Embed]) -- 送信するリッチな埋め込みのリスト。最大10個です。 embed パラメータと同時に使用できません。

  • embed (Embed) -- 送信するリッチな埋め込み。 embeds パラメータと同時に使用できません。

  • file (File) -- アップロードするファイル。

  • files (List[File]) -- アップロードするファイルのリスト。ファイル数は最大で10個まででなくてはいけません。

  • tts (bool) -- メッセージが音声合成で送信されるべきかどうかを示します。

  • view (discord.ui.View) -- 送信するビュー。

  • ephemeral (bool) -- メッセージがインタラクションを開始したユーザーだけに表示されるかどうか。もしビューが一時的なメッセージで送信されている、かつタイムアウトが設定されていない場合、タイムアウトは15分に設定されます。

  • allowed_mentions (AllowedMentions) -- このメッセージで処理されるメンションを制御します。詳細は abc.Messageable.send() を参照してください。

  • suppress_embeds (bool) -- メッセージの埋め込みを抑制するかどうか。これが True に設定されている場合、埋め込みなしでメッセージを送信します。

  • silent (bool) --

    Whether to suppress push and desktop notifications for the message. This will increment the mention counter in the UI, but will not actually send a notification.

    バージョン 2.2 で追加.

  • delete_after (float) --

    指定すると、これはメッセージを送信したあと削除するまでにバックグラウンドで待機する秒数となります。もし削除が失敗しても、それは静かに無視されます。

    バージョン 2.1 で追加.

例外
  • HTTPException -- メッセージの送信に失敗した場合。

  • TypeError -- embedembeds または filefiles の両方を指定した場合。

  • ValueError -- embeds の長さが無効だった場合。

  • InteractionResponded -- 既にインタラクションに応答していた場合。

await edit_message(*, content=..., embed=..., embeds=..., attachments=..., view=..., allowed_mentions=..., delete_after=None)

This function is a coroutine.

コンポーネントまたはモーダルのインタラクションに編集で応答します。

パラメータ
  • content (Optional[str]) -- 現在のメッセージと置き換える新しい内容。 None を指定すると内容が削除されます。

  • embeds (List[Embed]) -- メッセージを編集するための埋め込みのリスト。

  • embed (Optional[Embed]) -- メッセージを編集するための埋め込み。 None を渡すと埋め込みが除去されます。 embeds パラメータと同時に使用できません。

  • attachments (List[Union[Attachment, File]]) --

    メッセージ内で残す添付ファイルと、新規にアップロードする添付ファイルのリスト。 [] が渡された場合すべての添付ファイルが除去されます。

    注釈

    新しいファイルは常に現在の添付ファイルのあとに表示されます。

  • view (Optional[View]) -- このメッセージを更新するために更新されたビュー。 None が渡された場合、ビューは削除されます。

  • allowed_mentions (Optional[AllowedMentions]) -- このメッセージで処理されるメンションを制御します。詳細は Message.edit() を参照してください。

  • delete_after (float) --

    もし指定したなら、これはメッセージを編集したあと待機し削除するまでの秒数です。もし削除が失敗しても、それは静かに無視されます。

    バージョン 2.2 で追加.

例外
  • HTTPException -- メッセージの編集に失敗した場合。

  • TypeError -- embedembeds の両方を指定した場合。

  • InteractionResponded -- 既にインタラクションに応答していた場合。

await send_modal(modal, /)

This function is a coroutine.

インタラクションにモーダルで応答します。

パラメータ

modal (Modal) -- 送信するモーダル。

例外
await autocomplete(choices)

This function is a coroutine.

ユーザーが使用できる選択肢を与えることにより、このインタラクションに応答します。

パラメータ

choices (List[Choice]) -- 応答する選択肢。

例外
  • HTTPException -- 選択肢の送信に失敗した場合。

  • ValueError -- このインタラクションに選択肢で応答できない場合。

  • InteractionResponded -- 既にインタラクションに応答していた場合。

InteractionMessage

class discord.InteractionMessage

元のインタラクション応答メッセージを表します。

このオブジェクトでインタラクションの応答のメッセージを編集、または削除できます。このオブジェクトを生成するには Interaction.original_response() を参照して下さい。

これは edit()delete() が機能するように変更された上で discord.Message を継承しています。

バージョン 2.0 で追加.

await edit(*, content=..., embeds=..., embed=..., attachments=..., view=..., allowed_mentions=None, delete_after=None)

This function is a coroutine.

メッセージを編集します。

パラメータ
  • content (Optional[str]) -- メッセージの内容を編集する場合はそのメッセージを、内容を削除する際は、None を指定します。

  • embeds (List[Embed]) -- メッセージを編集するための埋め込みのリスト。

  • embed (Optional[Embed]) -- メッセージを編集するための埋め込み。 None を渡すと埋め込みが除去されます。 embeds パラメータと同時に使用できません。

  • attachments (List[Union[Attachment, File]]) --

    メッセージ内で残す添付ファイルと、新規にアップロードする添付ファイルのリスト。 [] が渡された場合すべての添付ファイルが除去されます。

    注釈

    新しいファイルは常に現在の添付ファイルのあとに表示されます。

  • allowed_mentions (AllowedMentions) -- このメッセージで処理されるメンションを制御します。詳細は abc.Messageable.send() を参照してください。

  • view (Optional[View]) -- このメッセージを更新するために更新されたビュー。 None が渡された場合、ビューは削除されます。

  • delete_after (Optional[float]) --

    指定すると、これはメッセージを送信したあと削除するまでにバックグラウンドで待機する秒数となります。もし削除が失敗しても、それは静かに無視されます。

    バージョン 2.2 で追加.

例外
  • HTTPException -- メッセージの編集に失敗した場合。

  • Forbidden -- 自分以外のメッセージを編集しようとした場合。

  • TypeError -- embedembeds の両方を指定した場合。

  • ValueError -- embeds の長さが無効だった場合。

戻り値

編集された新しいメッセージ。

戻り値の型

InteractionMessage

await add_files(*files)

This function is a coroutine.

メッセージの添付ファイルの末尾に新しいファイルを追加します。

バージョン 2.0 で追加.

パラメータ

*files (File) -- メッセージに追加する新しいファイル。

例外
  • HTTPException -- メッセージの編集に失敗した場合。

  • Forbidden -- 自分以外のメッセージを編集しようとした場合。

戻り値

編集された新しいメッセージ。

戻り値の型

InteractionMessage

await remove_attachments(*attachments)

This function is a coroutine.

メッセージの添付ファイルを削除します。

バージョン 2.0 で追加.

パラメータ

*attachments (Attachment) -- メッセージから削除する添付ファイル。

例外
  • HTTPException -- メッセージの編集に失敗した場合。

  • Forbidden -- 自分以外のメッセージを編集しようとした場合。

戻り値

編集された新しいメッセージ。

戻り値の型

InteractionMessage

await delete(*, delay=None)

This function is a coroutine.

メッセージを削除します。

パラメータ

delay (Optional[float]) -- 指定された場合、メッセージを削除するまでの待機秒数。待機はバックグラウンドで行われ、削除の失敗は無視されます。

例外
  • Forbidden -- メッセージを削除するための適切な権限がない場合。

  • NotFound -- メッセージがすでに削除されている場合。

  • HTTPException -- メッセージの削除に失敗した場合。

await add_reaction(emoji, /)

This function is a coroutine.

メッセージにリアクションを追加します。

絵文字はユニコード絵文字かカスタムギルド絵文字の Emoji でないといけません。

これを行うためには、そのチャンネルにて read_message_history が必要です。 もし、他の人がその絵文字でリアクションしていない場合、さらに add_reactions が必要です。

バージョン 2.0 で変更: emoji 引数は位置限定引数になりました。

バージョン 2.0 で変更: この関数は InvalidArgument の代わりに TypeError を送出します。

パラメータ

emoji (Union[Emoji, Reaction, PartialEmoji, str]) -- リアクションとして追加する絵文字。

例外
  • HTTPException -- リアクションの追加に失敗した場合。

  • Forbidden -- メッセージにリアクションを付けるのに必要な権限がない場合。

  • NotFound -- 指定された絵文字が見つからなかった場合。

  • TypeError -- emojiパラメータが無効の場合。

clean_content

クリーンアップされたメッセージ内容を返すプロパティ。基本的に、これはメンションをクライアントが表示できるようにする、という意味です。例えば、 <#id>#name に変換されます。

また、これは @everyone メンション や @here メンションを、メンション機能の無いメッセージに変換します。

注釈

これはマークダウンには影響 しません 。マークダウンをエスケープまたは削除したい場合は、この関数とともに utils.escape_markdown()utils.remove_markdown() を使用してください。

str

await clear_reaction(emoji)

This function is a coroutine.

メッセージから特定のリアクションを消去します。

絵文字はユニコード絵文字かカスタムギルド絵文字の Emoji でないといけません。

これを行うには、 manage_messages が必要です。

バージョン 1.3 で追加.

バージョン 2.0 で変更: この関数は InvalidArgument の代わりに TypeError を送出します。

パラメータ

emoji (Union[Emoji, Reaction, PartialEmoji, str]) -- 消去された絵文字です。

例外
  • HTTPException -- リアクションの除去に失敗した場合。

  • Forbidden -- リアクションを除去するのに必要な権限がない場合。

  • NotFound -- 指定された絵文字が見つからなかった場合。

  • TypeError -- emojiパラメータが無効の場合。

await clear_reactions()

This function is a coroutine.

全てのリアクションをメッセージから消去します。

これを行うには、 manage_messages が必要です。

例外
  • HTTPException -- リアクションの除去に失敗した場合。

  • Forbidden -- リアクションの除去に必要な権限を持っていない場合。

await create_thread(*, name, auto_archive_duration=..., slowmode_delay=None, reason=None)

This function is a coroutine.

メッセージからパブリックスレッドを作成します。

メッセージから公開スレッドを作成するには、 create_public_threads 権限が必要です。

このメッセージが属するチャンネルは、 TextChannel でなければなりません。

バージョン 2.0 で追加.

パラメータ
  • name (str) -- スレッドの名前。

  • auto_archive_duration (int) --

    The duration in minutes before a thread is automatically hidden from the channel list. If not provided, the channel's default auto archive duration is used.

    Must be one of 60, 1440, 4320, or 10080, if provided.

  • slowmode_delay (Optional[int]) -- このチャンネルの秒単位での低速モードレート制限。 最大値は 21600 です。デフォルトは None でこの場合は低速モードレート制限が無しとなります。

  • reason (Optional[str]) -- スレッドを作成する理由。監査ログに表示されます。

例外
  • Forbidden -- スレッドを作成する権限を持っていない場合。

  • HTTPException -- スレッドの作成に失敗した場合。

  • ValueError -- メッセージがギルド情報を持っていない場合。

戻り値

作成されたスレッド

戻り値の型

Thread

property created_at

UTCの、メッセージが作成された時刻。

datetime.datetime

property edited_at

メッセージの編集時刻を含む、aware UTC datetime オブジェクト。

Optional[datetime.datetime]

await fetch()

This function is a coroutine.

部分的なメッセージを完全な Message にフェッチします。

例外
  • NotFound -- メッセージが見つからなかった場合。

  • Forbidden -- メッセージを取得するために必要な権限がありません。

  • HTTPException -- メッセージの取得に失敗しました。

戻り値

完全なメッセージ。

戻り値の型

Message

is_system()

bool: メッセージがシステムメッセージであるかどうか。

システムメッセージは、何かの応答としてDiscord APIによって構築されるメッセージです。

バージョン 1.3 で追加.

property jump_url

クライアントがこのメッセージにジャンプすることのできるURLを返します。

str

await pin(*, reason=None)

This function is a coroutine.

メッセージをピン留めします。

プライベートチャンネルでない通常のチャンネルで行うには、 manage_messages が必要です。

パラメータ

reason (Optional[str]) --

メッセージを固定した理由。監査ログに表示されます。

バージョン 1.4 で追加.

例外
  • Forbidden -- このメッセージをピン留めする権限を持っていない場合。

  • NotFound -- ピン留めするメッセージやチャンネルが見つからなかったか、既に削除されている場合。

  • HTTPException -- チャンネルにすでに50個ピン留めされたメッセージがあるなどの理由で、メッセージのピン留めに失敗した場合。

await publish()

This function is a coroutine.

Publishes this message to the channel's followers.

The message must have been sent in a news channel. You must have send_messages to do this.

自身のメッセージ以外の場合は manage_messages も必要です。

例外
  • Forbidden -- You do not have the proper permissions to publish this message or the channel is not a news channel.

  • HTTPException -- メッセージの公開に失敗した場合。

raw_channel_mentions

メッセージのコンテンツにある <#channel_id> の構文にマッチするチャンネル ID の配列を返すプロパティです。

List[int]

raw_mentions

メッセージのコンテンツにある <#user_id> の構文にマッチするユーザ ID の配列を返すプロパティです。

これによって、メッセージがプライベートチャンネル内のものであってもメンションされたユーザのIDを取得できます。

List[int]

raw_role_mentions

メッセージのコンテンツにある <#role_id> の構文にマッチするロール ID の配列を返すプロパティです。

List[int]

await remove_reaction(emoji, member)

This function is a coroutine.

メッセージからメンバーによるリアクションを除去します。

絵文字はユニコード絵文字かカスタムギルド絵文字の Emoji でないといけません。

もしリアクションがあなたのものではなければ(つまり、 member パラメーターがあなたでないなら)、 manage_messages も必要になります。

member パラメータはメンバーを示し abc.Snowflake 抽象基底クラスを満たす必要があります。

バージョン 2.0 で変更: この関数は InvalidArgument の代わりに TypeError を送出します。

パラメータ
例外
  • HTTPException -- リアクションの除去に失敗した場合。

  • Forbidden -- リアクションの除去に必要な権限を持っていない場合。

  • NotFound -- 指定されたメンバーや絵文字が見つからなかった場合。

  • TypeError -- emojiパラメータが無効の場合。

await reply(content=None, **kwargs)

This function is a coroutine.

Message に返信するための abc.Messageable.send() のショートカットメソッド。

バージョン 1.6 で追加.

バージョン 2.0 で変更: この関数は InvalidArgument の代わりに TypeError または ValueError を送出するようになりました。

例外
  • HTTPException -- メッセージの送信に失敗した場合。

  • Forbidden -- メッセージを送信する適切な権限がない場合。

  • ValueError -- files リストの大きさが適切でない場合。

  • TypeError -- filefiless の両方を指定した場合。

戻り値

送信されたメッセージ。

戻り値の型

Message

system_content

Message.type に関わらず、レンダリングされた際のメッセージ内容を返すプロパティ。

MessageType.defaultMessageType.reply の場合、これは Message.content と同じものを返すだけです。しかしそれ以外の場合は、システムメッセージの英語版を返します。

str

to_reference(*, fail_if_not_exists=True)

現在のメッセージから MessageReference を作成します。

バージョン 1.6 で追加.

パラメータ

fail_if_not_exists (bool) --

メッセージ参照を使用して返信するとき、メッセージが存在しなくなった場合、またはDiscordがメッセージを取得できなかった場合、 HTTPException を送出させるかどうか。

バージョン 1.7 で追加.

戻り値

メッセージへの参照。

戻り値の型

MessageReference

await unpin(*, reason=None)

This function is a coroutine.

メッセージのピン留めを外します。

プライベートチャンネルでない通常のチャンネルで行うには、 manage_messages が必要です。

パラメータ

reason (Optional[str]) --

メッセージのピン留めを解除した理由。監査ログに表示されます。

バージョン 1.4 で追加.

例外
  • Forbidden -- このメッセージのピン留めを外す権限を持っていない場合。

  • NotFound -- ピン留めするメッセージやチャンネルが見つからなかったか、既に削除されている場合。

  • HTTPException -- メッセージのピン留め解除に失敗した場合。

MessageInteraction

Attributes
class discord.MessageInteraction

Message が応答したインタラクションを表します。

バージョン 2.0 で追加.

x == y

二つのメッセージインタラクションが等しいかを比較します。

x != y

二つのメッセージインタラクションが等しくないかを比較します。

hash(x)

メッセージインタラクションのハッシュ値を返します。

id

インタラクションのID。

int

type

インタラクションの種類。

InteractionType

name

インタラクションの名前。

str

user

インタラクションを行ったユーザーまたはメンバー。

Union[User, Member]

property created_at

UTCの、インタラクションが作成された時刻。

datetime.datetime

Component

Attributes
class discord.Component

Discord Bot UI Kitのコンポーネント。

現在、Discordでサポートされているコンポーネントは次のとおりです:

これは抽象クラスでインスタンス化できません。

バージョン 2.0 で追加.

property type

コンポーネントの種類。

ComponentType

ActionRow

Attributes
class discord.ActionRow

Discord Bot UI Kitのアクション行。

これは、最大5個の子コンポーネントを並べて保持するコンポーネントです。

これは Component から継承されます。

バージョン 2.0 で追加.

children

存在する場合、このコンポーネントの子コンポーネント。

List[Union[Button, SelectMenu, TextInput]]

property type

コンポーネントの種類。

ComponentType

Button

class discord.Button

Discord Bot UI Kitのボタン。

これは Component から継承されます。

注釈

ボタンを作成するためにユーザーが構築でき利用できる型はこれではなく discord.ui.Button です。

バージョン 2.0 で追加.

style

ボタンのスタイル。

ButtonStyle

custom_id

インタラクション中に受け取るボタンID。これがURLボタンの場合はカスタムIDは設定できません。

Optional[str]

url

ボタンの行き先のURL。

Optional[str]

disabled

ボタンが無効化されているかどうか。

bool

label

存在する場合、ボタンのラベル。

Optional[str]

emoji

利用可能な場合、ボタンの絵文字。

Optional[PartialEmoji]

property type

コンポーネントの種類。

ComponentType

SelectMenu

class discord.SelectMenu

Discord Bot UI Kitの選択メニュー。

選択メニューは機能的にはドロップダウンと同じですが、モバイル端末では少し違ったレンダリングがされます。

注釈

選択メニューを作成するためにユーザーが構築でき利用できる型はこれではなく discord.ui.Select です。

バージョン 2.0 で追加.

type

コンポーネントの種類。

ComponentType

custom_id

インタラクション中に受け取る選択メニューID。

Optional[str]

placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

min_values

選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

int

max_values

選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

int

options

このメニューで選択できるオプションのリスト。

List[SelectOption]

disabled

選択メニューが無効化されているかどうか。

bool

channel_types

この選択メニューで選択できるチャンネルの種類のリスト。

List[ChannelType]

TextInput

class discord.TextInput

Discord Bot UI Kitのテキスト入力。

注釈

テキスト入力を作成するためにユーザーが構築でき利用できる型はこれではなく discord.ui.TextInput です。

バージョン 2.0 で追加.

custom_id

インタラクション中に受け取るテキスト入力ID。

Optional[str]

label

テキスト入力の上に表示するラベル。

str

style

テキスト入力のスタイル。

TextStyle

placeholder

テキスト入力が空の場合に表示されるプレースホルダーテキスト。

Optional[str]

value

テキスト入力のデフォルト値。

Optional[str]

required

テキスト入力が必須かどうか。

bool

min_length

テキスト入力の最小の長さ。

Optional[int]

max_length

テキスト入力の最大の長さ。

Optional[int]

property type

コンポーネントの種類。

ComponentType

property default

テキスト入力のデフォルト値。

これは value のエイリアスです。

Optional[str]

AppCommand

class discord.app_commands.AppCommand

アプリケーションコマンドを表します。

一般的な用語では、これは「スラッシュコマンド」または「コンテキストメニューコマンド」と呼ばれます。

バージョン 2.0 で追加.

x == y

アプリケーションコマンドが等しいか確認します。

x != y

アプリケーションコマンドが等しくないか確認します。

hash(x)

アプリケーションコマンドのハッシュを返します。

str(x)

アプリケーションコマンドの名前を返します。

id

アプリケーションコマンドのID。

int

application_id

アプリケーションコマンドのアプリケーションのID。

int

type

アプリケーションコマンドのタイプ。

AppCommandType

name

アプリケーションコマンドの名前。

str

description

アプリケーションコマンドの説明。

str

name_localizations

アプリケーションコマンドのローカライズされた名前。表示用に使用されます。

Dict[Locale, str]

description_localizations

アプリケーションコマンドのローカライズされた説明。表示用に使用されます。

Dict[Locale, str]

options

オプションのリスト。

List[Union[Argument, AppCommandGroup]]

default_member_permissions

このコマンドを実行できるデフォルトのメンバー権限。

Optional[Permissions]

dm_permission

このコマンドがダイレクトメッセージで実行できるかどうかを示す真偽値。

bool

guild_id

このコマンドが登録されているギルドのID。 None の値はグローバルコマンドであることを示します。

Optional[int]

nsfw

コマンドに年齢制限をかけて、年齢制限つきチャンネルのみで利用できるようにすべきか。

bool

property mention

アプリケーションコマンドをメンションすることのできる文字列を返します。

str

property guild

存在する場合、このコマンドが登録されたギルドを返します。

Optional[Guild]

await delete()

This function is a coroutine.

アプリケーションコマンドを削除します。

例外
  • NotFound -- アプリケーションコマンドが見つからなかった場合。

  • Forbidden -- アプリケーションコマンドを削除する権限がない場合。

  • HTTPException -- アプリケーションコマンドの削除に失敗した場合。

  • MissingApplicationID -- クライアントにアプリケーションIDがない場合。

await edit(*, name=..., description=..., default_member_permissions=..., dm_permission=..., options=...)

This function is a coroutine.

アプリケーションコマンドを編集します。

パラメータ
  • name (str) -- アプリケーションコマンドの新しい名前。

  • description (str) -- アプリケーションコマンドの新しい説明。

  • default_member_permissions (Optional[Permissions]) -- このアプリケーションコマンドを使用するために必要な新しいデフォルトの権限。権限要件を削除するには None の値を渡します。

  • dm_permission (bool) -- アプリケーションコマンドがDMで使用できるかどうかを示します。

  • options (List[Union[Argument, AppCommandGroup]]) -- このアプリケーションコマンドの新しいオプションのリスト。

例外
  • NotFound -- アプリケーションコマンドが見つからなかった場合。

  • Forbidden -- アプリケーションコマンドを編集する権限がない場合。

  • HTTPException -- アプリケーションコマンドの編集に失敗した場合。

  • MissingApplicationID -- クライアントにアプリケーションIDがない場合。

戻り値

新しく編集されたアプリケーションコマンド。

戻り値の型

AppCommand

await fetch_permissions(guild)

This function is a coroutine.

コマンドのギルド内の権限を取得します。

パラメータ

guild (Snowflake) -- 権限を取得するギルド。

例外
  • Forbidden -- アプリケーションコマンドの権限を取得する権限がない場合。

  • HTTPException -- アプリケーションコマンドの権限を取得するのに失敗した場合。

  • MissingApplicationID -- クライアントにアプリケーションIDがない場合。

  • NotFound -- アプリケーションコマンドの権限が見つからなかった場合。これは、権限が同期されている(つまり、デフォルトのまま変わっていない)ことも示します。

戻り値

ギルド内のアプリケーションコマンドの権限を表すオブジェクト。

戻り値の型

GuildAppCommandPermissions

AppCommandGroup

class discord.app_commands.AppCommandGroup

アプリケーションコマンドのサブコマンドを表します。

バージョン 2.0 で追加.

type

サブコマンドのタイプ。

AppCommandOptionType

name

サブコマンドの名前。

str

description

サブコマンドの説明。

str

name_localizations

サブコマンドのローカライズされた名前。表示用に使用されます。

Dict[Locale, str]

description_localizations

サブコマンドのローカライズされた説明。表示用に使用されます。

Dict[Locale, str]

options

オプションのリスト。

List[Union[Argument, AppCommandGroup]]

parent

親アプリケーションコマンド。

Union[AppCommand, AppCommandGroup]

property qualified_name

完全修飾されたコマンド名を返します。

修飾名には親の名前も含まれています。例えば、 /foo bar のようなコマンドでは修飾名は foo bar です。

str

property mention

アプリケーションコマンドグループをメンションすることのできる文字列を返します。

str

AppCommandChannel

class discord.app_commands.AppCommandChannel

アプリケーションコマンドの部分的に解決されたチャンネルオブジェクトを表します。

バージョン 2.0 で追加.

x == y

二つのチャンネルが等しいかを比較します。

x != y

二つのチャンネルが等しいものではないか比較します。

hash(x)

チャンネルのハッシュ値を返します。

str(x)

チャンネルの名前を返します。

id

チャンネルのID。

int

type

チャンネルの種類。

ChannelType

name

チャンネルの名前。

str

permissions

アプリケーションコマンドを呼び出したユーザーのチャンネル内の解決済み権限。

Permissions

guild_id

このチャンネルが存在するギルドのID。

int

property guild

見つかった場合、キャッシュからのチャンネルのギルド。

Optional[Guild]

resolve()

見つかった場合、アプリケーションコマンドチャンネルを適切なキャッシュからのチャンネルに解決します。

戻り値

解決したギルドチャンネル。キャッシュ内に見つからない場合は None が返されます。

戻り値の型

Optional[abc.GuildChannel]

await fetch()

This function is a coroutine.

部分的なチャンネルから abc.GuildChannel を取得します。

例外
  • NotFound -- チャンネルが見つからなかった場合。

  • Forbidden -- チャンネルを取得するために必要な権限がない場合。

  • HTTPException -- チャンネルの取得に失敗した時。

戻り値

完全なチャンネル。

戻り値の型

abc.GuildChannel

property mention

チャンネルにメンションできる文字列。

str

property created_at

チャンネルが作成されたときのUTC aware タイムスタンプ。

datetime.datetime

AppCommandThread

class discord.app_commands.AppCommandThread

アプリケーションコマンドの部分的に解決されたスレッドオブジェクトを表します。

バージョン 2.0 で追加.

x == y

二つのスレッドが等しいかを比較します。

x != y

二つのスレッドが等しいものではないか比較します。

hash(x)

スレッドのハッシュを返します。

str(x)

スレッドの名前を返します。

id

スレッドのID。

int

type

スレッドの種類。

ChannelType

name

スレッドの名前。

str

parent_id

このスレッドが属する親テキストチャンネルのID。

int

permissions

アプリケーションコマンドを呼び出したユーザーのスレッド内の解決済み権限。

Permissions

guild_id

このスレッドが属するギルドのID。

int

archived

スレッドがアーカイブされているかどうか。

bool

locked

スレッドがロックされているかどうか。

bool

invitable

モデレータでないユーザーがこのスレッドに他のモデレータでないユーザーを追加できるかどうか。これは公開スレッドでは常に True です。

bool

archiver_id

このスレッドをアーカイブしたユーザーのID。

Optional[int]

auto_archive_duration

The duration in minutes until the thread is automatically hidden from the channel list. Usually a value of 60, 1440, 4320 and 10080.

int

archive_timestamp

スレッドのアーカイブ状態が最後に更新されたときのawareなタイムスタンプ。

datetime.datetime

property guild

見つかった場合、キャッシュからのチャンネルのギルド。

Optional[Guild]

property parent

このスレッドが属する親チャンネル。

Optional[TextChannel]

property mention

スレッドに言及できるようにするための文字列。

str

property created_at

UTCで表されたスレッドが作成されたときのタイムスタンプ。

注釈

このタイムスタンプは、2022 年1 月 9 日以降に作成されたスレッドにのみ存在します。それ以外の場合は None を返します。

resolve()

見つかった場合、アプリケーションコマンドチャンネルを適切なキャッシュからのチャンネルに解決します。

戻り値

解決したギルドチャンネル。キャッシュ内に見つからない場合は None が返されます。

戻り値の型

Optional[abc.GuildChannel]

await fetch()

This function is a coroutine.

部分的なチャンネルから Thread を取得します。

例外
  • NotFound -- スレッドが見つからなかった場合。

  • Forbidden -- スレッドの取得に必要な権限がない場合。

  • HTTPException -- スレッドの取得に失敗した場合。

戻り値

完全なスレッド。

戻り値の型

Thread

AppCommandPermissions

class discord.app_commands.AppCommandPermissions

アプリケーションコマンドの権限を表します。

バージョン 2.0 で追加.

guild

この権限に紐づけられたギルド。

Guild

id

ロール、チャンネル、ギルドなど、権限の対象のID。すべてのチャンネルを示す guild_id - 1 センチネルもあります。

int

target

この権限に関連付けられたロール、ユーザー、またはチャンネル。これは AllChannels センチネル型である可能性もあります。これは対象がキャッシュ内に見つからない場合は Object となります。

Any

type

権限の種類。

AppCommandPermissionType

permission

権限の値。 True は許可を、 False は拒否を示します。

bool

GuildAppCommandPermissions

class discord.app_commands.GuildAppCommandPermissions

ギルド内のアプリケーションコマンドの権限を示します。

バージョン 2.0 で追加.

application_id

アプリケーションID。

int

command

権限に紐づけられたアプリケーションコマンド。

AppCommand

id

コマンドIDまたはアプリケーションID。これがコマンドIDではなくアプリケーションIDの場合、権限は明示的に上書きされていないすべてのコマンドに適用されます。

int

guild_id

この権限に関連付けられたギルドID。

int

permissions

権限ら。最大で100個の制限があります。

List[AppCommandPermissions]

property guild

権限に紐づけられたギルド。

Guild

Argument

class discord.app_commands.Argument

アプリケーションコマンドの引数を表します。

バージョン 2.0 で追加.

type

引数のタイプ。

AppCommandOptionType

name

引数の名前。

str

description

引数の説明。

str

name_localizations

引数のローカライズされた名前。表示用に使用されます。

Dict[Locale, str]

description_localizations

引数のローカライズされた説明。表示用に使用されます。

Dict[Locale, str]

required

引数が入力必須かどうか。

bool

choices

この引数の選択肢のリスト。

List[Choice]

parent

この引数を持つ親アプリケーションコマンド。

Union[AppCommand, AppCommandGroup]

channel_types

このパラメータにて利用できるチャンネルの種類。

List[ChannelType]

min_value

このパラメータがサポートする最小の値。

Optional[Union[int, float]]

max_value

このパラメータがサポートする最大の値。

Optional[Union[int, float]]

min_length

このパラメータが許容する最小の長さ。

Optional[int]

max_length

このパラメータが許容する最大の長さ。

Optional[int]

autocomplete

この引数がオートコンプリートを有するか。

bool

AllChannels

Attributes
class discord.app_commands.AllChannels

アプリケーションコマンド権限のすべてのチャンネルを表します。

バージョン 2.0 で追加.

guild

アプリケーションコマンド権限の対象ギルド。

Guild

property id

すべてのチャンネルを表すために使用されるIDセンチネル。ギルドのIDから1を引いたものに相当します。

int

データクラス

データクラス と同様に、これらは受け取ることもあれば、ユーザーによって構築することもできます。

SelectOption

class discord.SelectOption(*, label, value=..., description=None, emoji=None, default=False)

選択メニューのオプションを表します。

これらはユーザーによって作成することができます。

バージョン 2.0 で追加.

パラメータ
  • label (str) -- オプションのラベル。これはユーザーに表示されます。最大 100 文字まで可能です。

  • value (str) -- オプションの値。これはユーザーには表示されません。 構築時に指定されていない場合は、ラベル値が既定で使用されます。最大 100 文字まで可能です。

  • description (Optional[str]) -- 存在する場合、オプションの追加の説明。最大 100 文字まで可能です。

  • emoji (Optional[Union[str, Emoji, PartialEmoji]]) -- 利用可能な場合、オプションの絵文字。

  • default (bool) -- このオプションがデフォルトで選択されているかどうか。

label

オプションのラベル。これはユーザーに表示されます。最大 100 文字まで可能です。

str

value

オプションの値。これはユーザーには表示されません。 構築時に指定されていない場合は、ラベル値が既定で使用されます。最大 100 文字まで可能です。

str

description

存在する場合、オプションの追加の説明。最大 100 文字まで可能です。

Optional[str]

default

このオプションがデフォルトで選択されているかどうか。

bool

property emoji

利用可能な場合、オプションの絵文字。

Optional[PartialEmoji]

Choice

class discord.app_commands.Choice(*, name, value)

アプリケーションコマンドの引数の選択肢を表します。

バージョン 2.0 で追加.

x == y

二つの選択肢が等しいかを比較します。

x != y

二つの選択肢が等しいものではないか比較します。

hash(x)

選択肢のハッシュ値を返します。

パラメータ
  • name (Union[str, locale_str]) -- 選択肢の名前。表示用に使用されます。最大100文字まで可能です。

  • name_localizations (Dict[Locale, str]) -- 選択肢のローカライズされた名前。表示用に使用されます。

  • value (Union[int, str, float]) -- 選択肢の値。文字列の場合は、最大100文字まで使用できます。

列挙型

class discord.InteractionType

Interaction のタイプを指定します。

バージョン 2.0 で追加.

ping

インタラクション応答サーバーが利用可能かを確認するためのDiscordのping。

application_command

スラッシュコマンドのインタラクション。

component

コンポーネントベースのインタラクション、つまり Discord Bot UI Kitの使用。

autocomplete

オートコンプリートのインタラクション。

modal_submit

モーダル送信のインタラクション。

class discord.InteractionResponseType

インタラクションの応答タイプを示します。

バージョン 2.0 で追加.

pong

pingインタラクションにpongします。

InteractionResponse.pong() も参照してください。

channel_message

インタラクションにメッセージで応答します。

InteractionResponse.send_message() も参照してください。

deferred_channel_message

後でインタラクションにメッセージで応答します。

InteractionResponse.defer() も参照してください。

deferred_message_update

メッセージが後で更新されると約束してコンポーネントインタラクションを確認します。(実際には、メッセージを更新する必要はありません。)

InteractionResponse.defer() も参照してください。

message_update

インタラクションにメッセージを編集して応答します。

InteractionResponse.edit_message() も参照してください。

autocomplete_result

オートコンプリートインタラクションに対し提案された選択肢で応答します。

InteractionResponse.autocomplete() も参照してください。

modal

インタラクションにモーダルで応答します。

InteractionResponse.send_modal() も参照してください。

class discord.ComponentType

コンポーネントのコンポーネントタイプを表します。

バージョン 2.0 で追加.

action_row

行内に異なるコンポーネントを保持するグループコンポーネント。

button

ボタンコンポーネント。

text_input

テキストボックスコンポーネント。

select

選択メニューコンポーネント。

string_select

select のエイリアス。デフォルトの選択コンポーネントを表します。

user_select

ユーザー選択メニューコンポーネント。

role_select

ロール選択メニューコンポーネント。

mentionable_select

ユーザとロールの両方を選択できる選択メニュー。

class discord.ButtonStyle

ボタンコンポーネントのスタイルを表します。

バージョン 2.0 で追加.

primary

主なアクションのためのブループル色のボタンを表します。

secondary

主でないアクションのための灰色のボタンを表します。

success

成功したアクションを意味する緑色のボタンを表します。

danger

危険な操作を意味する赤いボタンを表します。

リンクボタンを表します。

blurple

primary のエイリアス。

grey

secondary のエイリアス。

gray

secondary のエイリアス。

green

success のエイリアス。

red

danger のエイリアス。

url

link のエイリアス。

class discord.TextStyle

テキストボックスコンポーネントのスタイルを表します。

バージョン 2.0 で追加.

short

短いテキストボックスを表します。

paragraph

長いフォームのテキストボックスを表します。

long

paragraph のエイリアス。

class discord.AppCommandOptionType

アプリケーションコマンドのオプションタイプ。これは通常アプリケーションコマンドがとるパラメータの型です。

バージョン 2.0 で追加.

subcommand

サブコマンド。

subcommand_group

サブコマンドグループ。

string

文字列パラメータ。

integer

整数パラメータ。

boolean

真偽値パラメータ。

user

ユーザーパラメータ。

channel

チャンネルパラメータ。

role

ロールパラメータ。

mentionable

メンション可能なもののパラメータ。

number

数値のパラメータ。

attachment

添付ファイルのパラメータ。

class discord.AppCommandType

アプリケーションコマンドの種類。

バージョン 2.0 で追加.

chat_input

スラッシュコマンド。

user

ユーザーコンテキストメニューコマンド。

message

メッセージコンテキストメニューコマンド。

class discord.AppCommandPermissionType

アプリケーションコマンドの権限タイプ。

バージョン 2.0 で追加.

role

権限はロール用です。

channel

権限は一つ、またはすべてのチャンネル用です。

user

権限はユーザー用です。

Bot UIキット

ライブラリにはコンポーネントベースの UI の作成を支援するヘルパーがあります。これらはすべて discord.ui パッケージにあります。

View

class discord.ui.View(*, timeout=180.0)

UIビューを表します。

Discord内でUIを作成するには、このオブジェクトを継承する必要があります。

バージョン 2.0 で追加.

パラメータ

timeout (Optional[float]) -- UIの最後のインタラクションから起算した、入力を受け付けなくなるまでの秒単位のタイムアウト。 None の場合タイムアウトはありません。

property timeout

UIの最後のインタラクションから起算した、入力を受け付けなくなるまでの秒単位のタイムアウト。 None の場合タイムアウトはありません。

Optional[float]

property children

このビューに添付された子のリスト。

List[Item]

classmethod from_message(message, /, *, timeout=180.0)

メッセージのコンポーネントを View に変換します。

メッセージの Message.components は読み取り専用で discord.ui 名前空間のものと異なる型を使用しています。メッセージコンポーネントを編集するためには最初に View に変換しないといけません。

パラメータ
  • message (discord.Message) -- ビューに変換するコンポーネントを含むメッセージ。

  • timeout (Optional[float]) -- 変換されたビューのタイムアウト。

戻り値

変換されたビュー。サブクラスではなく常に View を返します。

戻り値の型

View

add_item(item)

ビューに項目を追加します。

この関数は、流暢なスタイルのチェーンを可能にするため、クラスインスタンスを返します。

パラメータ

item (Item) -- ビューに追加する項目。

例外
  • TypeError -- Item が渡されなかった場合。

  • ValueError -- 子の最大数 (25) を超過したか、項目を追加しようとした行がいっぱいの場合。

remove_item(item)

ビューから項目を除去します。

この関数は、流暢なスタイルのチェーンを可能にするため、クラスインスタンスを返します。

パラメータ

item (Item) -- ビューから除去する項目。

clear_items()

ビューから項目をすべて除去します。

この関数は、流暢なスタイルのチェーンを可能にするため、クラスインスタンスを返します。

await interaction_check(interaction, /)

This function is a coroutine.

ビュー内でインタラクションが発生したときに呼び出される、インタラクションのコールバックを処理すべきかを確認するコールバック。

これは、インタラクションが特定のユーザーからかを確かめたい場合などに上書きすると便利です。

デフォルトの実装は True を返します。

注釈

この中で例外が発生した場合はチェックは失敗したとみなされ on_error() が呼び出されます。

パラメータ

interaction (Interaction) -- 発生したインタラクション。

戻り値

ビューの子のコールバックを呼び出すべきか。

戻り値の型

bool

await on_timeout()

This function is a coroutine.

ビューが明示的に停止されずにそのタイムアウトが経過したときに呼び出されるコールバック。

await on_error(interaction, error, item, /)

This function is a coroutine.

項目のコールバックや interaction_check() がエラーで失敗したときに呼び出されるコールバック。

デフォルトの実装はライブラリロガーに記録します。

パラメータ
  • interaction (Interaction) -- 失敗したインタラクション。

  • error (Exception) -- 発生した例外。

  • item (Item) -- 実行に失敗した項目。

stop()

このビューのインタラクションイベントを受け取るのを止めます。

この操作を元に戻すことはできません。

is_finished()

bool: ビューのインタラクションが終了したかどうか。

is_dispatching()

bool: ビューがイベント受け取り用に追加されたか。

is_persistent()

bool: ビューが永続的と設定されているかどうか。

永続的なビューは、すべてのコンポーネントに custom_id が設定されており、 timeoutNone に設定されています。

await wait()

This function is a coroutine.

ビューのインタラクションが終了するまで待ちます。

ビューは stop() が呼び出されるかタイムアウトしたときに終了したとされます。

戻り値

True の場合、ビューがタイムアウトしました。 False の場合、ビューは正常に終了しました。

戻り値の型

bool

Item

Attributes
Methods
class discord.ui.Item

すべての UI コンポーネントが継承する基本の UI 項目を表します。

現在サポートされているUI項目は次のとおりです。

バージョン 2.0 で追加.

property view

この項目が属するビュー。

Optional[View]

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

Button

Methods
class discord.ui.Button(*, style=<ButtonStyle.secondary: 2>, label=None, disabled=False, custom_id=None, url=None, emoji=None, row=None)

UIボタンを表します。

バージョン 2.0 で追加.

パラメータ
  • style (discord.ButtonStyle) -- ボタンのスタイル。

  • custom_id (Optional[str]) -- インタラクション中に受け取るボタンID。これがURLボタンの場合はカスタムIDは設定できません。

  • url (Optional[str]) -- ボタンの行き先のURL。

  • disabled (bool) -- ボタンが無効化されているかどうか。

  • label (Optional[str]) -- 存在する場合、ボタンのラベル。

  • emoji (Optional[Union[PartialEmoji, Emoji, str]]) -- 利用可能な場合、ボタンの絵文字。

  • row (Optional[int]) -- このボタンが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property style

ボタンのスタイル。

discord.ButtonStyle

property custom_id

インタラクション中に受け取るボタンID。

このボタンが URL 用の場合、カスタム ID はありません。

Optional[str]

property url

ボタンの行き先のURL。

Optional[str]

property disabled

ボタンが無効化されているかどうか。

bool

property label

利用可能な場合、ボタンのラベル。

Optional[str]

property emoji

利用可能な場合、ボタンの絵文字。

Optional[PartialEmoji]

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property view

この項目が属するビュー。

Optional[View]

@discord.ui.button(*, label=None, custom_id=None, disabled=False, style=<ButtonStyle.secondary: 2>, emoji=None, row=None)

コンポーネントにボタンを付属させるデコレータ。

デコレートされる関数には、 discord.ui.View を表す self 、受け取った discord.Interaction と押された discord.ui.Button の3つのパラメータが必要です。

注釈

この関数ではURL付きのボタンは作成できません。代わりに Button を手動で作成することを検討してください。 これは、Discordが処理を行わないため、URLのボタンに関連付けられたコールバックがないためです。

パラメータ
  • label (Optional[str]) -- 存在する場合、ボタンのラベル。

  • custom_id (Optional[str]) -- インタラクション中に受け取るボタンID。衝突を防ぐためこのパラメータを設定しないことをおすすめします。

  • style (ButtonStyle) -- ボタンのスタイル。デフォルトは ButtonStyle.grey です。

  • disabled (bool) -- ボタンを無効にするかどうか。デフォルトは False です。

  • emoji (Optional[Union[str, Emoji, PartialEmoji]]) -- ボタンの絵文字。文字列形式または PartialEmoji または完全な Emoji が渡せます。

  • row (Optional[int]) -- このボタンが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

選択メニュー

ライブラリには、さまざまな種類の選択メニューを作成するのに役立つクラスが用意されています。

Select

class discord.ui.Select(*, custom_id=..., placeholder=None, min_values=1, max_values=1, options=..., disabled=False, row=None)

カスタムのオプションから選択するUI選択メニューを表します。ユーザー側ではドロップダウンメニューとして表示されます。

バージョン 2.0 で追加.

パラメータ
  • custom_id (str) -- インタラクション中に受け取る選択メニューID。指定されていない場合は、自動で生成されます。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • options (List[discord.SelectOption]) -- このメニューで選択できるオプションのリスト。

  • disabled (bool) -- 選択メニューが無効化されているかどうか。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property values

ユーザーが選択した値のリスト。

List[str]

property type

このコンポーネントの種類。

ComponentType

property options

このメニューで選択できるオプションのリスト。

List[discord.SelectOption]

add_option(*, label, value=..., description=None, emoji=None, default=False)

選択メニューにオプションを追加します。

既存の discord.SelectOption を追加するには、代わりに append_option() メソッドを使用します。

パラメータ
  • label (str) -- オプションのラベル。これはユーザーに表示されます。最大 100 文字まで可能です。

  • value (str) -- オプションの値。これはユーザーには表示されません。渡されない場合は、ラベル値が既定で使用されます。最大 100 文字まで可能です。

  • description (Optional[str]) -- 存在する場合、オプションの追加の説明。最大 100 文字まで可能です。

  • emoji (Optional[Union[str, Emoji, PartialEmoji]]) -- 利用可能な場合、オプションの絵文字。これはカスタムまたはユニコード絵文字を表す文字列か PartialEmojiEmoji のインスタンスのいずれかです。

  • default (bool) -- このオプションがデフォルトで選択されているかどうか。

例外

ValueError -- オプションの数が25を超えている場合。

append_option(option)

選択メニューにオプションを追加します。

パラメータ

option (discord.SelectOption) -- 選択メニューに追加するオプション。

例外

ValueError -- オプションの数が25を超えている場合。

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property custom_id

インタラクション中に受け取る選択メニューID。

str

property disabled

選択メニューが無効化されているかどうか。

bool

property max_values

選択メニューにて選択できる最大の項目数。

int

property min_values

選択メニューにて選択しないといけない最小の項目数。

int

property placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

property view

この項目が属するビュー。

Optional[View]

ChannelSelect

class discord.ui.ChannelSelect(*, custom_id=..., channel_types=..., placeholder=None, min_values=1, max_values=1, disabled=False, row=None)

事前に指定されたギルド内のチャンネルから選択するUI選択メニューを表します。

これをプライベートメッセージで使用すると、チャンネルの選択肢は表示されません。

バージョン 2.1 で追加.

パラメータ
  • custom_id (str) -- インタラクション中に受け取る選択メニューID。指定されていない場合は、自動で生成されます。

  • channel_types (List[ChannelType]) -- 選択メニューに表示するチャンネルの種類。デフォルトはすべてのチャンネルです。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • disabled (bool) -- 選択メニューが無効化されているかどうか。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property custom_id

インタラクション中に受け取る選択メニューID。

str

property disabled

選択メニューが無効化されているかどうか。

bool

property max_values

選択メニューにて選択できる最大の項目数。

int

property min_values

選択メニューにて選択しないといけない最小の項目数。

int

property placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

property view

この項目が属するビュー。

Optional[View]

property type

このコンポーネントの種類。

ComponentType

property channel_types

選択可能なチャンネルの種類のリスト。

List[ChannelType]

property values

ユーザーによって選択されたチャンネルのリスト。

List[Union[AppCommandChannel, AppCommandThread]]

RoleSelect

class discord.ui.RoleSelect(*, custom_id=..., placeholder=None, min_values=1, max_values=1, disabled=False, row=None)

事前に指定されたギルド内のロールから選択するUI選択メニューを表します。

これをプライベートメッセージで使用すると、ロールの選択肢は表示されません。

バージョン 2.1 で追加.

パラメータ
  • custom_id (str) -- インタラクション中に受け取る選択メニューID。指定されていない場合は、自動で生成されます。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • disabled (bool) -- 選択メニューが無効化されているかどうか。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property type

このコンポーネントの種類。

ComponentType

property values

ユーザーが選択したロールのリスト。

List[discord.Role]

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property custom_id

インタラクション中に受け取る選択メニューID。

str

property disabled

選択メニューが無効化されているかどうか。

bool

property max_values

選択メニューにて選択できる最大の項目数。

int

property min_values

選択メニューにて選択しないといけない最小の項目数。

int

property placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

property view

この項目が属するビュー。

Optional[View]

MentionableSelect

class discord.ui.MentionableSelect(*, custom_id=..., placeholder=None, min_values=1, max_values=1, disabled=False, row=None)

事前に指定されたギルド内のメンバーとロールから選択するUI選択メニューを表します。

これがプライベートメッセージで送信された場合、ユーザーはこのクライアントまたは自分自身のみ選択できます。 プライベートメッセージ内で選択されたオプションは、すべて discord.User に解決されます。ロールは選択できません。

バージョン 2.1 で追加.

パラメータ
  • custom_id (str) -- インタラクション中に受け取る選択メニューID。指定されていない場合は、自動で生成されます。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • disabled (bool) -- 選択メニューが無効化されているかどうか。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property type

このコンポーネントの種類。

ComponentType

property values

ユーザーが選択したロール、メンバー、またはユーザーのリスト。

これがプライベートメッセージで送信された場合、ユーザーはこのクライアントまたは自分自身のみ選択できます。 プライベートメッセージ内で選択されたオプションは、すべて discord.User に解決されます。

ギルドで呼び出された場合、値は常に discord.Member に解決されます。

List[Union[discord.Role, discord.Member, discord.User]]

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property custom_id

インタラクション中に受け取る選択メニューID。

str

property disabled

選択メニューが無効化されているかどうか。

bool

property max_values

選択メニューにて選択できる最大の項目数。

int

property min_values

選択メニューにて選択しないといけない最小の項目数。

int

property placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

property view

この項目が属するビュー。

Optional[View]

UserSelect

class discord.ui.UserSelect(*, custom_id=..., placeholder=None, min_values=1, max_values=1, disabled=False, row=None)

事前に指定されたギルド内のメンバーから選択するUI選択メニューを表します。

これがプライベートメッセージで送信された場合、ユーザーはこのクライアントまたは自分自身のみ選択できます。 プライベートメッセージ内で選択されたオプションは、すべて discord.User に解決されます。

バージョン 2.1 で追加.

パラメータ
  • custom_id (str) -- インタラクション中に受け取る選択メニューID。指定されていない場合は、自動で生成されます。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • disabled (bool) -- 選択メニューが無効化されているかどうか。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property type

このコンポーネントの種類。

ComponentType

property values

ユーザーが選択したメンバーまたはユーザーのリスト。

これがプライベートメッセージで送信された場合、ユーザーはこのクライアントまたは自分自身のみ選択できます。 プライベートメッセージ内で選択されたオプションは、すべて discord.User に解決されます。

ギルドで呼び出された場合、値は常に discord.Member に解決されます。

List[Union[discord.Member, discord.User]]

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property custom_id

インタラクション中に受け取る選択メニューID。

str

property disabled

選択メニューが無効化されているかどうか。

bool

property max_values

選択メニューにて選択できる最大の項目数。

int

property min_values

選択メニューにて選択しないといけない最小の項目数。

int

property placeholder

存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

Optional[str]

property view

この項目が属するビュー。

Optional[View]

select

@discord.ui.select(*, cls=discord.ui.select.Select[+ V], options=..., channel_types=..., placeholder=None, custom_id=..., min_values=1, max_values=1, disabled=False, row=None)

コンポーネントに選択メニューを付属させるデコレータ。

デコレートされる関数には、 discord.ui.View を表す self 、受け取った discord.Interaction と選択クラスの3つのパラメータが必要です。

コールバック内で選択した値を取得するには、コールバック内で選択したクラスの values 属性を使用します。 値のリストは、使用される選択メニューの種類によって異なります。詳細については、以下の表を参照してください。

バージョン 2.1 で変更: 次のキーワード引数を追加しました: cls, channel_types

サンプル

class View(discord.ui.View):

    @discord.ui.select(cls=ChannelSelect, channel_types=[discord.ChannelType.text])
    async def select_channels(self, interaction: discord.Interaction, select: ChannelSelect):
        return await interaction.response.send_message(f'You selected {select.values[0].mention}')
パラメータ
  • cls (Union[Type[discord.ui.Select], Type[discord.ui.UserSelect], Type[discord.ui.RoleSelect], Type[discord.ui.MentionableSelect], Type[discord.ui.ChannelSelect]]) -- 選択メニューに使用するクラス。デフォルトは discord.ui.Select です。 他の選択メニューを使用して、ユーザーに対し異なる選択メニューを表示できます。 それぞれの選択メニューから得られる値については、上の表を参照してください。 サブクラスも同様に機能しますが、サブクラスのコールバックはオーバーライドされます。

  • placeholder (Optional[str]) -- 存在する場合、何も選択されていないときに表示するプレースホルダーテキスト。

  • custom_id (str) -- インタラクション中に受け取る選択メニューID。衝突を防ぐためこのパラメータを設定しないことをおすすめします。

  • row (Optional[int]) -- この選択メニューが属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

  • min_values (int) -- 選択メニューにて選択しないといけない最小の項目数。デフォルトは1で、値は0以上25以下でないといけません。

  • max_values (int) -- 選択メニューにて選択できる最大の項目数。デフォルトは1で、値は1以上25以下でないといけません。

  • options (List[discord.SelectOption]) -- このメニューで選択できるオプションのリスト。 Select インスタンスでのみ使用できます。

  • channel_types (List[ChannelType]) -- 選択メニューに表示するチャンネルの種類。デフォルトはすべてのチャンネルです。これは ChannelSelect インスタンスでのみ使用できます。

  • disabled (bool) -- 選択メニューを無効にするかどうか。デフォルトは False です。

TextInput

class discord.ui.TextInput(*, label, style=<TextStyle.short: 1>, custom_id=..., placeholder=None, default=None, required=True, min_length=None, max_length=None, row=None)

UI のテキスト入力を表します。

str(x)

テキスト入力の値、または None の場合空文字列を返します。

バージョン 2.0 で追加.

パラメータ
  • label (str) -- テキスト入力の上に表示するラベル。

  • custom_id (str) -- インタラクション中に受け取るテキスト入力ID。指定されていない場合は、自動で生成されます。

  • style (discord.TextStyle) -- テキスト入力のスタイル。

  • placeholder (Optional[str]) -- テキスト入力が空の場合に表示されるプレースホルダーテキスト。

  • default (Optional[str]) -- テキスト入力のデフォルト値。

  • required (bool) -- テキスト入力が必須かどうか。

  • min_length (Optional[int]) -- テキスト入力の最小の長さ。

  • max_length (Optional[int]) -- テキスト入力の最大の長さ。

  • row (Optional[int]) -- このテキスト入力が属する相対的な行。Discordコンポーネントは5行しか持てません。デフォルトでは、項目は自動的にこの5行に配置されます。 行の相対位置を制御したい場合は、インデックスを渡すことをお勧めします。 例えば、row=1 は row=2 の前に表示されます。デフォルトは None です。これは自動順序です。 行番号は 0 から 4 の間(つまり、0始まり)でなければなりません。

property custom_id

インタラクション中に受け取るテキスト入力ID。

str

property value

テキスト入力の値。

str

property label

テキスト入力のラベル。

str

property placeholder

テキスト入力が空の場合に表示されるプレースホルダーテキスト。

str

property required

テキスト入力が必須かどうか。

bool

property min_length

テキスト入力の最小の長さ。

int

property max_length

テキスト入力の最大の長さ。

int

property style

テキスト入力のスタイル。

discord.TextStyle

await callback(interaction)

This function is a coroutine.

このUI 項目に関連付けられたコールバック。

これはサブクラスによって上書きできます。

パラメータ

interaction (Interaction) -- このUI項目を呼び出したインタラクション。

property view

この項目が属するビュー。

Optional[View]

property default

テキスト入力のデフォルト値。

str

アプリケーションコマンド

ライブラリにはアプリケーションコマンドの作成を支援するヘルパーがあります。これらはすべて discord.app_commands パッケージにあります。

CommandTree

class discord.app_commands.CommandTree(client, *, fallback_to_global=True)

アプリケーションコマンド情報を持つコンテナ。

パラメータ
  • client (Client) -- アプリケーションコマンドの情報を取得するためのクライアントインスタンス。

  • fallback_to_global (bool) -- ギルド固有のコマンドが呼び出されたときに見つからない場合は、ツリー内のグローバルコマンドを呼び出します。 例えば、ローカル環境でグローバル名前空間の下に /ping コマンドがあるが、ギルド本体ではギルド固有の /ping がある場合、ギルド固有の /ping コマンドを見つけるのに失敗せずに、グローバルの /ping コマンドをフォールバックとして使用します。 これは CommandSignatureMismatch エラーを通常より多く引き起こす可能性があります。デフォルトは True です。

@command(*, name=..., description=..., nsfw=False, guild=..., guilds=..., auto_locale_strings=True, extras=...)

通常の関数からアプリケーションコマンドをこのツリーの下に直接作成するデコレータ。

パラメータ
  • name (Union[str, locale_str]) -- アプリケーションコマンドの名前。指定しない場合は、コールバック名を小文字化したものになります。

  • description (Union[str, locale_str]) -- アプリケーションコマンドの説明。これは、アプリケーションコマンドを説明するためにUIに表示されます。 指定されていない場合は、コールバックの docstring の最初の行を 100 文字以内に短縮したものが使用されます。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • guild (Optional[Snowflake]) -- コマンドを追加するギルド。指定されていない場合や None の場合これはグローバルコマンドになります。

  • guilds (List[Snowflake]) -- コマンドを追加するギルドのリスト。 guild パラメータと併用できません。指定されていない場合これは代わりにグローバルコマンドになります。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

@context_menu(*, name=..., nsfw=False, guild=..., guilds=..., auto_locale_strings=True, extras=...)

通常の関数からアプリケーションコマンドコンテキストメニューをこのツリーの下に直接作成するデコレータ。

関数は第一パラメータとして Interaction を取り、第二パラメータとして MemberUserMessage 、または MemberUsertyping.Union を取らないといけません。

サンプル

@app_commands.context_menu()
async def react(interaction: discord.Interaction, message: discord.Message):
    await interaction.response.send_message('Very cool message!', ephemeral=True)

@app_commands.context_menu()
async def ban(interaction: discord.Interaction, user: discord.Member):
    await interaction.response.send_message(f'Should I actually ban {user}...', ephemeral=True)
パラメータ
  • name (Union[str, locale_str]) -- コンテキストメニューコマンドの名前。指定しない場合はデフォルトでコールバック名をタイトルケース化したものになります。 通常のスラッシュコマンドとは異なり、名前にスペースと大文字を含めることができます。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • guild (Optional[Snowflake]) -- コマンドを追加するギルド。指定されていない場合や None の場合これはグローバルコマンドになります。

  • guilds (List[Snowflake]) -- コマンドを追加するギルドのリスト。 guild パラメータと併用できません。指定されていない場合これは代わりにグローバルコマンドになります。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

@error(coro)

コルーチンをローカルエラーハンドラとして登録するデコレータ。

on_error() コールバックのシグネチャと一致する必要があります。

渡されたエラーは AppCommandError を継承しています。

パラメータ

coro (coroutine) -- ローカルエラーハンドラとして登録するコルーチン。

例外

TypeError -- 渡されたコルーチンが実際にはコルーチンでないか、シグネチャが一致しない場合。

await fetch_command(command_id, /, *, guild=None)

This function is a coroutine.

アプリケーションからアプリケーションコマンドを取得します。

パラメータ
  • command_id (int) -- 取得するコマンドのID。

  • guild (Optional[Snowflake]) -- コマンドを取得するギルド。渡されない場合は、代わりにグローバルコマンドが取得されます。

例外
  • HTTPException -- コマンドの取得に失敗した場合。

  • MissingApplicationID -- アプリケーションコマンドが見つからなかった場合。

  • NotFound -- アプリケーションコマンドが見つからなかった場合。 これは、コマンドがギルドコマンドであるのにギルドが指定されていない場合またはその逆を含みます。

戻り値

アプリケーションコマンド。

戻り値の型

AppCommand

await fetch_commands(*, guild=None)

This function is a coroutine.

アプリケーションの現在のコマンドを取得します。

ギルドが渡されない場合、グローバルコマンドが取得されます。そうでなければ、代わりにギルドのコマンドが取得されます。

注釈

これにはコンテキストメニューコマンドが含まれます。

パラメータ

guild (Optional[Snowflake]) -- コマンドを取得するギルド。渡されない場合は、代わりにグローバルコマンドが取得されます。

例外
戻り値

アプリケーションコマンド。

戻り値の型

List[AppCommand]

copy_global_to(*, guild)

指定したギルドにグローバルコマンドをすべてコピーします。

これは、グローバルコマンドをテスト用のギルドにコピーできるので、主に開発のために提供されています。

このメソッドは競合する既存のギルドコマンドを 上書き することに注意してください。

パラメータ

guild (Snowflake) -- コマンドをコピーするギルド。

例外

CommandLimitReached -- ギルドの最大コマンド数に達した場合。これはスラッシュコマンドでは100個で、コンテキストメニューコマンドでは5個です。

add_command(command, /, *, guild=..., guilds=..., override=False)

ツリーにアプリケーションコマンドを追加します。

これはコマンドをローカルに追加するだけです -- コマンドを同期してクライアントで有効にするには、 sync() を呼び出す必要があります。

渡された種類に関係なく、コマンドの親も追加されます。

パラメータ
  • command (Union[Command, Group]) -- 追加するアプリケーションコマンドまたはグループ。

  • guild (Optional[Snowflake]) -- コマンドを追加するギルド。指定されていない場合や None の場合これはグローバルコマンドになります。

  • guilds (List[Snowflake]) -- コマンドを追加するギルドのリスト。 guild パラメータと併用できません。指定されていない場合これは代わりにグローバルコマンドになります。

  • override (bool) -- 同じ名前のコマンドを上書きするかどうか。 False の場合例外が発生します。デフォルトは False です。

例外
  • CommandAlreadyRegistered -- コマンドが既に登録されていて、上書きすると指定されていない場合。

  • TypeError -- 渡されたアプリケーションコマンドが有効でない場合、または guildguilds の両方が与えられた場合。

  • CommandLimitReached -- グローバルでの、またはギルドの最大コマンド数に達した場合。これはスラッシュコマンドでは100個で、コンテキストメニューコマンドでは5個です。

remove_command(command, /, *, guild=None, type=<AppCommandType.chat_input: 1>)

ツリーからアプリケーションコマンドを除去します。

これはコマンドをローカルで除去するだけです -- コマンドを同期してクライアントで除去するには、 sync() を呼び出す必要があります。

パラメータ
  • command (str) -- 除去するルートコマンドの名前。

  • guild (Optional[Snowflake]) -- コマンドを除去するギルド。指定されていない場合や None の場合グローバルコマンドを除去します。

  • type (AppCommandType) -- 除去するコマンドの種類。デフォルトは chat_input 、すなわちスラッシュコマンドです。

戻り値

除去されたアプリケーションコマンド。何も除去されなかった場合は None が返ります。

戻り値の型

Optional[Union[Command, ContextMenu, Group]]

clear_commands(*, guild, type=None)

ツリーからアプリケーションコマンドをすべて除去します。

これはコマンドをローカルで除去するだけです -- コマンドを同期してクライアントで除去するには、 sync() を呼び出す必要があります。

パラメータ
  • guild (Optional[Snowflake]) -- コマンドを除去するギルド。指定されていない場合や None の場合グローバルコマンドを除去します。

  • type (AppCommandType) -- 除去するコマンドの種類。指定されていない場合や None の場合種類にかかわらず除去します。

get_command(command, /, *, guild=None, type=<AppCommandType.chat_input: 1>)

ツリーからアプリケーションコマンドを取得します。

パラメータ
  • command (str) -- 取得するルートコマンドの名前。

  • guild (Optional[Snowflake]) -- コマンドを取得するギルド。指定されていない場合や None の場合グローバルコマンドを取得します。

  • type (AppCommandType) -- 取得するコマンドの種類。デフォルトは chat_input 、すなわちスラッシュコマンドです。

戻り値

見つかったアプリケーションコマンド。存在しない場合は None が返ります。

戻り値の型

Optional[Union[Command, ContextMenu, Group]]

get_commands(*, guild=None, type=None)

ツリーからアプリケーションコマンドをすべて取得します。

パラメータ
  • guild (Optional[Snowflake]) -- グローバルコマンドを含まないコマンドを取得するギルド。指定されていない場合や None の場合はグローバルコマンドが返ります。

  • type (Optional[AppCommandType]) -- 取得するコマンドの種類。指定されていない場合や None の場合はすべてのコマンドが返されます。

戻り値

ツリーのアプリケーションコマンド。

戻り値の型

List[Union[ContextMenu, Command, Group]]

for ... in walk_commands(*, guild=None, type=<AppCommandType.chat_input: 1>)

ツリーのすべてのアプリケーションコマンドと子コマンドを再帰的に網羅するイテレータ。

パラメータ
  • guild (Optional[Snowflake]) -- グローバルコマンドを含まないコマンドをイテレートするギルド。指定されていない場合や None の場合はグローバルコマンドがイテレートされます。

  • type (AppCommandType) -- イテレートするコマンドの種類。デフォルトは chat_input 、すなわちスラッシュコマンドです。

列挙

Union[ContextMenu, Command, Group] -- ツリーのアプリケーションコマンド。

await on_error(interaction, error, /)

This function is a coroutine.

どれかのコマンドが AppCommandError を送出したときに呼び出されるコールバック。

デフォルトの実装ではコマンドにエラーハンドラーが付属したいない場合のみ例外をライブラリロガーを用いて記録します。

失敗したコマンドを取得するには、 discord.Interaction.command を使用してください。

パラメータ
property translator

存在する場合、コマンドの翻訳を担当するトランスレータ。

トランスレータを変更するには、 set_translator() を使用してください。

Optional[Translator]

await set_translator(translator)

This function is a coroutine.

コマンドの翻訳に使用するトランスレータを設定します。

以前にトランスレータが設定されていた場合は、 Translator.unload() メソッドを使用してアンロードされます。

トランスレータが設定されると、 Translator.load() メソッドを使用して読み込まれます。

パラメータ

translator (Optional[Translator]) -- 使用するトランスレータ。 None の場合、トランスレータは単に除去され、アンロードされます。

例外

TypeError -- トランスレータが None または Translator インスタンスでない場合。

await sync(*, guild=None)

This function is a coroutine.

アプリケーションコマンドをDiscordに同期します。

また、これは、トランスレータを実行し、Discordに提供する翻訳された文字列を取得します。

アプリケーションコマンドを表示するためには、これを呼び出さないといけません。

パラメータ

guild (Optional[Snowflake]) -- コマンドを同期するギルド。指定されていない場合や None の場合グローバルコマンドを同期します。

例外
  • HTTPException -- コマンドの同期に失敗した場合。

  • CommandSyncFailure -- コマンドに不正なデータがあるなど、ユーザーによる誤りのためコマンドの同期が失敗した場合。これはHTTPステータスコード 400に相当します。

  • Forbidden -- クライアントがギルドで applications.commands スコープを有さない場合。

  • MissingApplicationID -- クライアントにアプリケーションIDがない場合。

  • TranslationError -- コマンドの翻訳中にエラーが発生した場合。

戻り値

同期されたアプリケーションコマンド。

戻り値の型

List[AppCommand]

await interaction_check(interaction, /)

This function is a coroutine.

Interaction がツリーによって処理されるかどうかを判断するグローバルチェック。

デフォルトの実装では、True が返されます (すべてのインタラクションが処理されます)が、カスタム動作が必要な場合は上書きできます。

コマンド

Command

class discord.app_commands.Command(*, name, description, callback, nsfw=False, parent=None, guild_ids=None, auto_locale_strings=True, extras=...)

アプリケーションコマンドを実装するクラス。

これは通常手動で作成されず、代わりに以下のデコレータを使用して作成されます。

バージョン 2.0 で追加.

パラメータ
  • name (Union[str, locale_str]) -- アプリケーションコマンドの名前。

  • description (Union[str, locale_str]) -- アプリケーションコマンドの説明。これは、アプリケーションコマンドを説明するためのUIに表示されます。

  • callback (coroutine) -- コマンドが呼び出されたときに実行されるコルーチン。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • parent (Optional[Group]) -- 親アプリケーションコマンド。存在しない場合は None

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

name

アプリケーションコマンドの名前。

str

description

アプリケーションコマンドの説明。これは、アプリケーションコマンドを説明するためのUIに表示されます。

str

checks

コマンドコールバックが実行されるべきかを示す Interaction パラメータを取るチェック関数の一覧。もし失敗を示すために例外を送出しないといけない場合は、 AppCommandError を継承するものを使用すべきです。もしすべてのチェックが例外を送出せずに失敗した場合は CheckFailure が発生します。

default_permissions

Discordでこのコマンドを実行できるデフォルトの権限。サーバー管理者はクライアントでこの値を上書きすることができます。 空の権限フィールドを設定すると、サーバー管理者以外はギルド内でそのコマンドを使用できなくなります。

Discord側の制限のため、サブコマンドでは動作しません。

Optional[Permissions]

guild_only

コマンドをギルド内でのみ使用できるようにするかどうか。

Discord側の制限のため、サブコマンドでは動作しません。

bool

nsfw

コマンドに年齢制限をかけて、年齢制限つきチャンネルのみで利用できるようにすべきか。

Discord側の制限のため、サブコマンドでは動作しません。

bool

parent

親アプリケーションコマンド。存在しない場合は None

Optional[Group]

extras

追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

dict

@autocomplete(name)

パラメータのオートコンプリートに使用されるコルーチンを登録するデコレータ。

コルーチンのコールバックは、 Interaction とユーザーが現在入力している値 (入力された文字列) の 2 つのパラメータを受け取らないといけません。

入力される可能性のある他のパラメータの値を取得するには、 Interaction.namespace にアクセスして、これらの値を持つ Namespace オブジェクトを取得できます。

親の チェック はオートコンプリート内で無視されます。 ただし、チェックはautocomplete コールバックに追加することができ、追加したものが呼び出されます。 何らかの理由でチェックに失敗した場合、インタラクションの応答として空のリストが送信されます。

コルーチンのデコレータは Choice オブジェクトのリストを 返さないといけません 。オブジェクトは25個まで返すことができます。

警告

このコルーチンから返される選択肢はあくまで提案であって、ユーザーはそれらを無視して自分の値を入力することができます。

例:

@app_commands.command()
async def fruits(interaction: discord.Interaction, fruit: str):
    await interaction.response.send_message(f'Your favourite fruit seems to be {fruit}')

@fruits.autocomplete('fruit')
async def fruits_autocomplete(
    interaction: discord.Interaction,
    current: str,
) -> List[app_commands.Choice[str]]:
    fruits = ['Banana', 'Pineapple', 'Apple', 'Watermelon', 'Melon', 'Cherry']
    return [
        app_commands.Choice(name=fruit, value=fruit)
        for fruit in fruits if current.lower() in fruit.lower()
    ]
パラメータ

name (str) -- オートコンプリートに登録するパラメータ名。

例外

TypeError -- 渡されたコルーチンが実際にはコルーチンでない場合や、パラメータが見つからず、または無効な型であった場合。

@error(coro)

コルーチンをローカルエラーハンドラとして登録するデコレータ。

ローカルのエラーハンドラは、コマンドの本体やコマンドの処理中に例外が発生するたびに呼び出されます。 エラーハンドラは、インタラクションとエラーの2つのパラメータを取らないといけません。

渡されたエラーは AppCommandError を継承しています。

パラメータ

coro (coroutine) -- ローカルエラーハンドラとして登録するコルーチン。

例外

TypeError -- 渡された関数がコルーチンではない場合。

property callback

コマンドが呼び出されたときに実行されるコルーチン。

coroutine

property parameters

このコマンドのパラメータのリストを返します。

これには selfinteraction パラメータは含まれていません。

戻り値

このコマンドのパラメータ。

戻り値の型

List[Parameter]

get_parameter(name)

名前からパラメータを取得します。

名前は Discordで表示される改名後のものではなく、Pythonの識別子でないといけません。

パラメータ

name (str) -- コールバック関数のパラメータ名。

戻り値

パラメータ、または該当するものが見つからない場合 None が返ります。

戻り値の型

Optional[Parameter]

property root_parent

コマンドの大元の親。

Optional[Group]

property qualified_name

完全修飾されたコマンド名を返します。

修飾名には親の名前も含まれています。例えば、 /foo bar のようなコマンドでは修飾名は foo bar です。

str

add_check(func, /)

コマンドにチェックを追加します。

これは check() に対する非デコレーターインターフェイスです。

パラメータ

func -- チェックとして使用される関数。

remove_check(func, /)

コマンドからチェックを除去します。

この関数は冪等性を保持しており、関数がコマンドのチェックに含まれていない場合でも例外が発生しません。

パラメータ

func -- チェックから除去する関数。

Parameter

class discord.app_commands.Parameter

Command コールバックのパラメータ情報を含むクラス。

バージョン 2.0 で追加.

name

パラメータの名前。これはパラメータのPython識別子です。

str

display_name

Discordに表示されるパラメータの名前。

str

description

パラメータの説明。

str

autocomplete

パラメータにオートコンプリートハンドラがあるかどうか。

bool

locale_name

利用可能な場合、表示名のローカライズ可能な文字列。

Optional[locale_str]

locale_description

利用可能な場合、説明のローカライズ可能な文字列。

Optional[locale_str]

required

パラメータが必須かどうか。

bool

choices

存在する場合、このパラメータが取る選択肢のリスト。

List[Choice]

type

このパラメータの種類。

AppCommandOptionType

channel_types

このパラメータにて利用できるチャンネルの種類。

List[ChannelType]

min_value

このパラメータがサポートする最小の値。

Optional[Union[int, float]]

max_value

このパラメータがサポートする最大の値。

Optional[Union[int, float]]

default

指定されている場合、パラメータの既定値。指定されていない場合は、 MISSING です。

Any

command

このパラメータが属するコマンド。

Command

ContextMenu

class discord.app_commands.ContextMenu(*, name, callback, type=..., nsfw=False, guild_ids=None, auto_locale_strings=True, extras=...)

コンテキストメニューアプリケーションコマンドを実装するクラス。

これは通常手動で作成されず、代わりに以下のデコレータを使用して作成されます。

バージョン 2.0 で追加.

パラメータ
  • name (Union[str, locale_str]) -- コンテキストメニューの名前。

  • callback (coroutine) -- コマンドが呼び出されたときに実行されるコルーチン。

  • type (AppCommandType) -- コンテキストメニューアプリケーションコマンドの種類。デフォルトでは、コールバックのパラメータによって推定されます。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

name

コンテキストメニューの名前。

str

type

コンテキストメニューアプリケーションコマンドの種類。デフォルトでは、コールバックのパラメータによって推定されます。

AppCommandType

default_permissions

Discordでこのコマンドを実行できるデフォルトの権限。サーバー管理者はクライアントでこの値を上書きすることができます。 空の権限フィールドを設定すると、サーバー管理者以外はギルド内でそのコマンドを使用できなくなります。

Optional[Permissions]

guild_only

コマンドをギルド内でのみ使用できるようにするかどうか。デフォルトは False です。

bool

nsfw

コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。

bool

checks

コマンドコールバックが実行されるべきかを示す Interaction パラメータを取るチェック関数の一覧。もし失敗を示すために例外を送出しないといけない場合は、 AppCommandError を継承するものを使用すべきです。もしすべてのチェックが例外を送出せずに失敗した場合は CheckFailure が発生します。

extras

追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

dict

@error(coro)

コルーチンをローカルエラーハンドラとして登録するデコレータ。

ローカルのエラーハンドラは、コマンドの本体やコマンドの処理中に例外が発生するたびに呼び出されます。 エラーハンドラは、インタラクションとエラーの2つのパラメータを取らないといけません。

渡されたエラーは AppCommandError を継承しています。

パラメータ

coro (coroutine) -- ローカルエラーハンドラとして登録するコルーチン。

例外

TypeError -- 渡された関数がコルーチンではない場合。

property callback

コンテキストメニューが呼び出されたときに実行されるコルーチン。

coroutine

property qualified_name

完全修飾されたコマンド名を返します。

str

add_check(func, /)

コマンドにチェックを追加します。

これは check() に対する非デコレーターインターフェイスです。

パラメータ

func -- チェックとして使用される関数。

remove_check(func, /)

コマンドからチェックを除去します。

この関数は冪等性を保持しており、関数がコマンドのチェックに含まれていない場合でも例外が発生しません。

パラメータ

func -- チェックから除去する関数。

Group

class discord.app_commands.Group(*, name=..., description=..., parent=None, guild_ids=None, guild_only=..., nsfw=..., auto_locale_strings=True, default_permissions=..., extras=...)

アプリケーションコマンドグループを実装するクラス。

これらは通常、手動で作成するのではなく継承されます。

guild_only()guilds()default_permissions() などのデコレータは、サブクラスの上に置かれている場合、グループに適用されます。例えば:

from discord import app_commands

@app_commands.guild_only()
class MyGroup(app_commands.Group):
    pass

バージョン 2.0 で追加.

パラメータ
  • name (Union[str, locale_str]) -- グループ名。指定しない場合は、デフォルトでは小文字のケバブケース化したクラス名です。

  • description (Union[str, locale_str]) -- グループの説明。これは、グループを説明するためにUIに表示されます。 指定されていない場合は、クラスの docstring を 100 文字以内に短縮したものが使用されます。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • default_permissions (Optional[Permissions]) -- Discordでこのグループを実行できるデフォルトの権限。サーバー管理者はクライアントでこの値を上書きすることができます。 空の権限フィールドを設定すると、サーバー管理者以外はギルド内でそのコマンドを使用できなくなります。Discordの制限により、サブコマンドでは利用できません。

  • guild_only (bool) -- グループをギルド内でのみ使用できるようにするかどうか。デフォルトは False です。Discordの制限により、サブコマンドでは利用できません。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • parent (Optional[Group]) -- 親アプリケーションコマンド。存在しない場合は None

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

name

グループの名前。

str

description

グループの説明。グループを説明するため、UIに表示されます。

str

default_permissions

Discordでこのグループを実行できるデフォルトの権限。サーバー管理者はクライアントでこの値を上書きすることができます。 空の権限フィールドを設定すると、サーバー管理者以外はギルド内でそのコマンドを使用できなくなります。

Discord側の制限のため、サブコマンドでは動作しません。

Optional[Permissions]

guild_only

グループをギルド内でのみ使用できるようにするかどうか。

Discord側の制限のため、サブコマンドでは動作しません。

bool

nsfw

コマンドに年齢制限をかけて、年齢制限つきチャンネルのみで利用できるようにすべきか。

Discord側の制限のため、サブコマンドでは動作しません。

bool

parent

親グループ。存在しない場合は None

Optional[Group]

extras

追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

dict

@command(*, name=..., description=..., nsfw=False, auto_locale_strings=True, extras=...)

通常の関数からアプリケーションコマンドをこのグループの下に作成するデコレータ。

パラメータ
  • name (Union[str, locale_str]) -- アプリケーションコマンドの名前。指定しない場合は、コールバック名を小文字化したものになります。

  • description (Union[str, locale_str]) -- アプリケーションコマンドの説明。これは、アプリケーションコマンドを説明するためにUIに表示されます。 指定されていない場合は、コールバックの docstring の最初の行を 100 文字以内に短縮したものが使用されます。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

@error(coro)

コルーチンをローカルエラーハンドラとして登録するデコレータ。

ローカルのエラーハンドラは、子コマンドで例外が発生するたびに呼び出されます。 エラーハンドラは、インタラクションとエラーの2つのパラメータを取らないといけません。

渡されたエラーは AppCommandError を継承しています。

パラメータ

coro (coroutine) -- ローカルエラーハンドラとして登録するコルーチン。

例外

TypeError -- 渡されたコルーチンが実際にはコルーチンでないか、無効なコルーチンである場合。

property root_parent

このグループの親。

Optional[Group]

property qualified_name

完全修飾されたグループ名を返します。

修飾名には親の名前も含まれています。例えば、 /foo bar のようなグループでは修飾名は foo bar です。

str

property commands

このグループに含まれるコマンド。

List[Union[Command, Group]]

for ... in walk_commands()

グループが含むすべてのコマンドを、再帰的に網羅するイテレータ。

列挙

Union[Command, Group] -- グループ内のコマンド。

await on_error(interaction, error, /)

This function is a coroutine.

子コマンドが AppCommandError を送出したときに呼び出されるコールバック。

失敗したコマンドを取得するには、 discord.Interaction.command を使用してください。

デフォルトの実装では何もしません。

パラメータ
await interaction_check(interaction, /)

This function is a coroutine.

グループ内でインタラクションが発生したときに、グループ内のコマンドを実行すべきかを確認するコールバック。

これは、インタラクションが特定のユーザーからかを確かめたい場合などに上書きすると便利です。

デフォルトの実装は True を返します。

注釈

この中で例外が発生した場合チェックが失敗したとみなされ on_error() のようなエラーハンドラが呼び出されます。詳細は AppCommandError を参照してください。

パラメータ

interaction (Interaction) -- 発生したインタラクション。

戻り値

ビューの子のコールバックを呼び出すべきか。

戻り値の型

bool

add_command(command, /, *, override=False)

このグループの内部コマンドリストにコマンドまたはグループを追加します。

パラメータ
  • command (Union[Command, Group]) -- 追加するコマンドまたはグループ。

  • override (bool) -- 既存の同名のコマンドまたはグループを上書きするかどうか。 False の場合は例外が発生します。

例外
  • CommandAlreadyRegistered -- コマンドやグループがすでに登録されている場合。なお、この場合 CommandAlreadyRegistered.guild_id は常に None になります。

  • ValueError -- 登録されたコマンド数が多すぎるか、グループが深くネストされすぎている場合。

  • TypeError -- 間違った種類のコマンドが渡された場合。

remove_command(name, /)

内部のコマンドリストから該当するコマンドまたはグループを検索し、それを除去します。

パラメータ

name (str) -- 除去するコマンドまたはグループの名前。

戻り値

除去されたコマンド。何も除去されなかった場合は None が返ります。

戻り値の型

Optional[Union[Command, Group]]

get_command(name, /)

名前からコマンドまたはグループを取得します。

パラメータ

name (str) -- 取得するコマンドまたはグループの名前。

戻り値

取得されたコマンドまたはグループ。何も見つからなかった場合は None が返ります。

戻り値の型

Optional[Union[Command, Group]]

デコレータ

@discord.app_commands.command(*, name=..., description=..., nsfw=False, auto_locale_strings=True, extras=...)

通常の関数からアプリケーションコマンドを作成します。

パラメータ
  • name (str) -- アプリケーションコマンドの名前。指定しない場合は、コールバック名を小文字化したものになります。

  • description (str) -- アプリケーションコマンドの説明。これは、アプリケーションコマンドを説明するためにUIに表示されます。 指定されていない場合は、コールバックの docstring の最初の行を 100 文字以内に短縮したものが使用されます。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

@discord.app_commands.context_menu(*, name=..., nsfw=False, auto_locale_strings=True, extras=...)

通常の関数からアプリケーションコマンドコンテキストメニューを作成します。

関数は第一パラメータとして Interaction を取り、第二パラメータとして MemberUserMessage 、または MemberUsertyping.Union を取らないといけません。

サンプル

@app_commands.context_menu()
async def react(interaction: discord.Interaction, message: discord.Message):
    await interaction.response.send_message('Very cool message!', ephemeral=True)

@app_commands.context_menu()
async def ban(interaction: discord.Interaction, user: discord.Member):
    await interaction.response.send_message(f'Should I actually ban {user}...', ephemeral=True)
パラメータ
  • name (Union[str, locale_str]) -- コンテキストメニューコマンドの名前。指定しない場合はデフォルトでコールバック名をタイトルケース化したものになります。 通常のスラッシュコマンドとは異なり、名前にスペースと大文字を含めることができます。

  • nsfw (bool) -- コマンドに年齢制限をかけて、年齢制限つきチャンネルでのみ利用できるようにすべきか。デフォルトでは False です。Discordの制限により、サブコマンドでは利用できません。

  • auto_locale_strings (bool) -- これが True に設定されている場合、すべての翻訳可能な文字列が str でなく:class:locale_str にラップされます。これを用いると、デフォルトのコマンド名、コマンド説明、パラメータ名などを繰り返し記述するのを避け、より使いやすくなるかもしれません。デフォルトは True です。

  • extras (dict) -- 追加のデータを保管できる辞書型。ライブラリは辞書型の中のキーや値を一切操作しません。

@discord.app_commands.describe(**parameters)

キーワード引数のキーを名前として使用して与えられたパラメータを説明します。

例:

@app_commands.command(description='Bans a member')
@app_commands.describe(member='the member to ban')
async def ban(interaction: discord.Interaction, member: discord.Member):
    await interaction.response.send_message(f'Banned {member}')

または、Google、Sphinx、Numpy スタイルのドキュメント文字列を使用してパラメータを記述することもできます。

例:

@app_commands.command()
async def ban(interaction: discord.Interaction, member: discord.Member):
    """Bans a member

    Parameters
    -----------
    member: discord.Member
        the member to ban
    """
    await interaction.response.send_message(f'Banned {member}')
パラメータ

**parameters (Union[str, locale_str]) -- パラメータの説明。

例外

TypeError -- パラメータ名が見つからない場合。

@discord.app_commands.rename(**parameters)

キーワード引数のキーを名前として使用して与えられたパラメータを改名します。

これはDiscord UI内のパラメータの名前を変更します。 他のデコレータでパラメータを参照する場合、改名先のものではなく関数内で使用されるパラメータ名を使用しないといけません。

例:

@app_commands.command()
@app_commands.rename(the_member_to_ban='member')
async def ban(interaction: discord.Interaction, the_member_to_ban: discord.Member):
    await interaction.response.send_message(f'Banned {the_member_to_ban}')
パラメータ

**parameters (Union[str, locale_str]) -- パラメータの名前。

例外
  • ValueError -- パラメータ名がすでに他のパラメータによって使用されている場合。

  • TypeError -- パラメータ名が見つからない場合。

@discord.app_commands.choices(**parameters)

与えられたパラメータに、与えられた選択肢を使用するように名前で指示します。

例:

@app_commands.command()
@app_commands.describe(fruits='fruits to choose from')
@app_commands.choices(fruits=[
    Choice(name='apple', value=1),
    Choice(name='banana', value=2),
    Choice(name='cherry', value=3),
])
async def fruit(interaction: discord.Interaction, fruits: Choice[int]):
    await interaction.response.send_message(f'Your favourite fruit is {fruits.name}.')

注釈

これはコマンドに選択肢を提供する唯一の方法ではありません。より使いやすい方法が2つあります。 一つ目は、 typing.Literal アノテーションです。

@app_commands.command()
@app_commands.describe(fruits='fruits to choose from')
async def fruit(interaction: discord.Interaction, fruits: Literal['apple', 'banana', 'cherry']):
    await interaction.response.send_message(f'Your favourite fruit is {fruits}.')

二つ目の方法は、 enum.Enum を使用することです。

class Fruits(enum.Enum):
    apple = 1
    banana = 2
    cherry = 3

@app_commands.command()
@app_commands.describe(fruits='fruits to choose from')
async def fruit(interaction: discord.Interaction, fruits: Fruits):
    await interaction.response.send_message(f'Your favourite fruit is {fruits}.')
パラメータ

**parameters -- パラメータの選択肢。

例外

TypeError -- パラメータ名が見つからないか、パラメータの型が正しくない場合。

@discord.app_commands.autocomplete(**parameters)

与えられたパラメータと与えられたオートコンプリートコールバックを関連付けます。

オートコンプリートは、 strint 、または float の値を持つ型でのみサポートされています。

チェック はサポートされていますが、動作するためにはオートコンプリートコールバックに付属させる必要があります。 オートコンプリートコールバックを呼び出すと、コマンドに付属したチェックは無視されます。

詳細については、 Command.autocomplete() ドキュメントを参照してください。

警告

このコルーチンから返される選択肢はあくまで提案であって、ユーザーはそれらを無視して自分の値を入力することができます。

例:

async def fruit_autocomplete(
    interaction: discord.Interaction,
    current: str,
) -> List[app_commands.Choice[str]]:
    fruits = ['Banana', 'Pineapple', 'Apple', 'Watermelon', 'Melon', 'Cherry']
    return [
        app_commands.Choice(name=fruit, value=fruit)
        for fruit in fruits if current.lower() in fruit.lower()
    ]

@app_commands.command()
@app_commands.autocomplete(fruit=fruit_autocomplete)
async def fruits(interaction: discord.Interaction, fruit: str):
    await interaction.response.send_message(f'Your favourite fruit seems to be {fruit}')
パラメータ

**parameters -- オートコンプリートに登録するパラメータ。

例外

TypeError -- パラメータ名が見つからないか、パラメータの型が正しくない場合。

@discord.app_commands.guilds(*guild_ids)

与えられたギルドをコマンドに関連付けます。

CommandTree にコマンドインスタンスが追加されたとき、 コマンドはデフォルトでグローバルコマンドではなく、このデコレータで指定されたギルドのコマンドとなります。

注釈

実装上の都合とPythonの制限のため、これを CommandTree.command()CommandTree.context_menu() デコレータと同時に使用する場合はこれはそのデコレータの下に置かないといけません。

例:

MY_GUILD_ID = discord.Object(...)  # Guild ID here

@app_commands.command()
@app_commands.guilds(MY_GUILD_ID)
async def bonk(interaction: discord.Interaction):
    await interaction.response.send_message('Bonk', ephemeral=True)
パラメータ

*guild_ids (Union[int, Snowflake]) -- このコマンドを関連付けるギルド。 コマンドツリーは、グローバルコマンドではなく、このギルドにデフォルトで追加します。

@discord.app_commands.guild_only(func=None)

コマンドがギルド内でのみ利用できることを示すデコレータ。

これは check() として実装されて おらず 、代わりにDiscordサーバー側で検証されます。 そのため、プライベートメッセージ内でコマンドが使用されたときに呼び出されるエラーハンドラはありません。

このデコレータは括弧の有無にかかわらず呼び出すことができます。

Discordの制限のため、このデコレータはサブコマンドでは動作せず無視されます。

サンプル

@app_commands.command()
@app_commands.guild_only()
async def my_guild_only_command(interaction: discord.Interaction) -> None:
    await interaction.response.send_message('I am only available in guilds!')
@discord.app_commands.default_permissions(**perms)

このコマンドを実行するために必要なデフォルトの権限を設定するデコレータ。

このデコレータを使用すると、デフォルトではユーザーはコマンドを実行するためにこれらの権限を持っている必要があります。 ただし、管理者は公式クライアントを使用してこのコマンドを実行するために必要な権限を変更することができます。したがって、これはヒントとしてのみ機能します。

引数なしで呼び出すなどして空の権限フィールドを設定した場合は、このコマンドはギルド内ではサーバー管理者以外使用できなくなります。

これはDiscordサーバー側に送信され、 check() ではないため、エラーハンドラは呼び出されません。

Discordの制限のため、このデコレータはサブコマンドでは動作せず無視されます。

警告

これは ヒント として機能し、メンバーはこれらのコマンドを実際に実行するのに権限を持つ必要は ありません 。メンバーが必要な権限を有することを確かめたい場合は、代わりに has_permissions() を使用してみてください。

パラメータ

**perms (bool) -- デフォルトとして設定する権限を示すキーワード引数。

サンプル

@app_commands.command()
@app_commands.default_permissions(manage_messages=True)
async def test(interaction: discord.Interaction):
    await interaction.response.send_message('You may or may not have manage messages.')

チェック

@discord.app_commands.check(predicate)

アプリケーションコマンドにチェックを追加するデコレータ。

これらのチェックは唯一の引数 Interaction を取る関数であるべきです。もしチェックが False のような値を返せば、呼び出し中に CheckFailure が発生され適切なエラーハンドラに送られます。

これらのチェックはコルーチンであってもなくてもよいです。

サンプル

コマンドを呼び出したのがあなたであるかどうかを確認するための基本的なチェックの作成。

def check_if_it_is_me(interaction: discord.Interaction) -> bool:
    return interaction.user.id == 85309593344815104

@tree.command()
@app_commands.check(check_if_it_is_me)
async def only_for_me(interaction: discord.Interaction):
    await interaction.response.send_message('I know you!', ephemeral=True)

一般的なチェックを独自のデコレータに変換します:

def is_me():
    def predicate(interaction: discord.Interaction) -> bool:
        return interaction.user.id == 85309593344815104
    return app_commands.check(predicate)

@tree.command()
@is_me()
async def only_me(interaction: discord.Interaction):
    await interaction.response.send_message('Only you!')
パラメータ

predicate (Callable[[Interaction], bool]) -- コマンドが呼び出されるかどうかをチェックする関数。

@discord.app_commands.checks.has_role(item, /)

コマンドを呼び出したメンバーが、指定された名前またはIDのロールを持っているかどうかのチェックを追加する check()

文字列が指定された場合は、大文字やつづりを含めロールの名前を正確に指定する必要があります。

整数が指定されている場合は、ロールの正確なsnowflake IDを指定する必要があります。

このチェックは2つの特別な例外のうち1つ、もしユーザがロールを持っていないなら MissingRole を、プライベートメッセージで使用されたなら NoPrivateMessage を発生します。どちらも CheckFailure を継承します。

バージョン 2.0 で追加.

注釈

これはDiscordがアプリケーションコマンドに提供する権限システムとは異なります。これはDiscord側で処理されるものではなく、完全にローカルのプログラム内で行われます。

パラメータ

item (Union[int, str]) -- チェックするロールの名前またはID。

@discord.app_commands.checks.has_any_role(*items)

コマンドを呼び出したメンバーが、指定された名前またはIDのロールのうちの どれか を持っているかをチェックを追加する check() 。 これは、指定された3つのうちのどのロールが指定されていても、このチェックが True を返すことを意味します。

has_role() と同様に、渡された名前やIDは正確でなければなりません。

このチェックは2つの特別な例外のうち1つ、もしユーザがロールをすべて持っていないなら MissingAnyRole を、プライベートメッセージで使用されたなら NoPrivateMessage を発生します。どちらも CheckFailure を継承します。

バージョン 2.0 で追加.

注釈

これはDiscordがアプリケーションコマンドに提供する権限システムとは異なります。これはDiscord側で処理されるものではなく、完全にローカルのプログラム内で行われます。

パラメータ

items (List[Union[str, int]]) -- メンバーが割り当てられたロールを持っているかどうかをチェックする名前またはIDの引数リスト。

サンプル

@tree.command()
@app_commands.checks.has_any_role('Library Devs', 'Moderators', 492212595072434186)
async def cool(interaction: discord.Interaction):
    await interaction.response.send_message('You are cool indeed')
@discord.app_commands.checks.has_permissions(**perms)

メンバーが必要なすべての権限を持っているかどうかのチェックを追加する check()

このチェックは discord.Interaction.permissions によって与えられた権限で動作することに注意してください。

渡された権限は、 discord.Permissions のプロパティとまったく同じでなければなりません。

このチェックは特別な例外であり、 CheckFailure から継承されている MissingPermissions を発生します。

バージョン 2.0 で追加.

注釈

これはDiscordがアプリケーションコマンドに提供する権限システムとは異なります。これはDiscord側で処理されるものではなく、完全にローカルのプログラム内で行われます。

パラメータ

**perms (bool) -- 確認する権限を示すキーワード引数。

サンプル

@tree.command()
@app_commands.checks.has_permissions(manage_messages=True)
async def test(interaction: discord.Interaction):
    await interaction.response.send_message('You can manage messages.')
@discord.app_commands.checks.bot_has_permissions(**perms)

has_permissions() と似ていますが、ボット自体に列挙された権限が存在するかを確認します。これは discord.Interaction.app_permissions を使用します。

このチェックは特別な例外であり、 CheckFailure から継承されている BotMissingPermissions を発生します。

バージョン 2.0 で追加.

@discord.app_commands.checks.cooldown(rate, per, *, key=...)

コマンドにクールダウンを追加するデコレータ。

クールダウンを使用すると、特定の時間枠の中でコマンドが使用できる回数を制限できます。このクールダウンは渡された key 関数に基づきます。もし key 関数が渡されない場合はユーザーレベルのクールダウンとなります。 key 関数は単一のパラメータとして discord.Interaction を取り、内部のクールダウンマッピングのキーとして使用される値を返さないといけません。

key 関数は必要に応じてコルーチンにすることができます。

クールダウンが発生した場合は、 CommandOnCooldown がエラーハンドラに送出されます。

サンプル

コマンドに1メンバーにつき5秒あたり1回のクールダウンを設定します:

@tree.command()
@app_commands.checks.cooldown(1, 5.0, key=lambda i: (i.guild_id, i.user.id))
async def test(interaction: discord.Interaction):
    await interaction.response.send_message('Hello')

@test.error
async def on_test_error(interaction: discord.Interaction, error: app_commands.AppCommandError):
    if isinstance(error, app_commands.CommandOnCooldown):
        await interaction.response.send_message(str(error), ephemeral=True)
パラメータ
  • rate (int) -- クールダウンを発生させる前にコマンドを使用できる回数。

  • per (float) -- トリガーされたときにクールダウンを待つ秒数。

  • key (Optional[Callable[[discord.Interaction], collections.abc.Hashable]]) -- クールダウンの種類を示すキーを返す関数。これはコルーチンにすることもできます。もし渡されない場合既定でユーザーレベルのクールダウンとなります。 None が渡された場合「グローバル」クールダウンと解釈されます。

@discord.app_commands.checks.dynamic_cooldown(factory, *, key=...)

コマンドに動的なクールダウンを追加するデコレータ。

クールダウンを使用すると、特定の時間枠の中でコマンドが使用できる回数を制限できます。このクールダウンは渡された key 関数に基づきます。もし key 関数が渡されない場合はユーザーレベルのクールダウンとなります。 key 関数は単一のパラメータとして discord.Interaction を取り、内部のクールダウンマッピングのキーとして使用される値を返さないといけません。

factory 関数が与えられた場合、それは単一のパラメータとして discord.Interaction を取り、 Cooldown または None を返す関数でないといけません。もし None を返せば、クールダウンは事実上回避されます。

必要に応じて、 keyfactory の両方をコルーチンにできます。

クールダウンが発生した場合は、 CommandOnCooldown がエラーハンドラに送出されます。

サンプル

所有者以外の全員にクールダウンを設定します。

def cooldown_for_everyone_but_me(interaction: discord.Interaction) -> Optional[app_commands.Cooldown]:
    if interaction.user.id == 80088516616269824:
        return None
    return app_commands.Cooldown(1, 10.0)

@tree.command()
@app_commands.checks.dynamic_cooldown(cooldown_for_everyone_but_me)
async def test(interaction: discord.Interaction):
    await interaction.response.send_message('Hello')

@test.error
async def on_test_error(interaction: discord.Interaction, error: app_commands.AppCommandError):
    if isinstance(error, app_commands.CommandOnCooldown):
        await interaction.response.send_message(str(error), ephemeral=True)
パラメータ
  • factory (Optional[Callable[[discord.Interaction], Optional[Cooldown]]]) -- インタラクションを受け取り、このインタラクションに適用されるクールダウンまたはクールダウンを回避する場合 None を返す関数。

  • key (Optional[Callable[[discord.Interaction], collections.abc.Hashable]]) -- クールダウンの種類を示すキーを返す関数。これはコルーチンにすることもできます。もし渡されない場合既定でユーザーレベルのクールダウンとなります。 None が渡された場合「グローバル」クールダウンと解釈されます。

Cooldown

Attributes
class discord.app_commands.Cooldown(rate, per)

コマンドのクールダウンを表します。

バージョン 2.0 で追加.

rate

per 秒あたりのトークンの総数。

float

per

秒単位のクールダウン期間の長さ。

float

get_tokens(current=None)

レート制限が適用される前に利用可能なトークンの数を返します。

パラメータ

current (Optional[float]) -- トークンを計算するためのUnixエポックからの秒数。指定されていない場合は time.time() が使用されます。

戻り値

クールダウン前に利用可能なトークンの数。

戻り値の型

int

get_retry_after(current=None)

クールダウンがリセットされるまでの時間を秒単位で返します。

パラメータ

current (Optional[float]) -- 現在のUnixエポックからの秒数。指定されていない場合は time.time() が使用されます。

戻り値

クールダウンがリセットされるまで待たないといけない秒数。

戻り値の型

float

update_rate_limit(current=None, *, tokens=1)

クールダウンのレート制限を更新します。

パラメータ
  • current (Optional[float]) -- レート制限を更新するためのUnixエポックからの秒数。指定されていない場合は time.time() が使用されます。

  • tokens (int) -- レート制限から差し引くトークンの量。

戻り値

レート制限中の場合の秒単位の再試行時間。

戻り値の型

Optional[float]

reset()

クールダウンを初期状態にリセットします。

copy()

クールダウンのコピーを作成します。

戻り値

このクールダウンの新しいインスタンス。

戻り値の型

Cooldown

Namespace

class discord.app_commands.Namespace

ほとんど生の状態でコマンドに渡されるパラメータを保持するオブジェクト。

このクラスは意図的にシンプルで、オプション名と解決された値を単純なキーペアマッピングとして保持します。 これらの属性はドット表記を使用してアクセスできます。 例えば、 example という名前のオプションは ns.example を使ってアクセスできます。 属性が見つからない場合は、属性エラーではなく None が返されます。

警告

キー名はDiscordの生データから得られたものなので、パラメータの名前が変更された場合、関数のパラメータ名ではなく改名後のキーが使用されます。

バージョン 2.0 で追加.

x == y

二つの名前空間が等しいかを、すべての属性が等しいかによって確認します。

x != y

二つの名前空間が等しくないかを比較します。

x[key]

見つかった場合は属性を返し、そうでなければ、 KeyError を送出します。

key in x

属性が名前空間にあるかどうかを確認します。

iter(x)

(name, value) ペアのイテレータを返します。これにより、例えば、辞書型やペアのリストに変換できます。

この名前空間オブジェクトは、種類により解決されたオブジェクトを適切な形式に変換します。変換情報については、以下の表を参照してください。

注釈

オートコンプリートのインタラクションでは、名前空間が検証されていないか、入力されていない可能性があります。 Discordは解決されたデータも送信しません。このため、特定のフィールドには解決されたデータではなくIDが存在することがあります。 この場合、代わりに discord.Object が返されます。

これはDiscordの制限です。

トランスフォーマー

Transformer

class discord.app_commands.Transformer

アプリケーションコマンドのパラメータの型アノテーションを AppCommandOptionType に対応させ、生の値をその型の値に変換する基底クラス。

このクラスは、クラス内のメソッドとプロパティを上書きして Transform クラスの第二型パラメータとして渡すことによってカスタマイズできます。たとえば、文字列をカスタムのペア型に変換するには:

class Point(typing.NamedTuple):
    x: int
    y: int

class PointTransformer(app_commands.Transformer):
    async def transform(self, interaction: discord.Interaction, value: str) -> Point:
        (x, _, y) = value.partition(',')
        return Point(x=int(x.strip()), y=int(y.strip()))

@app_commands.command()
async def graph(
    interaction: discord.Interaction,
    point: app_commands.Transform[Point, PointTransformer],
):
    await interaction.response.send_message(str(point))

二番目の型パラメータにインスタンスの代わりにクラスが渡された場合、それが __init__ メソッドに何も渡さずに構築されます。

バージョン 2.0 で追加.

property type

このトランスフォーマーに関連付けられたオプションタイプ。

これは property でなければなりません。

デフォルトは string です。

AppCommandOptionType

property channel_types

このパラメータにて利用できるチャンネルの種類のリスト。

type()channel を返す場合にのみ有効です。

これは property でなければなりません。

既定値は空のリストです。

List[ChannelType]

property min_value

このパラメータがサポートする最小の値。

type()numberinteger または string を返す場合にのみ有効です。

これは property でなければなりません。

既定値は None です。

Optional[int]

property max_value

このパラメータがサポートする最大の値。

type()numberinteger または string を返す場合にのみ有効です。

これは property でなければなりません。

既定値は None です。

Optional[int]

property choices

このパラメータにて利用できる最大25個の選択肢のリスト。

type()numberinteger または string を返す場合にのみ有効です。

これは property でなければなりません。

既定値は None です。

Optional[List[Choice]]

await transform(interaction, value, /)

This function could be a coroutine.

解決されたオプション値を別の値に変換します。

この変換関数に渡される値は、 変換対応表 の値と同じです。

パラメータ
  • interaction (Interaction) -- 処理中のインタラクション。

  • value (Any) -- 解決された引数値。どのオプションの種類がどの値に対応するかについては 変換対応表 を参照してください。

await autocomplete(interaction, value, /)

This function is a coroutine.

このトランスフォーマーを使用するオプションによって自動的に使用されるオートコンプリートプロンプトのハンドラ。

注釈

オートコンプリートは type()stringinteger または number であるオプションでのみサポートされています。

パラメータ
  • interaction (Interaction) -- 処理中のオートコンプリートのインタラクション。

  • value (Union[str, int, float]) -- ユーザーが入力した現在の値。

戻り値

ユーザーに表示される選択肢のリスト、最大25個です。

戻り値の型

List[Choice]

Transform

class discord.app_commands.Transform

パラメータに適用して与えられた特定の種類のオプションを Transformer で変換するようその動作を変更できる型アノテーション。これを使用するときには二つのジェネリックパラメータが必要で、一つ目には変換先の型を、二つ目には実際に変換を行う Transformer の型を指定しないといけません。

型チェック時には型チェッカがコードの意図を理解できるよう typing.Annotated と同様になります。

使用例は、 Transformer を確認してください。

バージョン 2.0 で追加.

Range

class discord.app_commands.Range

与えられた範囲内に収まる数値または文字列型を必要とするパラメータに適用できる型アノテーション。

型チェック時には型チェッカがコードの意図を理解できるよう typing.Annotated と同様になります。

範囲の例:

  • Range[int, 10] は最小値10、最大値なしを意味します。

  • Range[int, None, 10] は最小値なし、最大値10を意味します。

  • Range[int, 1, 10] は最小値1、最大値10を意味します。

  • Range[float, 1.0, 5.0] は最小値1.0、最大値5.0を意味します。

  • Range[str, 1, 10] は最小1文字、最大10文字を意味します。

バージョン 2.0 で追加.

サンプル

@app_commands.command()
async def range(interaction: discord.Interaction, value: app_commands.Range[int, 10, 12]):
    await interaction.response.send_message(f'Your value is {value}', ephemeral=True)

翻訳

Translator

Methods
class discord.app_commands.Translator

コマンド、パラメータ、および選択肢の翻訳を処理するクラス。

非同期対応の翻訳を可能にし、また gettextProject Fluent のような幅広い翻訳システムをサポートするために、翻訳は遅延して行われます。

トランスレータを使用するには、 CommandTree.set_translator() メソッドを使用して設定する必要があります。文字列の翻訳フローは次のとおりです。

  1. 翻訳したいコマンドで str の代わりに locale_str を使用します。
    • 現在、これらはコマンド名、コマンド説明、パラメータ名、パラメータ説明、選択肢名です。

    • これは describe() デコレータ内でも使用できます。

  2. 翻訳を処理するトランスレータインスタンスに対し CommandTree.set_translator() を呼び出します。

  3. CommandTree.sync() を呼び出します。

  4. ライブラリは翻訳可能なすべての対応する文字列に対し Translator.translate() を呼び出します。

バージョン 2.0 で追加.

await load()

This function is a coroutine.

翻訳システムを読み込むための非同期セットアップ関数。

デフォルトの実装では何もしません。

CommandTree.set_translator() が呼び出されたときに呼び出されます。

await unload()

This function is a coroutine.

翻訳システムをアンロードするための非同期関数。

デフォルトの実装では何もしません。

これは、すでにツリーにトランスレータが存在する状態で CommandTree.set_translator() を呼び出すか、 discord.Client.close() が呼び出されたときに呼び出されます。

await translate(string, locale, context)

This function is a coroutine.

指定した文字列を指定したロケールに翻訳します。

文字列を翻訳できない場合は、 None を返すべきです。

デフォルトの実装では None を返します。

このメソッドで送出される例外は、 TranslationError から継承すべきです。 そうでない場合は、これが呼び出されたときに例外が代わりにチェーンされます。

パラメータ
  • string (locale_str) -- 翻訳すべき文字列。

  • locale (Locale) -- 翻訳先のローケル。

  • context (TranslationContext) -- 文字列を翻訳するときの文脈。より良い型チェックのために、 TranslationContextTypes 型を使用して型の絞り込みを行うことができます。これは TranslationContext と機能的に同じです。

locale_str

Attributes
class discord.app_commands.locale_str(message, /, **kwargs)

文字列を翻訳できるものとマークします。

これは遅延して行われ、実際には CommandTree.sync() が呼び出されるまで翻訳されません。

syncメソッドは、翻訳を CommandTree が使用する Translator インスタンスに委任します。翻訳フローに関する詳細に関しては、 Translator のドキュメントを参照してください。

str(x)

文字列に渡されたメッセージを返します。

x == y

文字列が他の文字列と等しいか確認します。

x != y

文字列が他の文字列と等しくないか確認します。

hash(x)

文字列の ハッシュを返します。

バージョン 2.0 で追加.

message

翻訳すべきメッセージ。一度設定したら変更できません。

警告

これはDiscordに送信するデフォルトの「メッセージ」でなければなりません。 Discordはこのメッセージをライブラリに送信し、ライブラリはコマンドを実行するためのデータにアクセスするために使用します。

例えば、コマンド名の文脈において、コマンド名が foo の場合、メッセージは foo でないと いけません 。 FluentのようなメッセージIDが必要な他の翻訳システムでは、キーワード引数を使用して渡すことを検討してください。

str

extras

翻訳する文字列についての追加のデータを保管できる辞書型。これは、文字列の実際の翻訳に必要な文脈、情報、その他メタデータを追加するのに利用できます。

これらはキーワード引数で渡されるので、キーは文字列です。

dict

TranslationContext

Attributes
class discord.app_commands.TranslationContext(location, data)

翻訳される locale_str の文脈を提供するクラス。

これは、文字列がどこにあるかを正確に特定し、実際の翻訳を取得するのに役立ちます。

location

この文字列が存在する場所。

TranslationContextLocation

data

翻訳されている追加のデータ。

Any

TranslationContextLocation

class discord.app_commands.TranslationContextLocation

翻訳が要求されたときに、翻訳すべき場所を示す列挙型。

バージョン 2.0 で追加.

command_name

コマンド名の翻訳。

command_description

コマンドの説明の翻訳。

group_name

グループ名の翻訳。

group_description

グループの説明の翻訳。

parameter_name

パラメータ名の翻訳。

parameter_description

パラメータの説明の翻訳。

choice_name

選択肢名の翻訳。

other

その他の翻訳。これは他の目的で Translator.translate() を実行するときに役立ちます。

例外

exception discord.app_commands.AppCommandError

アプリケーションコマンドに関連するエラーすべての基礎となる例外。

これは discord.DiscordException を継承しています。

この例外及び、ここから継承された例外は、以下の順で捕捉され様々なエラーハンドラに渡されるなど、特別な方法で処理されます。

バージョン 2.0 で追加.

exception discord.app_commands.CommandInvokeError(command, e)

呼び出そうとしたコマンドが例外を送出した場合に発生する例外。

AppCommandError を継承します。

バージョン 2.0 で追加.

original

送出された元の例外。 __cause__ 属性からも取得できます。

Exception

command

失敗したコマンド。

Union[Command, ContextMenu]

exception discord.app_commands.TransformerError(value, opt_type, transformer)

Transformer または型アノテーションがターゲット型に変換できない場合に発生する例外。

AppCommandError を継承します。

もし AppCommandError を継承しない例外が変換中に送出された場合その例外はこれに包まれます。元の例外は __cause__ 属性から取得できます。もし例外が AppCommandError から派生したものであればそのまま伝播されます。

バージョン 2.0 で追加.

value

変換に失敗した値。

Any

type

変換に失敗した引数の型。

AppCommandOptionType

transformer

変換に失敗したトランスフォーマー。

Transformer

exception discord.app_commands.TranslationError(*msg, string=None, locale=None, context)

ライブラリが文字列の翻訳に失敗したときに発生する例外。

AppCommandError を継承します。

もしこれを継承しない例外が Translator.translate() の実行中に送出された場合その例外はこれに包まれます。元の例外は __cause__ 属性から取得できます。そうでなければ、例外はそのまま伝播されます。

バージョン 2.0 で追加.

string

存在する場合、エラーの原因となった文字列。

Optional[Union[str, locale_str]]

locale

存在する場合、エラーの原因となったローケル。

Optional[Locale]

context

エラーを引き起こした翻訳の文脈。

TranslationContext

exception discord.app_commands.CheckFailure

コマンドのチェック関数が失敗した場合に発生する例外。

AppCommandError を継承します。

バージョン 2.0 で追加.

exception discord.app_commands.NoPrivateMessage(message=None)

コマンドがダイレクトメッセージで動作しない場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

exception discord.app_commands.MissingRole(missing_role)

コマンド実行者がコマンドを実行するためのロールを持っていない場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

missing_role

見つからなかった必須のロール。これは has_role() に渡されたパラメータと同一です。

Union[str, int]

exception discord.app_commands.MissingAnyRole(missing_roles)

コマンド実行者がコマンドを実行するためのロールをどれも持っていない場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

missing_roles

見つからなかったロール。これは has_any_role() に渡されたパラメータと同一です。

List[Union[str, int]]

exception discord.app_commands.MissingPermissions(missing_permissions, *args)

コマンド実行者がコマンドを実行する権限を持っていない場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

missing_permissions

有していない必要な権限。

List[str]

exception discord.app_commands.BotMissingPermissions(missing_permissions, *args)

ボットのメンバーがコマンドを実行する権限を持っていない場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

missing_permissions

有していない必要な権限。

List[str]

exception discord.app_commands.CommandOnCooldown(cooldown, retry_after)

呼び出そうとしたコマンドがクールダウン中の場合に発生する例外。

CheckFailure を継承します。

バージョン 2.0 で追加.

cooldown

トリガーされたクールダウン。

Cooldown

retry_after

再試行する前に待たないといけない秒数。

float

exception discord.app_commands.CommandLimitReached(guild_id, limit, type=<AppCommandType.chat_input: 1>)

グローバルまたはギルド内でアプリケーションコマンドの最大登録数に達したときに発生する例外。

AppCommandError を継承します。

バージョン 2.0 で追加.

type

制限に達したコマンドの種類。

AppCommandType

guild_id

制限に達したギルドのIDか、グローバルの場合 None

Optional[int]

limit

達した制限。

int

exception discord.app_commands.CommandAlreadyRegistered(name, guild_id)

コマンドがすでに登録されている場合に発生する例外。

AppCommandError を継承します。

バージョン 2.0 で追加.

name

すでに登録されているコマンドの名前。

str

guild_id

コマンドがすでに登録されているギルドのID。グローバルコマンドの場合 None

Optional[int]

exception discord.app_commands.CommandSignatureMismatch(command)

Discordからのアプリケーションコマンドがコード内のものとは異なるシグネチャを持つ場合に発生する例外。 これは、Discordに渡したコマンド定義と現在のコマンド定義が異なるときに発生します。 つまり、あなたのコードが古いものであるか、Discordのデータが同期されていません。

AppCommandError を継承します。

バージョン 2.0 で追加.

command

シグネチャが一致しないコマンド。

Union[Command, ContextMenu, Group]

exception discord.app_commands.CommandNotFound(name, parents, type=<AppCommandType.chat_input: 1>)

アプリケーションコマンドが見つからなかった場合に発生する例外。

AppCommandError を継承します。

バージョン 2.0 で追加.

name

見つからなかったアプリケーションコマンドの名前。

str

parents

見つからなかったアプリケーションコマンドの前に見つかった親コマンド名のリスト。

List[str]

type

見つからなかったコマンドの種類。

AppCommandType

exception discord.app_commands.MissingApplicationID(message=None)

クライアントにアプリケーションIDが設定されていない場合に発生する例外。アプリケーションコマンドの同期にはアプリケーションIDが必要です。

AppCommandError を継承します。

バージョン 2.0 で追加.

exception discord.app_commands.CommandSyncFailure(child, commands)

CommandTree.sync() が失敗したときに発生する例外。

これにより、同期の失敗に関する情報が少し読みやすい形式で提供されます。

これは AppCommandErrorHTTPException を継承します。

バージョン 2.0 で追加.

例外の階層構造