1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OBS Studioで配信開始時にDiscordへ自動通知を送る方法

Last updated at Posted at 2024-10-19

はじめに

前回,「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を作成します。

  1. 自分がホストしているDiscordサーバーに入り,通知を送りたいチャンネルを選択します。
    無題.png

  2. チャンネルの「設定」メニューを開き,「連携サービス」タブから「ウェブフックを作成」を選択します。
    スクリーンショット 2024-10-19 140438.png

  3. 「新しいウェブフック」が作成されますので,名前やアイコンを設定した後,「ウェブフック URL」をコピーします。このWebhook URLは後ほどスクリプトで使用するので,メモしておいてください。
    スクリーンショット 2024-10-19 140552.png

2. Pythonスクリプトの作成

次に,OBS Studio用のPythonスクリプトを作成します。以下のコードをコピーし.py 拡張子で保存してください(例:discord_notification.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にスクリプトを追加する

  1. OBS Studioを起動し,「ツール」メニューから「スクリプト」を選択します。

    OBS

  2. 「スクリプトマネージャー」が表示されるので,「+」ボタンをクリックして,先ほど保存したPythonスクリプトを選択します。

    スクリプト

    image.png

  3. スクリプトを選択すると,設定画面に以下のオプションが表示されます:

    • 「Discordに通知を送る」: 通知を有効にするチェックボックス
    • 「Webhook URL」: 先ほどコピーしたDiscordのWebhook URLを入力する
    • 「送信するメッセージ」: 配信開始時に送信したいメッセージを入力します(例:「配信が開始されました!」など)。

      スクリーンショット 2024-10-19 140658.png

4. 動作確認

設定が完了したら,OBSでテスト的に配信を開始してみてください。正しく設定されていれば,指定したDiscordチャンネルに通知が自動的に送信されるはずです。

まとめ

このように,OBS Studioで配信を開始した際に自動でDiscordに通知を送る仕組みを簡単に作成できます。OBSのスクリプトを活用することで,さらにカスタマイズや機能追加も可能ですので,ぜひ色々と試してみてください!

何か質問や不明点があれば,コメントでお知らせください。

参考

▼ Python/Lua スクリプト

▼ イベントが発生したときに呼び出されるコールバック関数

▼ イベント一覧

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?