discordのbotをrubyで作るときに任意個の引数を受け取る

最近友人や後輩とdiscordで通話をしながらスプラトゥーン2のリーグマッチをやっている. いつもは2人や4人で集まることが多いので問題にならなかったが,3人で集まったときに「誰がやるよ?」というのが問題になった.

そこで「人数と名前を入れるとランダムに選んでくれる」discordのbotを作成した.

「discord bot」で検索するとpythonでの例が多く出たため最初pythonで作ろうと思ったが,pythonでのライブラリ管理手法などがよく分からなかったので,結局慣れているrubyを用いることにした.

そこでrubyでの作成法を軽く検索したところ,

trap.jp

などが引っかかったので大いに参考にさせていただいた.

ただし,任意個の引数を受け取る方法が書いてなかったので,一応メモに残しておく. まともにrubyを扱える人なら調べるまでもないものだと思う.

bot.command :args do |event, *args|
  event.send_message("argc: #{args.size}, args: #{args}")
end

って感じで,ブロックの第二引数に *args を取ればいい.

普通に可変長引数を取ればいいだけなんだけど,そもそも可変長引数の取り方を知らなかったという……