以下のようなコマンドで該当するなろう小説の本のタイトルが返ってくるというもの
/narou 本のタイトル
タイトル1
タイトル2
...
タイトル20
何故作ったのか
同じチャンネルの人がなろう小説の話をしていたのでdiscordのbot作成の練習に丁度いいと思ったため。
discordrbを使用したのは単純にRubyでコードを書くのが楽しいからです。
今回使用したgem
discordrb
discordのbotを作成するため+rubyを使いたかったため使用
bot = Discordrb::Commands::CommandBot.new token: MY_TOKEN, prefix: '/'
bot.command :narou do |event, *args|
# /narouコマンドの処理
end
typhoeus
httpリクエストのために使用するgem
なろうの検索をリクエストするために使用
request = Typhoeus::Request.new('url')
request.run
nokogiri
httpリクエストで帰ってきたhtmlをパースするgem
本のタイトルを抽出するために使用
@doc = Nokogiri::HTML(response.response_body)
@doc.css('.tl').length.times do |index|
zip << @doc.css('.tl')[index].inner_text << "\n"
end
処理の流れ
- チャットに
/narou 本のタイトル
を入力する - なろうbotが指定した本のタイトルでhttpリクエストをする
- 返ってきたhttpを本のタイトルだけを取り出すようにパースする
- チャットにパースした本のタイトルを反映する
作ってみた感想
最初はbot作成は面倒だと思ったが、実際に作るとそんなことはなかった。むしろ楽しいです。
また、discordrb
は使い方がwikiに乗っていたので詰まることがなかった。
discordrb
の開発者に感謝!