advent calendar6日目にして途絶えそうだったので3週目
これは
ojichatのslackbotが生息するOjiChannelをつくったのでそのログ
先駆者さん(参考文献4.)がいらっしゃるが、golangあまりわからんマンなのでpython版として無理やりやる
前提条件
- 環境
- Python 3.7.4
- Docker version 19.03.2, build 6a30dfc
- 要求
- SlackBotの導入
- 多くのわかりやすい記事があるので割愛
- APIトークンの取得まで
- SlackBotの導入
- モチベーション
- slackで誰も返事してくれないときは、おじさんの絡みでもありがたいかもしれない
参考文献
できるもの
本編
インストール
lins05/slackbot
$ pip3 install slackbot
greymd/ojichat
おじさんで環境を汚したくない、Goの実行環境を持っていないなどの状況でもお手軽におじさんになるために、Dockerコンテナでもojichatを用意してある ( greymd/ojichat )。
https://github.com/greymd/ojichat
汚したくないので
$ docker pull greymd/ojichat
slackbot実行のための用意
ojichannel
├── plugins
│ ├── __init__.py
│ └── ojibot.py
├── run.py
└── slackbot_settings.py
run.py
from slackbot.bot import Bot
def main():
bot = Bot()
bot.run()
if __name__ == "__main__":
print('start slackbot')
main()
slackbot_settings.py
# botアカウントのトークン
API_TOKEN = "hoge"
# デフォルトの返答
DEFAULT_REPLY = "fuga"
# プラグインスクリプトを置いてあるサブディレクトリ名のリスト
PLUGINS = ['plugins']
ojibot.py
import subprocess
from slackbot.bot import listen_to
@listen_to('(.*)')
def greet_by_oji(message, something):
user_info = message.user
f_name = user_info["profile"]["first_name"]
sp = subprocess.run( ["docker", "run", "--rm", "-i", "greymd/ojichat:latest", f_name], encoding='utf-8', stdout=subprocess.PIPE)
# おじさんはチャンネルにポストする
message.send(sp.stdout)
# おじさんはスレッドにリプライする
message.reply(sp.stdout, in_thread=True)
実行
$ python3 run.py
すべての発言に対してdocker runが動くのはよくなさそうだけど遊びアプリということで
おわり
Slack自治厨ちゃん、オハヨー❗😃✋😄オジサンは今日から栃木ヘ〜😃☀ (^_^)💗😚