コンテンツにスキップ

Python で Discord API を使用する方法: 詳細ガイド

Discord API は、開発者が Python を使用して Discord と統合し、ボットを構築し、サーバーを自動化し、コミュニティを強化する無数の機会を提供します。この包括的な 2000 語以上のガイドでは、Discord API の機能、前提条件、認証、エンドポイント、ライブラリ、サンプル プロジェクト、および高度なテクニックについて詳しく説明しており、始めるために知っておく必要があるすべての情報を提供します。

Python で Discord API を使用する理由

コードを掘り下げる前に、開発者が Python Discord API を使用して構築した優れた機能のいくつかを強調する価値があります。

  • ミー6 – 250 億 XNUMX 万人を超えるユーザーを持つ最も人気のある Discord ボットの XNUMX つ。モデレーション、レベリング、音楽、Twitch、Reddit、その他の統合を提供します。

  • YAGPDB – モデレーション、ロギング、ロール管理、リマインダーなどのための 100 以上のコマンドを備えた機能満載のボット。 600,000 を超える Discord サーバーで使用されています。

  • discord.py – Python で初期の Discord ボットの多くを可能にした著名な API ラッパー ライブラリ。ボットと統合のための簡単な抽象化を提供します。

  • ディスストリーム – プレイリストのキューイング、YouTube/Twitch のサポート、低音ブーストなどのサウンド フィルターを備えた音楽ストリーミング ボット。

  • discordbot.py – 機械学習を活用したボットにより、有害なコンテンツやスパムを自動的に抑制します。 AI の統合を紹介します。

  • 不和フィードバック – ユーザーが Discord DM 経由でレビュー、評価、フィードバックを簡単に送信できる顧客フィードバック ボット。

これらはほんの一例にすぎません。開発者は、Python の柔軟性を利用して、Reddit や GitHub から Spotify などのアプリに至るまで、創造的な方法で Discord をプラットフォームと統合しました。

Discord API を使用するための前提条件

コーディングに入る前に、次の前提条件の手順を完了する必要があります。

Discord アカウントを作成する

  • 明らかに Discord アカウントが必要です - で無料でサインアップしてください disagree.com 持っていない場合。

Discordサーバーを作成する

  • Discordでテスト用のサーバーを作成します。これにより、別のサーバーに依存するのではなく、完全な管理者アクセスが許可されます。

  • パブリック/運用ボットの場合は、後で招待リンクを生成して他のサーバーに追加する必要があります。

開発者モードを有効にする

  • Discord で、[ユーザー設定] > [詳細設定] > [開発者モード] に移動して、追加オプションのロックを解除します。

Pythonをインストールする

  • Python がインストールされており、コーディングの準備ができています。 Discord API は Python 3.8 以降をサポートしています。

  • 必要に応じて、仮想環境をセットアップして依存関係を分離します。

Discord API 認証情報の取得

API 呼び出しを行うには、認証情報を生成する必要があります。

Discordアプリケーションを作成する

  • Discord開発者ポータル、新しいアプリケーションを作成します。

  • これによりアプリが登録され、構成オプションが提供されます。

ボットアカウントを作成する

  • アプリケーションの [ボット] タブで、新しいボット アカウントを追加します。

  • ユーザー名やアバターなどをカスタマイズできます。

トークンをコピーする

  • [ボット] タブでボットのトークンを表示してコピーします。これは API リクエストの認証に使用されます。

  • これをパスワードと同様に安全に保管してください。トークンを持っている人は誰でもボットを制御できます。

チャンネルIDの取得

  • Discord サーバーでチャンネルを右クリックし、[ID をコピー] を選択してチャンネル ID を取得します。

  • チャネル ID を使用して、メッセージの送信先を指定します。

Discord APIを使用した認証

トークンとチャネル ID を使用して認証できるようになりました。次の 2 つのアプローチがあります。

ボットトークン

  • 完全な権限で認証するためにボット アカウントに使用されます。

  • にトークンを渡します Authorization ヘッダ:

