Ruby
discord

discordrbでなろう小説のタイトルを検索するbotを作ってみた

以下のようなコマンドで該当するなろう小説の本のタイトルが返ってくるというもの

/narou 本のタイトル
タイトル1
タイトル2
...
タイトル20

何故作ったのか

同じチャンネルの人がなろう小説の話をしていたのでdiscordのbot作成の練習に丁度いいと思ったため。
discordrbを使用したのは単純にRubyでコードを書くのが楽しいからです。

今回作成したbot

今回使用した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

処理の流れ

  1. チャットに/narou 本のタイトルを入力する
  2. なろうbotが指定した本のタイトルでhttpリクエストをする
  3. 返ってきたhttpを本のタイトルだけを取り出すようにパースする
  4. チャットにパースした本のタイトルを反映する

作ってみた感想

最初はbot作成は面倒だと思ったが、実際に作るとそんなことはなかった。むしろ楽しいです。
また、discordrbは使い方がwikiに乗っていたので詰まることがなかった。
discordrbの開発者に感謝! :tada:

参考サイト