Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

threadにbotが反応して自動でGitHubのIssueにコメント投稿するようにする #6

Open
attache-case opened this issue Jul 6, 2017 · 2 comments

Comments

@attache-case
Copy link
Owner

attache-case commented Jul 6, 2017

Issue #3 のようにおもいつきへのコメントのフォーマットを定めてしまってもよいのですが、Slack上での操作としては、おもいつきの投稿に直接threadするのが単純なので、これにbotが反応するようにできると嬉しいと思います。

threadに対応する方法の構想

今動かしているbotプログラムの本体を作っているリポジトリ
scrapinghub/slackbot#136
によると、thread関連のAPIへの対応が議論されており、今週末に実装してみるよという話になっている

上記案件が実装されたなら、後はbotがthread固有のIDとLightBulbのIssue番号を対応付けて覚えるようにすれば、threadへの投稿に反応してIssueに自動でコメント投稿できるようになると思う。(思い付き投稿(Issue生成)と同時にbotが自動でstart_threadし、thread固有のIDを把握するのがよさそう。出来るかは不明。)

チャンネル上の通常の投稿のmessageではスレッドを特定するIDである'thread_ts'キーが存在しない。つまりmessage.body['thread_ts']がNone。スレがついて初めての投稿のmessageから共通の'thread_ts'の値が使用されるようになっている。スレが付いた元の投稿とスレをどうやって結び付けているかは不明。

GitHubへの投稿にPyGithub関係のモジュールを使う場合は、requirements.txtに追加を忘れずに。

@takuma7
Copy link

takuma7 commented Jul 6, 2017

@attache-case
Copy link
Owner Author

ありがとうございます!
thread_tsはスレッドの親のtsと同じなんですね!(自分で検証した時にはthread_tsの値が親のtsと違うように見えておかしいなーと思っていたのですが、勘違いだったようです。APIは見るものですね!)

そうだとするとメッセージにthread_tsアトリビュートがあるか無いかで、おもいつきの投稿(thread_tsなし)なのか、おもいつきに対するコメント(thread_tsあり)なのか分かりますね!
thread_tsあり(=おもいつきに対するコメント)なら、thread_tsが指す親のメッセージをAPIを叩くか何かしてもう一度読み込んで、どのおもいつきなのかを特定できて・・・という流れで実装できそうですね。

おもいつき投稿本体だけだとIssue番号が分からないので、おもいつき投稿と同時にbotがthreadを開始して、Issue番号を含む特定の発言をするとかの方法が必要になりそう。
また、その場合、bot稼働前のおもいつきに対するコメントは #3 のフォーマットで書いてもらう他なさそう。何かアイデアはありますでしょうか。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants