手製の bot がいつ鳴くかを Pushover でスマホに通知してみる

とある Mastodon インスタンスで、知り合いが「[定期的に『ぽんぽこ』とトゥートするだけの bot](https://mstdn.kemono-friends.info/@ponpoko)」を動かしていたのですが、使用していた bot サービスがうまく動かなくなったらしくしばらく死んでいました。

先日その bot について話題になったので、その bot アカウントの持ち主に「ほんなら手前で bot 作ってぽんぽこさせればええやん」と話をつけて共同でそのアカウントを動かすことにしました。

[![akusiroyo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/419b4f0a-49b0-1588-5280-26d3d7d85f28.png)](https://mstdn.kemono-friends.info/@laphroaig55/102236247435385237)

はい。

早速[^saQsoku_toha]手製の bot を作り[^code_of_bot]動かしていたのですが、鳴く間隔を乱数で決定しているため次にいつ鳴くかがわからないという問題がありました。 いや、別にわからなくても大した問題はないんですがなんとなく知りたいと思った。 思ったんだよ。 仕方ないだろ。

それでいかんすべきかと考えていたところ、そういえば私のスマントホホには以前やんごとなき事情でインストールした Pushover が入っていたのを思い出しました。 これを使ってスマホに好きな文章を通知させればええやん[^seyana]。

[^saQsoku_toha]: 早速とか言ってますが 2 个月放置してました(zange)。
[^code_of_bot]: ちょっとひどいコードなのでここでは省略させてください。
[^seyana]: せやな。

## そもそも Pushover とは ##

Pushover は Push 通知を利用します。 **以上です。** ~~ゴミアプリかな?~~ ~~何もしないアプリとか Virus Shield で十分~~

普通のスマホアプリはなんらかのメインの機能があって、その機能の一部として Push 通知を扱います。 しかし、Pushover は **Push 通知を送ることそれ自体をメインの機能としています。**

どういうことかと言うと、Pushover は Push 通知を送るためのシンプルな API を提供しており、これを叩くことで**任意の Push 通知を Pushover から打てる**ようになっているのです。 画面や設定内容も Push 通知に特化しています。 寝ている間は音鳴らすなみたいな設定も当然あります。 ~~ゴミアプリじゃなかったよ!~~

ちなみに有料です[^price_of_Pushover]。

[^price_of_Pushover]: 500JPY。 試用期間アリ。

## 手順 ##

先述したとおり Pushover 自体は入手済みのため、インストールとかアカウント登録とかは省略いたします。

### アプリの API キーを発行する ###

[公式サイト](https://pushover.net/)にログインし、Your User Key をメモ。 つづいて画面上部の“Apps & Plugins” > “Create a New Application / API Token”からアプリの新規作成画面へ。

![api_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/fbb78883-02fc-9939-db1e-b59eb15fa134.png)

![api_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/2d86b01e-8534-8702-010a-79bab50bd67a.png)

アプリ名、任意ですが説明、URL、アイコンを設定。 利用規約と API ガイドを~~読まずに~~読んでチェックボックスをオンにして、“Create Application”ボタンを押下します。

![api_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/1b77ceee-8464-4b97-006d-0d49770c3156.png)

これで API キーの発行は完了なので、これもまたメモしておきます。

![api_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/966bb3fe-689a-b739-3139-effaa6fdfb54.png)

### API ライブラリを入手する ###

超高速ぽんぽこマシン弐号機[^high_speed]は Python で書いていたので、[Python 用の API ラッパライブラリ](https://github.com/Thibauth/python-pushover)を入手します。 慣れてる人なら直で叩いてもいいんでしょうが私は慣れてないです(全ギレ)。 アマグラマでも主役を張れるって証明したい。 ~~努力できないまま努力できる連中に勝ちたい。~~

```sh
$ pip install python-pushover
```

パッケージ管理がある言語はいろいろと楽ですよね。

[^high_speed]: 噂では超高速の名に恥じないトゥート間隔に設定したところ通報されたらしいぞ! 悪は滅びた!

### コードを書く ###

最後に超高速ぽんぽこマシン弐号機に Push 通知のためのコードを書き加えていきます。 といってもラッパライブラリを使ってるので脳死です。 チョロ甘ですね。

```python
import pushover

# 省略

# メモしたやつをここに
po_user_key = ""
po_api_token = ""

# 省略

po_client = pushover.Client(po_user_key, api_token = po_api_token)

# 省略

po_client.send_message(F"次のぽんぽこは約 {next_hour} 時間 {next_minute:02} 分後です", title = "ぽんぽこしました")
```

## Result ##

![result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/92bbf4eb-cab9-7a5d-6062-59b8af358936.png)

成し遂げたぜ。

## 所感 ##

割と手間なく通知できるのでいろんなものに活用できそうだと思った(KONAMI 50<sup>th</sup> 感)。
タップで URL 開いたりとかいろいろできるらしいしアイデア次第ですね。

## 最後に ##

[![ponpoko_tuyoi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241027/99b39530-d8b7-6151-39cd-4d33a7f61cc3.png)
](https://mstdn.kemono-friends.info/@muniel/102239718557967488)

ぽんぽこの取り扱いには十分注意しましょう。