Hyper.sh - Container-native Cloud
Hyper.shは、とても手軽にDocker containerをhostingできるサービスです。課金は秒単位で行なわれ、一番安いプランだと月に$1ちょっとしか費用がかかりません。
これを使って、特定の単語に反応するTwitter Botを運用してみます。
Twitter Application Management
まずはここからCreate New Appします。Consumer Key
、Consumer Secret
、Access Token
、Access Token Secret
を入手します。
今回つくるBotは、特定の文字列からなるDMを受けとったときに返信するというものです。
require 'logger'
require 'twitter'
logger = Logger.new(STDOUT)
config = {
consumer_key: ENV['CONSUMER_KEY'],
consumer_secret: ENV['CONSUMER_SECRET'],
access_token: ENV['ACCESS_TOKEN'],
access_token_secret: ENV['ACCESS_TOKEN_SECRET'],
}
rest_client = Twitter::REST::Client.new(config)
logger.info 'REST client initialized'
streaming_client = Twitter::Streaming::Client.new(config)
logger.info 'Streaming client initialized'
streaming_client.user do |tweet|
if tweet.is_a?(Twitter::DirectMessage) && %r[\A年収\z].match?(tweet.text)
logger.info "Recieved DM #{tweet.text} from #{tweet.sender.screen_name}"
rest_client.create_direct_message(tweet.sender, "#{ENV['ANNUAL_INCOME']}万円")
end
end
このようになりました。
さて、まずはこのDocker imageをDocker Hubにpushします。 unasuke/annual-income - Docker Hub
次に、hyperの中にpullしてきます。hyperをローカルマシンと同様のものだと考えるとわかりやすいかもしれません。
$ hyper pull unasuke/annual-income:v0.1.1
そして、docker-compose.ymlを作成してあるので、次のコマンドでもうBotが動作し始めます。
# project名にハイフンが使えないと怒られたので直接指定
$ hyper compose up -d -p unasuke_annual_income
という訳で、僕に「年収」とだけ書いたDMを送ると僕の年収が返ってきます。
どうですか、Hyper.sh。ちなみにプランは自動で決まるのか、僕のBotはS4(月$5.18)で実行されています。
以下にinvitation linkを置いておくので是非活用してください。 https://console.hyper.sh/register/invite/yApE4Arn3osDm9RPDG3LuLJPj1BwR8fK
デフォルトでS4になり、docker-compose.yml内で指定できるそうです。
Compose File Reference | Hyper.sh User Guide