PHP to discord webhook

PHPからDiscordのWebHookにPOST投稿するスクリプトを自前のDiscordサーバーにて既に利用していましたが、別のWEBサーバーからもPHPでPOST投稿する必要があってローカルで動作テストした後に実際に走らせてみたところ動作しなかったのです。その原因がサーバー側のPHP.ini設定での allow_url_fopen が無効になっていることがエラーメッセージから明白だったので、急遽にその環境でも動作するように書き換える必要がありました。ところが、そのへんのWEBに落ちている情報を参考に書いてみると、どうもうまく動作しないので、ちゃんと動作したもののメモ書きです。(まぁ月日が経てば、これも動作しなくなるかも知れませんが・・・)

■allow_url_fopen が有効の環境
//file_get_contentsを使う場合 (allow_url_fopen がTRUEの環境)
function send_to_discord($message) {
    //
    $webhook_url = 'https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXX ~ XXXX';
    $options = array(
      'http' => array(
      'method' => 'POST',
      'header' => 'Content-Type: application/json',
      'content' => json_encode($message),
      )
    );
    $resp = file_get_contents($webhook_url, false, stream_context_create($options));
    return $resp;
}

//メッセージの内容を定義
$contents = 'Test string';
$message = array(
  'username' => 'My PHP Bot',
  'content'  => $contents
);
send_to_discord($message);

■allow_url_fopen が無効の環境
//curlを使う場合 (allow_url_fopen がFALSEの環境)
function send_to_discord($message) {
    //
    $webhook_url = 'https://discord.com/api/webhooks/XXXXXXXXXXXXXXXXXX/XXXX ~ XXXX';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $webhook_url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));
    $resp = curl_exec($ch);
    curl_close($ch);
    return $resp;
}

//メッセージの内容を定義
$contents = 'Test string';
$message = array(
  'username' => 'My PHP Bot',
  'content'  => $contents
);
send_to_discord($message);

おまけ
■SecondLifeからLSLでPOSTする場合
SecondLifeのLSL(Linden Sscript Language)での場合は以前のBlog記事を参考にしてください。
ローカルチャットをDiscordのチャンネルにPOSTする
アバターのオンライン状況をDiscordのチャンネルにPOSTする

2021/01/27

Posted by まゆみ.H
X f B! P L

Search (in blogs)

Featured

今も続くアバターの身長問題。身長=158cmは子供ですか、そーですか。

もともとリアルサイズなアバター故にアジア圏以外が主催のSIMなどでは低身長として扱われることも少なくなかったのですが、さほど気にせず自分の好みの見た目として楽しんでいました。ところが、先日、とあるSIMを訪問した時に「身長が5フィート以下だから子供は帰りなさい」というメッ...

Picks

クリエイティブ・コモンズ・ライセンス

template by QooQ