作った後に調べたら似たようなプラグインが既にあったんだよなぁ…(真顔
Phenomer / mfilter — Bitbucket
というわけでプラグイン作りました。わいわい
pocke/mikutter_blocked_user_mute · GitHub
ブログを書いた時点でのコードはこちら
pocke/mikutter_blocked_user_mute at b94804db292099c46e6dea4ba5e2994b561ab899 · GitHub
module MikuTwitter::APIShortcuts def blocked_ids cursor_pager(self/'blocks/ids', :json, :ids, {}) end end
ここでMikuTwitter::APIShortcutsにモンキーパッチを当てています。
cusor_pagerは、core/lib/mikutwitter/api_shortcuts.rb で定義されています。
blocks/idsは5000件ごとしか取得できないので、cusor_pagerを使って全件まとめて取得しています。
定義したblocked_idsは、
Service.primary.twitter.blocked_ids
の用に使います。
んで後はfilter_show_filterでrejectすればいいだけ…なのですが、どうやらリツイートされてきたツイートのuserはリツイートしたユーザーのものが返るようです。
それだと都合が悪いので
blocked_user_mute.rb line 21-25
if msg.retweet? then block_list.include?(msg.retweet_source[:user].id) else block_list.include?(msg.user.id) end
の用にretweeet?の結果で別のところを見ています。
引っかかったのはそのくらいですかね。また引っかからないように備忘録として