discordpy - en to ja_JP translation catalogue (96 entries)

en: Frequently Asked Questions
ja_JP: よくある質問

en: This is a list of Frequently Asked Questions regarding using ``discord.py`` and its extension modules. Feel free to suggest a new question or submit one via pull requests.
ja_JP: これは ``discord.py`` 及び拡張モジュールの利用に際し、よくある質問をまとめたものです。気兼ねなく質問やプルリクエストを提出してください。

en: Questions
ja_JP: 質問

en: Coroutines
ja_JP: コルーチン

en: Questions regarding coroutines and asyncio belong here.
ja_JP: コルーチンとasyncioに関する質問。

en: What is a coroutine?
ja_JP: コルーチンとはなんですか。

en: A |coroutine_link|_ is a function that must be invoked with ``await`` or ``yield from``. When Python encounters an ``await`` it stops the function's execution at that point and works on other things until it comes back to that point and finishes off its work. This allows for your program to be doing multiple things at the same time without using threads or complicated multiprocessing.
ja_JP: |coroutine_link|_ とは ``await`` または ``yield from`` から呼び出さなければならない関数です。Pythonは ``await`` の付いた命令を処理する際、その時点で一度その関数の実行を停止し、他の作業を実行します。 これは `await` のついた命令の作業が終了し、再度停止したポイントに戻ってくるまで続きます。 これにより、スレッドや複雑なマルチプロセッシングを用いずに複数の処理を並列実行することができます。

en: **If you forget to await a coroutine then the coroutine will not run. Never forget to await a coroutine.**
ja_JP: **コルーチンにawaitを記述し忘れた場合、コルーチンは実行されません。awaitの記述を忘れないように注意してください。**

en: Where can I use ``await``\?
ja_JP: ``await`` はどこで使用することができますか。

en: You can only use ``await`` inside ``async def`` functions and nowhere else.
ja_JP: ``await`` は ``async def`` で定義される関数の中でのみ使用できます。

en: What does "blocking" mean?
ja_JP: 「ブロッキング」とはなんですか。

en: In asynchronous programming a blocking call is essentially all the parts of the function that are not ``await``. Do not despair however, because not all forms of blocking are bad! Using blocking calls is inevitable, but you must work to make sure that you don't excessively block functions. Remember, if you block for too long then your bot will freeze since it has not stopped the function's execution at that point to do other things.
ja_JP: 非同期プログラミングにおけるブロッキングとは、関数内の ``await`` 修飾子がないコードすべてを指します。 しかし、全てのブロッキングが悪いというわけではありません。ブロッキングを使用することは避けられませんが、ブロックの発生は出来るだけ少なくする必要があります。長時間のブロックが発生すると、関数の実行が停止せず他の命令を処理することができないため、長時間Botがフリーズすることになることを覚えておきましょう。

en: If logging is enabled, this library will attempt to warn you that blocking is occurring with the message: ``Heartbeat blocked for more than N seconds.`` See :ref:`logging_setup` for details on enabling logging.
ja_JP: ログの出力を有効にしている場合、ライブラリはブロッキングが起きていることを ``Heartbeat blocked for more than N seconds.`` というメッセージで警告します。ログの出力を有効にするには、 :ref:`logging_setup` を参照してください。

en: A common source of blocking for too long is something like :func:`time.sleep`. Don't do that. Use :func:`asyncio.sleep` instead. Similar to this example: ::
ja_JP: 長時間のブロッキングの原因として一般的なのは :func:`time.sleep` などです。 これは使用せず、下記の例のように :func:`asyncio.sleep` を使用してください。

en: Another common source of blocking for too long is using HTTP requests with the famous module :doc:`req:index`. While :doc:`req:index` is an amazing module for non-asynchronous programming, it is not a good choice for :mod:`asyncio` because certain requests can block the event loop too long. Instead, use the :doc:`aiohttp <aio:index>` library which is installed on the side with this library.
ja_JP: また、これだけでなく、有名なモジュール :doc:`req:index` のHTTPリクエストも長時間ブロックの原因になります。 :doc:`req:index` モジュールは同期プログラミングにおいては素晴らしいモジュールですが、特定のリクエストがイベントループを長時間ブロックする可能性があるため、 :mod:`asyncio` には適していません。 代わりにこのライブラリと一緒にインストールされた :doc:`aiohttp <aio:index>` を使用してください。

en: Consider the following example: ::
ja_JP: 次の例を見てみましょう。

en: General
ja_JP: 一般

en: General questions regarding library usage belong here.
ja_JP: ライブラリの使用に関する一般的な質問。

en: Where can I find usage examples?
ja_JP: 使用例はどこで確認できますか。

