はじめに
前回,「OBS StudioでAPIを使ったボタンの監視とログ出力」という記事を投稿しました。前回の記事では,例として録画ボタンの監視を行いました。※OBSのスクリプトを初めて触る方は,まず前回の記事のプログラムを試してみてください。
今回は,その実装を踏まえて,OBS Studioで配信を開始したときにDiscordに自動的に通知を送る機能を,Pythonスクリプトを用いて簡単に実装してみます。
必要なもの
- OBS Studio:配信に使うOBS環境です
- Python:OBS Studioのスクリプト機能を使うためにPythonが必要です。OBSにPythonスクリプトが有効になっているか確認してください
- Discord Webhook:通知を送信するためのDiscordのWebhookを作成します
手順
1. Discord Webhookを設定する
まずは,Discordで通知を送るためのWebhookを作成します。
2. Pythonスクリプトの作成
次に,OBS Studio用のPythonスクリプトを作成します。以下のコードをコピーし.py 拡張子で保存してください(例:discord_notification.py)。
import obspython as obs
import requests
webhook_url = ""
message_content = ""
notify_discord = False
# スクリプトが最初にロードされたときの設定
def script_description():
return (
"OBSで配信を開始したときにDiscordに通知を送るスクリプトです。\n"
"設定画面からWebhook URLと通知のオン/オフを設定できます。"
)
# スクリプトがロードされたときに呼ばれる関数
def script_load(settings):
obs.obs_frontend_add_event_callback(on_event)
# 配信開始時に呼ばれる関数
def on_event(event):
if event == obs.OBS_FRONTEND_EVENT_STREAMING_STARTED:
# チェックボックスがオンの場合にのみ通知を送信
if notify_discord and webhook_url and message_content:
send_discord_notification()
# Discordに通知を送る関数
# Discordに通知を送る関数
def send_discord_notification():
payload = {"content": message_content}
try:
response = requests.post(webhook_url, json=payload)
if response.status_code == 204:
print("Discordに通知を送信しました")
else:
print(f"エラーが発生しました: {response.status_code} - {response.text}")
except Exception as e:
print(f"リクエスト中にエラーが発生しました: {e}")
# スクリプトの設定が変更されたときに呼ばれる関数
def script_update(settings):
global notify_discord, webhook_url, message_content
notify_discord = obs.obs_data_get_bool(settings, "notify_discord")
webhook_url = obs.obs_data_get_string(settings, "webhook_url")
message_content = obs.obs_data_get_string(settings, "message_content")
# スクリプトの設定UIを定義する関数
def script_properties():
props = obs.obs_properties_create()
obs.obs_properties_add_bool( # Discordに通知を送るチェックボックス
props, "notify_discord", "Discordに通知を送る"
)
obs.obs_properties_add_text( # Webhook URLの入力欄を追加
props, "webhook_url", "Webhook URL", obs.OBS_TEXT_DEFAULT
)
obs.obs_properties_add_text( # メッセージ内容の入力欄
props, "message_content", "送信するメッセージ", obs.OBS_TEXT_MULTILINE
)
return props
3. OBS Studioにスクリプトを追加する
4. 動作確認
設定が完了したら,OBSでテスト的に配信を開始してみてください。正しく設定されていれば,指定したDiscordチャンネルに通知が自動的に送信されるはずです。
まとめ
このように,OBS Studioで配信を開始した際に自動でDiscordに通知を送る仕組みを簡単に作成できます。OBSのスクリプトを活用することで,さらにカスタマイズや機能追加も可能ですので,ぜひ色々と試してみてください!
何か質問や不明点があれば,コメントでお知らせください。
参考
▼ Python/Lua スクリプト
▼ イベントが発生したときに呼び出されるコールバック関数
▼ イベント一覧