headers = {
    ‘Authorization‘: ‘Bot ‘ + bot_token
}

ユーザートークン

  • ユーザーアカウントに使用できますが、権限が制限されています。

  • Discord 開発アプリの OAuth2 タブで生成されます。

  • 同様に認証します。

headers = {
    ‘Authorization‘: ‘Bearer ‘ + user_token
} 

完全な API アクセスにはボット トークンがより一般的です。ユーザー トークンを使用すると、ユーザーに代わって対話できるようになります。

一般的な Discord API エンドポイント

Discord API は、チャネル、メッセージ、ユーザーなどのさまざまなエンティティに多数のエンドポイントを公開します。

一般的なエンドポイントには次のようなものがあります。

  • チャンネル/channels/{channel.id}
  • メッセージ/channels/{channel.id}/messages
  • 反応/channels/{channel.id}/messages/{message.id}/reactions
  • ギルド/guilds/{guild.id}
  • メンバー/guilds/{guild.id}/members

これらのエンドポイントにリクエストを送信することで、メッセージ送信などの操作を実行します。

Discord API ラッパー ライブラリ

生の API を直接呼び出すこともできますが、Python ラッパー ライブラリを使用すると作業を簡素化できます。

  • discord.py – 直感的なオブジェクト指向設計を備えた最も人気のあるライブラリ。
  • 嫌う – 最新の API 変更に合わせて更新された discord.py のフォーク。
  • ヒカリ – 速度を重視したパフォーマンス重視のラッパー。
  • 次のコード – Python 3.10以降用に構築された非同期APIラッパー。

これらはボット、コマンド、イベントなどの簡単な抽象化を提供し、生のリクエストと比較して開発時間を節約します。

メッセージを送信する

を使用してメッセージを送信するコードを見てみましょう。 /channels/{channel.id}/messages 終点:

import requests

url = "https://discord.com/api/v9/channels/1234567890/messages" 

data = {"content": "Hello world!"}

headers = {
    "Authorization": "Bot OTI..." 
}

response = requests.post(url, headers=headers, json=data)

POST リクエストを使用します。 content メッセージを送信するためのボディペイロード。

メッセージの取得

メッセージを取得するには、同じエンドポイントから GET し、応答を解析します。

response = requests.get(url, headers=headers)

json_data = response.json()

for message in json_data:
   print(message[‘content‘])

応答には、反復処理できるメッセージ オブジェクトの配列が含まれています。

メッセージの編集

メッセージを編集するには、 message.id 値を指定し、PATCH リクエストを使用します。

message_id = "876543234567891234"

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

data = {"content": "New message contents!"}

response = requests.patch(url, headers=headers, json=data)

メッセージへの反応

を使用して反応できます /reactions/{emoji}/@me 終点:

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}/reactions/👍/@me"

response = requests.put(url, headers=headers)

これにより、ボットからのメッセージに賛成の反応が追加されます。

メッセージの削除

最後に、DELETE リクエストを使用して削除できます。

url = f"https://discord.com/api/v9/channels/{channel_id}/messages/{message_id}"

response = requests.delete(url, headers=headers) 

上記で、一般的なメッセージング操作の概要を理解できるはずです。次に、WebSocket API の操作について説明します。

WebSocket APIの活用

Discord API には 2 つの接続オプションが用意されています。

REST API – メッセージの送信など、ほとんどの操作に使用されます。

WebソケットAPI – メッセージなどのリアルタイム イベントを聞く場合。

WebSocket を使用すると、REST API をポーリングするのではなく、ライブ イベントに反応するイベント駆動型のボットを作成できます。

たとえば、単純な on_message イベント ハンドラーを次に示します。

import discord

class MyBot(discord.Client):

    async def on_ready(self):
       print(‘Logged in as {0}!‘.format(self.user))

    async def on_message(self, message):
        print(‘Message from {0.author}: {0.content}‘.format(message))

bot = MyBot()
bot.run(‘token‘)