en: Example code can be found in the `examples folder <https://github.com/Rapptz/discord.py/tree/master/examples>`_ in the repository.
ja_JP: サンプルコードはレポジトリの `examplesフォルダ <https://github.com/Rapptz/discord.py/tree/master/examples>`_ で確認できます。

en: How do I set the "Playing" status?
ja_JP: 「プレイ中」状態の設定をするにはどうすればいいですか。

en: The ``activity`` keyword argument may be passed in the :class:`Client` constructor or :meth:`Client.change_presence`, given an :class:`Activity` object.
ja_JP: キーワード引数である ``activity`` は :class:`Client` のコンストラクタ、または :meth:`Client.change_presence` に :class:`Activity` を渡すことで設定できます。

en: The constructor may be used for static activities, while :meth:`Client.change_presence` may be used to update the activity at runtime.
ja_JP: 静的なアクティビティを設定する際はコンストラクタ、実行時にアクティビティを更新する際には :meth:`Client.change_presence` が利用できます。

en: It is highly discouraged to use :meth:`Client.change_presence` or API calls in :func:`on_ready` as this event may be called many times while running, not just once.
ja_JP: :func:`on_ready` で :meth:`Client.change_presence` やその他APIの呼び出しを行うことは推奨できません。このイベントは実行中に一度ではなく複数回呼び出される可能性があるためです。

en: There is a high chance of disconnecting if presences are changed right after connecting.
ja_JP: また、接続後すぐにプレゼンスを変更すると高確率で切断されます。

en: The status type (playing, listening, streaming, watching) can be set using the :class:`ActivityType` enum. For memory optimisation purposes, some activities are offered in slimmed-down versions:
ja_JP: ステータスタイプ(プレイ中、再生中、配信中、視聴中)は列挙型の :class:`ActivityType` を指定することで設定が可能です。メモリの最適化のため、一部のアクティビティはスリム化して提供しています。

en: Putting both of these pieces of info together, you get the following: ::
ja_JP: これらの情報をまとめると以下のようになります。

en: How do I send a message to a specific channel?
ja_JP: 特定のチャンネルにメッセージを送るにはどうすればいいですか。

en: You must fetch the channel directly and then call the appropriate method. Example: ::
ja_JP: チャンネルを直接取得してから、適切なメソッドの呼び出しを行う必要があります。以下がその例です。

en: How do I send a DM?
ja_JP: DMを送るにはどうすればいいですか。

en: Get the :class:`User` or :class:`Member` object and call :meth:`abc.Messageable.send`. For example: ::
ja_JP: :class:`User` か :class:`Member` を取得し、 :meth:`abc.Messageable.send` を呼び出してください。以下は使用例です。 ::

en: If you are responding to an event, such as :func:`on_message`, you already have the :class:`User` object via :attr:`Message.author`: ::
ja_JP: :func:`on_message` などのイベントで応答を返したい場合は、 :attr:`Message.author` を介して :class:`User` オブジェクトが取得できます。 ::

en: How do I get the ID of a sent message?
ja_JP: 送信したメッセージのIDを取得するにはどうすればいいですか。

en: :meth:`abc.Messageable.send` returns the :class:`Message` that was sent. The ID of a message can be accessed via :attr:`Message.id`: ::
ja_JP: :meth:`abc.Messageable.send` は送信したメッセージの :class:`Message` を返します。メッセージのIDには :attr:`Message.id` でアクセスできます。 ::

en: How do I upload an image?
ja_JP: 画像をアップロードするにはどうすればいいですか。

en: To upload something to Discord you have to use the :class:`File` object.
ja_JP: Discordに何かをアップロードする際には :class:`File` オブジェクトを使用する必要があります。

en: A :class:`File` accepts two parameters, the file-like object (or file path) and the filename to pass to Discord when uploading.
ja_JP: :class:`File` は二つのパラメータがあり、ファイルライクなオブジェクト(または、そのファイルパス)と、ファイル名を渡すことができます。

en: If you want to upload an image it's as simple as: ::
ja_JP: 画像をアップロードするだけなら、以下のように簡単に行なえます。

en: If you have a file-like object you can do as follows: ::
ja_JP: もし、ファイルライクなオブジェクトがあるなら、以下のような実装が可能です。

en: To upload multiple files, you can use the ``files`` keyword argument instead of ``file``\: ::
ja_JP: 複数のファイルをアップロードするには、 ``file`` の代わりに ``files`` を使用しましょう。

