2016.10.30.追記 ---
これの改良版をアップ。
/ja/2016-09-15
---
●
みろりHPのファイル置き場
今週ひさびさに仲間とSkypeでTRPGやってんだけど、やっぱりSkype上でダイスロールができないと不便なんでSkypeBot作った。せっかくなので公開する。コンパイルしてあるんでpython環境がなくても使えるはず。ただちょっと、初期設定が面倒だと思うのでその解説を今回は書く。

こういう感じのBOTだよ。
●
必要なもの
- windows。
- skype for windows。ふつうにデスクトップで開くアレ。
- skype for web。ブラウザで開くskype。初期設定に必要。
- sqlite3の中身が見れるツール。DB browser for SQLiteなど。
設定項目(skypeBot.conf)はこんな感じ。
- test
- これはみどりんが作ってる最中に必要だった項目なんで気にしなくてよい。デフォルトの'False'のままでOK。
- dbPath
- skype for windowsのデータが保存されてるファイルのパスを書くとこ。たぶん'C:/Users/ユーザ名/AppData/Roaming/Skype/スカイプid/main.db'だと思う。main.dbがあるのを確認し、スラッシュがバックスラッシュになってないか確認。
- roomId
- めんどくさい項目その1。このBotを適用したいskypeチャットルームのidを書くとこ。これは上のmain.dbに記録されてるんで、まずそれをDB browser for SQLiteとかで開く。そしたらBrowse Dataというタブを開いて、TableのコンボボックスからMessagesなるテーブルを選ぶ。すると全ログの記録が出てくると思うんで、そこからBotを適用したいチャットルームの発言記録を探して、その記録のconvo_idの値を書く。適用したいチャットでなんか適当に発言すればこのリストの一番下に追加されるから、そうやって見つけたらラクと思う。
- interval
- ぶっちゃけこのプログラムはこのmain.dbをずーっと監視するつくりなんだけど、何秒ごとに監視するか決めるのがここ。
- key
- Botが反応する文字列を書くとこ。もしここを'xxx'という値にしたら、Botは'xxx 'から始まる発言に反応する。たとえば'xxx 1d100'と言えば1d100の結果を返してくれる。
- url
- めんどくさい項目その2。ぶっちゃけこのプログラムはダイスロールの結果をウェブ版のskypeに投げるつくりになってんだけど、その投げる宛先を書くのがここ。俺はchromeを使ってるんでchromeでの見かたを書く。まずskype for webを開いてログインして、Botを適用したいチャットルームを開く。そしたらF12を押してDeveloper Toolsを起動して、Networkっていうタブを開く。真ん中らへんに、pollとか?qsp=なんちゃらとかそういうなにがしかが並んでるはず。そこでブラウザ上のチャットルームに戻って、なんでもいいのでなんか発言する。するとすぐNetworkのタブにmessagesという何かがゾゾゾっといくつか増えるんで、それの……たぶん一番下のやつをクリックするとHeadersが開く。そのHeadersからRequest URL(たぶん一番上)の値を探して、書く。
- token
- いま開いてるHeadersの中からRegistrationToken(たぶん下の方)を探して書く。ここまで書いたらもうskype for webは閉じてよいと思う。
こいつが受け付けるダイスロールの書式は以下
- ふつーにダイスロールがしたい
- 'xxx 1d100'みたいに書く。dは大文字でもいいよ。
- 足し算がしたい
- 'xxx 1d10 5'みたいに書く。プラス記号は使わず半角スペースを入れてね。
- 引き算がしたい
- 'xxx 1d10 -5'みたいに書く。
- Botを終了したい
- 起動するとコマンドプロンプトが開くのだけど、それを閉じればいい。あるいは'xxx end'と入力しても終了する。
注意点としては、上述したとおりコイツはログを指定秒ごとにチェックするんで、たとえば2秒設定のとき、2秒以内に別の発言が来たらその前のダイスロールは無視される。誰かがロールしたら、譲りあいの心で数秒沈黙するのをおすすめ。あと5桁以上の数値は使えないように設定してある。これは試運転で仲間とのチャットで使ってみたら、某Wちゃんがむちゃなロールをさせてフリーズさせやがったことに対応した結果。
まあ、なんかおかしいなフリーズかなって思ったら問答無用でコマンドプロンプトを終了させて開き直せばいいと思う。
●
公開は上達の一歩ってことで、DLファイルにはpythonソースも同梱してある。気が向いたら、以上のようなこの非常にメンドロくさい設定項目を自動で埋めてくれるような改良をするかもしんない。やり方はなんとなく思いつくんだけど、仲間と遊ぶとき俺が使えりゃいーやってテンションで作ってたんでそういった親切機能に乏しいんだよねー。