slackbotでポケモンガチャ作った
Why
仕事はslackメインだし学生時代の研究室メンバーと今もslackでやりとりするようになりました.
ていうか卒業したら大学のOBOGのワークスペースに強制収容され,遊び道具にも使うようになったからbot活用していきたくなりました.
そもそも会社で治安の悪いslackスタンプMEGAMOJIが横行していたので,スタンプ作って遊んでいたらポケモンスタンプ見つけてしまいました.
ポケモンは小学生のときにキモオタして以来なので,記憶は金銀あたりで止まっています.
でも最近暑くて虫取り少年スタイルで出勤しているせいか,ポケモンゲットしたくなりました(夏バテ).
詳しい導入方法は以下を参考にしました.
qiita.com
What
適当にポケモンとか投稿するとこうなりたい.
slackbotガチャは下のようなワークスペースのカスタマイズ画面で簡単に設定できます.ガチャ結果(おみくじ結果)は「slackbotの返信」に入力します.
スタンプ名は :pokemon:
の形に整形して同様に入力すればいいのですが,ポケモンスタンプは何十個もあって相当だるい...のでPythonで文字列加工しました.
How
きっともっとスタイリッシュなやり方があるでしょうが,仕事の片手間でやった処理を紹介します.
こうしたらよかったやん,はコメントいただけると助かります.
1. スタンプ名の取得
普通にターミナルから ls
コマンドでemojiディレクトリの中身みてみた.
➜ github.com git:(master) ✗ ls slack-emoji-pokemon/emojis abra.png electrode.png kingdra.png parasect.png sneasel.png aerodactyl.png elekid.png kingler.png persian.png snorlax.png aipom.png entei.png koffing.png phanpy.png snubbull.png alakazam.png espeon.png krabby.png pichu.png spearow.png ampharos.png exeggcute.png lanturn.png pidgeot.png spinarak.png ......
多分あと10倍くらいこの png
ファイルの羅列が続く.
とりあえずこの羅列をコピペして txt
ファイルに保存.
2. ファイルを読み出す
保存したスタンプ名ファイルpoke.txt
を読み出す.
f = open("poke.txt", "r") raw = f.read() f.close()
3. 文字列の加工
読み出した文字列を加工し,変数pokelist
にリストとして格納する.
このときファイル名を要素として取り出し,各要素の.png
が邪魔なので:
の文字列で置換する.
pokelist = raw.replace('.png', ':').split()
変数pokelist
の中身(一部)はこんな感じ.
['abra:', 'croconaw:', 'gastly:', 'jynx:', 'meowth:', 'pikachu:', 'seel:', 'togepi:', 'aerodactyl:', 'cubone:', .... 'pidgey:', 'seaking:', 'tentacruel:']
4. まだ文字列の加工
ゴールはこのカタチ:pokemon:
なので,各要素の先頭の文字列に:
と,最後に改行が必要.
新しくリストpoke
を用意して格納する.
Pythonだと文字列連結が演算子でできる.
poke = [] for i in range(len(pokelist)): poke.insert(i,':'+pokelist[i]+'\n')
5. ファイルに書き出す
文字列をそのままテキストファイルからコピペして「slackbotの返信」に貼り付けたい.
f = open('result_poke.txt', 'w') f.writelines(poke) f.close()
slackbotに登録
あとはresult_poke.txt
というファイルが作成されているはずなのでこんな感じでslackbotに登録する.
まとめ
これで今後slackスタンプを一括大量追加しても,すぐガチャ作れます.
Pythonでそんなに難しい文字列処理することなくできました.
せっかくなのでPythonでslackbot作ろうと思います.