en: If you want to upload something from a URL, you will have to use an HTTP request using :doc:`aiohttp <aio:index>` and then pass an :class:`io.BytesIO` instance to :class:`File` like so:
ja_JP: URLから何かをアップロードする場合は、 :doc:`aiohttp <aio:index>` のHTTPリクエストを使用し、 :class:`io.BytesIO` インスタンスを :class:`File` に渡す必要があります。

en: How can I add a reaction to a message?
ja_JP: メッセージにリアクションをつけるにはどうすればいいですか。

en: You use the :meth:`Message.add_reaction` method.
ja_JP: :meth:`Message.add_reaction` を使用してください。

en: If you want to use unicode emoji, you must pass a valid unicode code point in a string. In your code, you can write this in a few different ways:
ja_JP: Unicodeの絵文字を使用する場合は、文字列内の有効なUnicodeのコードポイントを渡す必要があります。 例を挙げると、このようになります。

en: Quick example:
ja_JP: 簡単な例:

en: In case you want to use emoji that come from a message, you already get their code points in the content without needing to do anything special. You **cannot** send ``':thumbsup:'`` style shorthands.
ja_JP: メッセージに含まれる絵文字を使用したい場合は、特になにをするでもなく、コンテンツ内のコードポイントを取得しています。また、 ``':thumbsup:'`` のような簡略化したものを送信することは **できません** 。

en: For custom emoji, you should pass an instance of :class:`Emoji`. You can also pass a ``'<:name:id>'`` string, but if you can use said emoji, you should be able to use :meth:`Client.get_emoji` to get an emoji via ID or use :func:`utils.find`/ :func:`utils.get` on :attr:`Client.emojis` or :attr:`Guild.emojis` collections.
ja_JP: カスタム絵文字については、 :class:`Emoji` のインスタンスを渡してください。 ``'<:名前:ID>'`` 形式の文字列も渡せますが、その絵文字が使えるなら、 :meth:`Client.get_emoji` でIDから絵文字を取得したり、 :attr:`Client.emojis` や :attr:`Guild.emojis` に対して :func:`utils.find`/ :func:`utils.get` を利用することで取得ができるはずです。

en: The name and ID of a custom emoji can be found with the client by prefixing ``:custom_emoji:`` with a backslash. For example, sending the message ``\:python3:`` with the client will result in ``<:python3:232720527448342530>``.
ja_JP: カスタム絵文字の名前とIDをクライアント側で知るには、 ``:カスタム絵文字:`` の頭にバックスラッシュ(円記号)をつけます。たとえば、メッセージ ``\:python3:`` を送信すると、結果は ``<:python3:232720527448342530>`` になります。

en: How do I pass a coroutine to the player's "after" function?
ja_JP: 音楽プレイヤーの「後処理」関数にコルーチンを渡すにはどうすればいいですか。

en: The library's music player launches on a separate thread, ergo it does not execute inside a coroutine. This does not mean that it is not possible to call a coroutine in the ``after`` parameter. To do so you must pass a callable that wraps up a couple of aspects.
ja_JP: ライブラリの音楽プレーヤーは別のスレッドで起動するもので、コルーチン内で実行されるものではありません。しかし、 ``after`` にコルーチンが渡せないというわけではありません。コルーチンを渡すためには、いくつかの機能を包括した呼び出し可能コードで渡す必要があります。

en: The first gotcha that you must be aware of is that calling a coroutine is not a thread-safe operation. Since we are technically in another thread, we must take caution in calling thread-safe operations so things do not bug out. Luckily for us, :mod:`asyncio` comes with a :func:`asyncio.run_coroutine_threadsafe` function that allows us to call a coroutine from another thread.
ja_JP: コルーチンを呼び出すという動作はスレッドセーフなものではないということを最初に理解しておく必要があります。技術的に別スレッドなので、スレッドセーフに呼び出す際には注意が必要です。幸運にも、 :mod:`asyncio` には :func:`asyncio.run_coroutine_threadsafe` という関数があります。これを用いることで、別スレッドからコルーチンを呼び出すことが可能です。

en: However, this function returns a :class:`~concurrent.futures.Future` and to actually call it we have to fetch its result. Putting all of this together we can do the following:
ja_JP: しかし、この関数は :class:`~concurrent.futures.Future` を返すので、実際にはそこから結果を読み出す必要があります。これをすべてまとめると、次のことができます。

en: How do I run something in the background?
ja_JP: バックグラウンドで何かを動かすにはどうすればいいですか。

en: `Check the background_task.py example. <https://github.com/Rapptz/discord.py/blob/master/examples/background_task.py>`_
ja_JP: `background_task.pyの例を参照してください。 <https://github.com/Rapptz/discord.py/blob/master/examples/background_task.py>`_

