質問: datetime.now().strftime("%Y年%m月%d日 %H時%M分") embed.add_field(name="発生時間", value=replay, inline=True) embed.add_field(name="深央", value="震央", inline=True) embed.add_field(name="深さ", value="30km", inline=True) embed.add_field(name="強さ(M)", value="M3.4", inline=True) embed.add_field(name="最大震度", value="震度1", inline=True) embed.add_field(name="最大震度1を観測した地域", value="・○○\n・××\n・△△", inline=True) await ctx.send(embed=embed) ``` botに送信させたいメッセージは以下のような感じです。 ![地震の各種情報が書かれている画像です。](https://i.stack.imgur.com/pjSuS.jpg)
回答: 素朴に書くと、以下の流れを一定の時間間隔ごとに実行する Python プログラムを書くことになるでしょう。 1. URL から XML をダウンロード。 2. 変更があるかチェック。 3. 変更があれば、XML をパースして Python オブジェクトにする。文字コードに注意。 4. 必要な情報を読み取り、メッセージ用の文字列を作る。 5. Discord にメッセージを送る。 1~3 の部分は、それぞれ適切なライブラリを使えば簡単に実装できそうです。検索するといくつかでてきます。XML の各種情報については「NHKの地震情報を掻っ攫う方法」という記事が詳しかったです。 しかし、もし速報性の高い地震速報として使うのであればこのやり方にはやや問題があります。地震速報として機能させるためには地震情報が出てから数秒の内にはメッセージが送信されていることが望ましいですが、そのためにはほんの数秒単位ごとに NHK のサイトに対して繰り返しアクセスをかけることになります。岡崎市立中央図書館事件と、同事件がウェブスクレイピングに与えた影響を鑑みるに、あまり高頻度なアクセスをすることにはリスクがあります。また、緊急地震速報が出てからこの XML が更新されるまでのラグがあるかもしれないことにも注意しておくべきでしょう。逆に、ある程度ラグがあって良いなら上のやり方で目的が達成できます。 もし緊急地震速報 (EEW) のようなものを実装したいのであれば、既存の類似アプリたちがどのように実装しているのかが参考になるかと思います。個人だと高度利用者向け緊急地震速報の利用は現実的でないので、「緊急地震速報 by Extension」のように Twitter の API 経由で取得する方法などが考えられます。