💻clock vs のコード / ステキな時報ボットのしくみ
#ビバ丼時報部 (今作った)の 8pf です。生まれてすいません。
勢い余って作ったアドベントカレンダー用に古い記事をブラシ掛けして、言い出しっぺの責務を果たしたいと思います。
さて、 Vivaldi Social においてはトニーという火山弾のマスコットが他インスタンスとの差別化に一役以上買っているわけですが、 Vivaldi の中の人がこのトニー絵文字を12種以上準備されていたので、私はそれを活用して時報ボット https://social.vivaldi.net/@clockJPvs を運用しています。ちなみに mstdn.jp にも nsfw でない普通の時報 https://mstdn.jp/@clockJP を運用しております。2体も動かしていれば十分 #時報部 を名乗る資格はあるはずです。どうでもいいけどw。
ボットについて、どんな動きをしているかと申しますと、
こんなふうに普通の時報に絵文字で囲ったり
夜8時の場合
なんか喋ってる風にしてみたり。
santa
絵文字は1時間ごとで変化します。そして、絵文字についた名前をフキダシとして話します。 絵文字はパレットから選べますから、名前を覚える必要はありませんが、どの名前がどのアイコンなのかを見分けることができます。
ここから先はソースコードです。まず、ボットといえば API 呼び出しをラッピングしたライブラリですが、ここでは1時間に1度、単純にメッセージを送信するだけですので、わざわざフットプリントの大きなライブラリは使わず、 crontab と shell スクリプト (tony.sh) で動かします。
$ crontab -l
0 * * * * /home/shell/clockvs/tony.sh
// tony.sh
#!/bin/bash
# tony.sh -- :tony_api_key: は自分で用意して置換してください
declare -A xw
xw[01]=normal
xw[02]=wee
xw[03]=side
xw[04]=sigh
xw[05]=happy
xw[06]=astonished
xw[07]=grinning
xw[08]=santa
xw[09]=smiling
xw[10]=laughing
xw[11]=smirking
xw[12]=neutral
hw=`date "+%I"`
tony=':tony_'${xw[$hw]}':'
c=`date "+%F(%a) %R"`
h='Content-Type: application/json'
t='Authorization: Bearer :tony_api_key:'
unlisted='{ "lang": "ja", "visibility": "unlisted","status": "'$tony' 日本時間 '$c' をお知らせします。 '$tony'" }'
public='{ "lang": "ja", "visibility": "public","status": "'$tony' <'${xw[$hw]}'" }'
u=https://social.vivaldi.net/api/v1/statuses
curl --insecure -X POST -H "$h" -H "$t" -d "$unlisted" $u
curl --insecure -X POST -H "$h" -H "$t" -d "$public" $u
見ればわかるようなことしかしていないので、コードの説明は特にしません。もしこれはどうなってるのと興味がありましたら説明しますので、声でもかけてください。
いかがだったでしょうか(←言ってみたかった)。
以上です。今年もあと2か月、ゆるく生きていきます。