en: How do I get a specific model?
ja_JP: 特定のモデルを取得するにはどうすればいいですか。

en: There are multiple ways of doing this. If you have a specific model's ID then you can use one of the following functions:
ja_JP: 方法は複数ありますが、特定のモデルのIDがわかっていれば、以下の方法が使えます。

en: The following use an HTTP request:
ja_JP: 以下はHTTPリクエストを使用します。

en: If the functions above do not help you, then use of :func:`utils.find` or :func:`utils.get` would serve some use in finding specific models.
ja_JP: 上記の関数を使えない状況の場合、 :func:`utils.find` または :func:`utils.get` が役に立つでしょう。

en: How do I make a web request?
ja_JP: Webリクエストはどうやって作ればよいですか。

en: To make a request, you should use a non-blocking library. This library already uses and requires a 3rd party library for making requests, :doc:`aiohttp <aio:index>`.
ja_JP: リクエストを送るには、ノンブロッキングのライブラリを使わなければなりません。このライブラリは、リクエストを作成するのにサードパーティー製の :doc:`aiohttp <aio:index>` を必要とします。

en: See `aiohttp's full documentation <http://aiohttp.readthedocs.io/en/stable/>`_ for more information.
ja_JP: 詳細は `aiohttpの完全なドキュメント <http://aiohttp.readthedocs.io/en/stable/>`_ を参照してください。

en: How do I use a local image file for an embed image?
ja_JP: Embedの画像にローカルの画像を使用するにはどうすればいいですか。

en: Discord special-cases uploading an image attachment and using it within an embed so that it will not display separately, but instead in the embed's thumbnail, image, footer or author icon.
ja_JP: 特殊なケースとして、画像が別々に表示されないようDiscordにembedを用いてアップロードする際、画像は代わりにembedのサムネイルや画像、フッター、製作者アイコンに表示されます。

en: To do so, upload the image normally with :meth:`abc.Messageable.send`, and set the embed's image URL to ``attachment://image.png``, where ``image.png`` is the filename of the image you will send.
ja_JP: これを行うには、通常通り :meth:`abc.Messageable.send` を用いて画像をアップロードし、Embedの画像URLに ``attachment://image.png`` を設定します。 ``image.png`` は送信する画像のファイル名になります。

en: Is there an event for audit log entries being created?
ja_JP: 監査ログのエントリが作成されるイベントはありますか。

en: This event is now available in the library and Discord as of version 2.2. It can be found under :func:`on_audit_log_entry_create`.
ja_JP: このイベントはバージョン2.2の時期にDiscordで利用可能になりました。 :func:`on_audit_log_entry_create` にあります。

en: Commands Extension
ja_JP: コマンド拡張

en: Questions regarding ``discord.ext.commands`` belong here.
ja_JP: ``discord.ext.commands`` に関する質問。

en: Why does ``on_message`` make my commands stop working?
ja_JP: ``on_message`` を使うとコマンドが動作しなくなります。どうしてですか。

en: Overriding the default provided ``on_message`` forbids any extra commands from running. To fix this, add a ``bot.process_commands(message)`` line at the end of your ``on_message``. For example: ::
ja_JP: デフォルトで提供されている ``on_message`` をオーバーライドすると、コマンドが実行されなくなります。これを修正するには ``on_message`` の最後に ``bot.process_commands(message)`` を追加してみてください。

en: Alternatively, you can place your ``on_message`` logic into a **listener**. In this setup, you should not manually call ``bot.process_commands()``. This also allows you to do multiple things asynchronously in response to a message. Example::
ja_JP: 別の方法として、 ``on_message`` に書きたい処理を **リスナー** として登録することもできます。この方法では ``bot.process_commands()`` を呼び出す必要はありません。また、この方法ではメッセージの受信に対して複数の処理を非同期に実行することができます。使用例::

en: Why do my arguments require quotes?
ja_JP: コマンドの引数に引用符が必要なのはなぜですか。

en: In a simple command defined as:
ja_JP: 次の簡単なコマンドを見てみましょう。

en: Calling it via ``?echo a b c`` will only fetch the first argument and disregard the rest. To fix this you should either call it via ``?echo "a b c"`` or change the signature to have "consume rest" behaviour. Example:
ja_JP: このコマンドを ``?echo a b c`` のように実行したとき、コマンドに渡されるのは最初の引数だけです。その後の引数はすべて無視されます。これを正常に動かすためには ``?echo "a b c"`` のようにしてコマンドを実行するか、コマンドの引数を下記の例のようにしてみましょう。

en: This will allow you to use ``?echo a b c`` without needing the quotes.
ja_JP: これにより、クォーテーションなしで ``?echo a b c`` を使用することができます。

