いきなりvol.5ですがそれ以前は
http://fscoward.hateblo.jp/
にあります。
作るもの
今日のごはんbot(Slack)
Slackのgeneralチャンネルで「ランチ」と発言するとランチを返してくれるbotを作成します。
Applicationの登録
tokenの発行
https://api.slack.com/web
の下の方にトークン発行ボタンがあるので、tokenの発行をしましょう。
準備
Intellij IDEAを使用して空プロジェクト作成
ライブラリを使用
build.sbt
name := "lunch_bot"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies ++= Seq(
"com.github.gilbertw1" %% "slack-scala-client" % "0.1.2"
,"com.h2database" % "h2" % "1.4.188"
)
h2-databaseはとりあえず使おうかなぁって感じでいれています。
やっぱいいやってなったら後で外します。
作成
空のMainを作成
Main.scala
/**
* Created by FScoward on 15/08/12.
*/
object Main extends App {
}
出来上がったものがこちらです。
Regexについて
Regex.scala
package util
import scala.util.matching.Regex
/**
* Created by FScoward on 15/08/14.
*/
object Regex {
val REGISTER: Regex = """(reg:.*)""".r
val VOTE: Regex = """(vote:.*)""".r
}
ここ作ってる時に最初は括弧でくくらずに
val REGISTER: Regex = """reg:.*""".r
ってやってたんだけどどうやら括弧でくくってやる必要があるらしいです。
ランチを返してもらうための仕組み作り
LunchService
package service
import scala.util.Random
/**
* Created by FScoward on 15/08/15.
*/
trait LunchService {
val list: List[String] = List("弁当", "大戸屋")
def search(user: String): String = {
val r = new Random().nextInt(list.length)
s"@$user ${list(r)}"
}
}
object LunchService extends LunchService {}
今は「弁当」か「大戸屋」の二者択一です。
まるで役に立ちません。
ここを作りこんでいく必要があります。
ソースコード
途中から説明がめんどくさくなってだいぶ端折ってしまいました。
わからない部分は聞いてください。
答えられるものであれば回答します。