メインコンテンツまでスキップ

Botサーバーの作成

このガイドでは、traQ の Bot サーバーを作成する方法について紹介します。

注記

Bot サーバーの作成には Python 3.10 以上が必要です。 現在のバージョンでは、HTTP リクエストを受け取る Bot サーバーのみサポートしています。

備考

BOT イベントの詳細については BOT イベント を参照してください。

HTTPBot サーバーの作成

aiotraq_bot を使用して Bot サーバーを作成します。 BOT は bot-console から取得できる BOT_VERIFICATION_TOKEN を使用して traQ からのリクエストを検証します。

import os
from aiotraq_bot import TraqHttpBot

bot = TraqHttpBot(verification_token=os.getenv("BOT_VERIFICATION_TOKEN"))

# 型ヒントを使用してイベントハンドラーを登録 (1)
@bot.event()
async def on_message(payload: MessageCreatedPayload):
print(payload)

# イベント名を指定してイベントハンドラーを登録 (2)
@bot.event("MESSAGE_CREATED")
async def on_message2(payload):
print(payload)

if __name__ == "__main__":
bot.run()

@bot.event() デコレータを使用してイベントハンドラーを登録します。イベントハンドラーは非同期関数である必要があります。

イベントの登録は、以下のいずれかの方法で行うことができます。

  • デコレータに与えるイベントハンドラーの型ヒントを使用する(1)
  • デコレータの引数にイベントの文字列を指定する(2)

ここでは、型ヒント MessageCreatedPayload を使用してメッセージの受信イベントを処理するイベントハンドラーを登録しています。

備考

イベントの種類とイベントハンドラーの型ヒントの一覧は bot-event の一覧 を参照してください。

イベントハンドラーの引数

イベントハンドラーは、リクエストのペイロードやイベント名、リクエスト ID を引数として受け取ることができます。

@bot.event()
async def on_message(payload: MessageCreatedPayload, event: str, id: str):
# Request Body
print(payload)
# Event Name (X-TRAQ-BOT-EVENT Header)
print(event)
# Request ID (X-TRAQ-BOT-REQUEST-ID Header)
print(id)

Bot サーバーの起動

Bot サーバーを起動するには、run メソッドを呼び出します。BOT サーバーは traQ からのリクエストを受け取り、イベントに応じてイベントハンドラーを呼び出します。

if __name__ == "__main__":
bot.run()

サーバーの待ち受けポートとホストはデフォルトで 0.0.0.0:8080 に設定されています。 run メソッドの引数に hostport を指定することで、ポートとホストを変更することができます。

if __name__ == "__main__":
bot.run(host="0.0.0.0", port=8080)
ヒント

BOT サーバーは内部的に FastAPI を使用して実装されています。リクエストごとに非同期にイベントハンドラーを呼び出します。