en: How do I get the original ``message``\?
ja_JP: 元の ``message`` を取得するにはどうすればよいですか。

en: The :class:`~ext.commands.Context` contains an attribute, :attr:`~.Context.message` to get the original message.
ja_JP: :class:`~ext.commands.Context` は元のメッセージを取得するための属性である :attr:`~.Context.message` を持っています。

en: Example:
ja_JP: 例:

en: How do I make a subcommand?
ja_JP: サブコマンドを作るにはどうすればいいですか。

en: Use the :func:`~ext.commands.group` decorator. This will transform the callback into a :class:`~ext.commands.Group` which will allow you to add commands into the group operating as "subcommands". These groups can be arbitrarily nested as well.
ja_JP: :func:`~ext.commands.group` デコレータを使います。これにより、コールバックが :class:`~ext.commands.Group` に変換され、groupに「サブコマンド」として動作するコマンドを追加できます。これらのグループは、ネストすることもできます。

en: This could then be used as ``?git push origin master``.
ja_JP: これは ``?git push origin master`` のように使うことができます。

en: Views and Modals
ja_JP: ビューとモーダル

en: Questions regarding :class:`discord.ui.View`, :class:`discord.ui.Modal`, and their components such as buttons, select menus, etc.
ja_JP: :class:`discord.ui.View` 、 :class:`discord.ui.Modal` 、およびボタン、選択メニューなどそれらのコンポーネントに関する質問。

en: How can I disable all items on timeout?
ja_JP: タイムアウト時にすべての項目を無効にするにはどうすればよいですか?

en: This requires three steps.
ja_JP: これには3つのステップが必要です。

en: Attach a message to the :class:`~discord.ui.View` using either the return type of :meth:`~abc.Messageable.send` or retrieving it via :meth:`Interaction.original_response`.
ja_JP: :meth:`~abc.Messageable.send` の戻り値の型を使用して、または :meth:`Interaction.original_response` から取得した :class:`~discord.ui.View` にメッセージを添付します。

en: Inside :meth:`~ui.View.on_timeout`, loop over all items inside the view and mark them disabled.
ja_JP: :meth:`~ui.View.on_timeout` 内で、ビュー内のすべての項目をループし無効にします。

en: Edit the message we retrieved in step 1 with the newly modified view.
ja_JP: ステップ1で取得したメッセージを新しく変更したビューで編集します。

en: Putting it all together, we can do this in a text command:
ja_JP: すべてをまとめると、テキストコマンドではこのように行うことができます。

en: Application commands do not return a message when you respond with :meth:`InteractionResponse.send_message`, therefore in order to reliably do this we should retrieve the message using :meth:`Interaction.original_response`.
ja_JP: アプリケーションコマンドは :meth:`InteractionResponse.send_message` で応答したときメッセージを返さないため、信頼性の高い方法で行うには :meth:`Interaction.original_response` を使用してメッセージを取得すべきです。

en: Putting it all together, using the previous view definition:
ja_JP: 以前のビューの定義を使用して、すべてをまとめます。

en: Application Commands
ja_JP: アプリケーションコマンド

en: Questions regarding Discord's new application commands, commonly known as "slash commands" or "context menu commands".
ja_JP: 一般的に「スラッシュコマンド」や「コンテキストメニューコマンド」と呼ばれている、Discordの新しいアプリケーションコマンドに関する質問。

en: My bot's commands are not showing up!
ja_JP: 私のボットのコマンドが一覧に表示されません！

en: Did you :meth:`~.CommandTree.sync` your command? Commands need to be synced before they will appear.
ja_JP: コマンドを :meth:`~.CommandTree.sync` しましたか？コマンドが表示されるにはその前に同期する必要があります。

en: Did you invite your bot with the correct permissions? Bots need to be invited with the ``applications.commands`` scope in addition to the ``bot`` scope. For example, invite the bot with the following URL: ``https://discord.com/oauth2/authorize?client_id=<client id>&scope=applications.commands+bot``. Alternatively, if you use :func:`utils.oauth_url`, you can call the function as such: ``oauth_url(<other options>, scopes=("bot", "applications.commands"))``.
ja_JP: 正しい権限でBotを招待しましたか？ ``bot`` スコープに加えて、 ``applications.commands`` スコープ付きでBotを招待する必要があります。例えば、以下の URL でBotを招待します: ``https://discord.com/oauth2/authorize?client_id=<client id>&scope=applications.commands+bot`` 。 あるいは、 :func:`utils.oauth_url` を使用している場合は、 ``oauth_url(<other options>, scopes=("bot", "applications.commands"))`` のように関数を呼び出すことができます。