これにより、API 呼び出しの戻りを待たずに、メッセージに即座に応答します。

APIエラーの処理

API を呼び出すときは、エラーを適切に処理する必要があります。

try:
    response = requests.post(url, headers=headers, json=data)
    response.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)
    print(response.text)

よくあるエラーには次のようなものがあります。

  • 50001 – リソースへのアクセスがありません
  • 50035 – 無効なリクエスト本文
  • 429 – レート制限あり

ジョブの設定方法については、 ドキュメント エラーの詳細については。

Python で Discord ボットを構築する

サンプルボットを見て、コア機能を紹介しましょう。

ボットの機能:

  • 起動時に挨拶を送信する
  • 「ヘルプ」を含むメッセージに返信する
  • 禁止用語を含むメッセージを削除する
  • リアクション絵文字応答を追加する
  • 画像/絵文字を使って返信する
# Imports and initialization

import os
import discord
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.getenv(‘DISCORD_TOKEN‘)

intents = discord.Intents.default()
intents.message_content = True 
client = discord.Client(intents=intents)

# Event handlers

@client.event
async def on_ready():
   channel = client.get_channel(1234567890)  
   await channel.send("I‘m alive!")

@client.event
async def on_message(message):

   if "help" in message.content:
      await message.channel.send("Contact our support team for assistance!")

   elif check_for_banned_words(message.content):
      await message.delete()

   # Reactions   
   emojis = ["👍", "❤️"]

   for emoji in emojis: 
       await message.add_reaction(emoji)

# Run bot             
client.run(TOKEN)

これは、イベントやコマンドに応答する Python のシンプルだが機能的な Discord ボットを示しています。

高度な Discord API のヒントとコツ

プロのヒントをいくつか紹介してこのガイドを締めくくりましょう:

  • メンバースクレイピングを使用する LISTENER デフォルトのデータにない参加日、ブーストステータスなどを取得することを目的としています。

  • 自然言語処理と TensorFlow などの AI を活用して、メッセージ セマンティクスとキーワードに基づいて自動モデレーションを行います。

  • cron ジョブや APScheduler などのスケジューラーを使用して、有利な広告やお知らせなどを最適なタイミングでスケジュールします。

  • カスタム ロジックを実装して、個々のユーザーのレート制限などの悪用からボットを保護します。

  • Discord だけではなく HTTP 経由でボットを制御するために、Flask または FastAPI を使用して Web ダッシュボードを構築します。

  • マルチスレッドを使用して、分析レポートの生成などの計算負荷の高いタスクを並列化します。

  • 最も頻繁に使用する API 呼び出しを中心にヘルパー関数と抽象化を作成します。

これらのより高度な機能のいくつかを組み合わせてハッキングすると、ボットを他のボットから確実に分離できます。

Discord API に関する最終的な考え

Discord API は、コミュニティやサーバーの Discord エクスペリエンスを向上させるボットやツールを構築する素晴らしい機会を提供します。 Python の多機能性と組み合わせることで、開発者は、Discord の 100 億人以上のユーザーにクリエイティブな統合と自動化をもたらすための素晴らしい基盤を手に入れることができます。

この 2000 語を超える詳細な説明で、独自のプロジェクトで Discord API を活用し始めるために必要な前提条件、認証、エンドポイントの知識、例、テクニックを身につけることができれば幸いです。あなたの作品を使用しているコミュニティは感謝するでしょう!

旅を続ける中で、探索する価値のある最後のリソースをいくつか示します。

  • Discord開発者ポータル – 公式 API リファレンス ドキュメント
  • discord.py – コミュニティが管理する Python ラッパー ライブラリ
  • top.gg – あなたの作品を宣伝するためのボットリストディレクトリ

さあ、素晴らしいコードを作成してください! Python Discord コミュニティは、あなたが何を構築するかを見るのを待ちきれません。

参加する

あなたのメールアドレスは公開されません。 必須フィールドは、マークされています *