前回の「Slackbotで今日の天気を確認する〜PythonでのBot開発〜」では「Botに天気を応答させる処理」を実装しました。

前回は単純に当日の天気を回答するだけでしたが、今回はいろいろとバリエーションを考えてみたいと思います。

Slackbotの応答に絵文字を加える

天気の絵文字を加える方法です。
辞書型の天気情報を用意しておき、それを元に絵文字に置き換えます。

@respond_to(‘^今日の天気$’)
def whether_1(message):
# 絵文字リストを作る
dic_weather = {
‘晴れ’ : ‘sunny’,
‘曇り’ : ‘cloud’,
‘雨’ : ‘rain_cloud’,
‘雪’ : ‘snow_cloud’
}
w = weather.get_weather(130010)
t = w[‘forecasts’][0] telop = t[‘telop’] # 絵文字情報を取得する
emoji = ‘:’ + dic_weather[telop] + ‘:’
message.reply(‘今日の天気は%sです%s’ % (telop, emoji))

◆実行結果
絵文字

上記の例では、4種類しか天気は定義していません。「晴れ時々曇り」などイレギュラーなものが来るとエラーとなってしまいます。
都度定義を追加していく方法もありますが、イレギュラーなものが来ても動くようにしておきましょう。

以下、修正を加えたコードです。

◆実行結果
絵文字2

天気をリアクションで返す

応答する代わりに天気をリアクションとして返すことも可能です。

◆実行結果
知らない天気は以下のメッセージを返す。
天気

定義を追加します。

リアクションの天気

他の日の天気を表示する

当日だけではなく翌日の天気を表示することも可能です。

今日の天気

以上、天気のバリエーションの追加でした。

SlackbotまとめTOP>>Slackbotの作り方マニュアル〜Python編〜