diff options
| author | Nathan Perry <nathan@meta.sc> | 2016-04-30 13:22:33 -0400 |
|---|---|---|
| committer | Nathan Perry <nathan@meta.sc> | 2016-04-30 13:22:33 -0400 |
| commit | 9988e0e8e1ec1d08f703e10f9d9ccc3ad85edf90 (patch) | |
| tree | c00bf130e8a6a649620e26d8dafbaba2ed253441 | |
initial commitscala
| -rw-r--r-- | .gitignore | 5 | ||||
| -rwxr-xr-x | build.sbt | 17 | ||||
| -rwxr-xr-x | config.example.yml | 11 | ||||
| -rwxr-xr-x | event_handler.scala | 33 | ||||
| -rwxr-xr-x | main.scala | 30 |
5 files changed, 96 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8594241 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.ensime +.ensime_cache +project +target +config.yml diff --git a/build.sbt b/build.sbt new file mode 100755 index 0000000..c14f31d --- /dev/null +++ b/build.sbt @@ -0,0 +1,17 @@ +lazy val root = (project in file("."))
+
+libraryDependencies ++= Seq(
+ "com.github.austinv11" % "Discord4J" % "2.4.6",
+ "org.slf4j" % "slf4j-simple" % "1.7.9",
+ "org.yaml" % "snakeyaml" % "1.17",
+ "org.scala-lang" % "scala-reflect" % "2.11.8"
+)
+
+resolvers ++= Seq(
+ "jcenter-bintray" at "http://jcenter.bintray.com",
+ "jitpack.io" at "https://jitpack.io"
+)
+
+scalacOptions ++= Seq("-deprecation", "-feature", "-language:implicitConversions")
+
+scalaVersion := "2.11.8"
diff --git a/config.example.yml b/config.example.yml new file mode 100755 index 0000000..9cc1a19 --- /dev/null +++ b/config.example.yml @@ -0,0 +1,11 @@ +trigger: sample
+
+queue_size: 5
+admin: 12345678901234567
+op_role: sample-controller
+
+server: sample
+voice_channel: General
+
+username: username@example.com
+password: testpass123
diff --git a/event_handler.scala b/event_handler.scala new file mode 100755 index 0000000..275de9c --- /dev/null +++ b/event_handler.scala @@ -0,0 +1,33 @@ +import sx.blah.discord._
+import api.{EventSubscriber => Event}
+import handle.impl.events.{ReadyEvent => Ready, _}
+
+import org.slf4j._
+
+object EventHandler {
+ val logger = LoggerFactory getLogger EventHandler.getClass
+
+ @Event
+ def ready(event: Ready) = {
+ val user = event.getClient.getOurUser
+ logger info s"Logged in as ${user.getName} (${user.getID})"
+ }
+
+ @Event
+ def message(event: MessageReceivedEvent): Unit = {
+ val msg = event.getMessage
+ logger info s"Received ${if (msg.getChannel.isPrivate) "private" else "public"} message '${msg.getContent}' from ${msg.getGuild.getName}#${msg.getChannel.getName}"+
+ s"::${msg.getAuthor.getName} (${msg.getAuthor.getID})"
+
+ if (msg.getChannel.isPrivate) {
+ logger debug "Ignoring private message."
+ return
+ }
+
+ if (msg.getGuild.getID != (Config \ "server": Int)) {
+ logger debug s"Message from wrong server (${msg.getGuild.getName})"
+ return
+ }
+
+ }
+}
diff --git a/main.scala b/main.scala new file mode 100755 index 0000000..6f82513 --- /dev/null +++ b/main.scala @@ -0,0 +1,30 @@ +object Main {
+ import org.slf4j._
+ import sx.blah.discord._
+
+ val logger = LoggerFactory getLogger Main.getClass
+
+ def main(args: Array[String]) = {
+ import api._
+
+ val client = (new ClientBuilder withLogin (Config \ "username", Config \ "password")).login
+ client.getDispatcher registerListener EventHandler
+ }
+}
+
+object Config {
+ import scala.io.Source
+ import org.yaml.snakeyaml._
+ import scala.collection._
+ import scala.collection.JavaConverters._
+ import java.util.{Map => JMap}
+
+ lazy val yaml: Map[String, Any] = ((new Yaml) load (Source fromFile "config.yml").mkString).asInstanceOf[JMap[String, Any]].asScala
+
+ import scala.reflect.runtime.universe._
+ def \[T: TypeTag](item: String): T = (yaml get item) match {
+ case Some(x: String) if typeOf[T] <:< typeOf[Int] => x.toInt.asInstanceOf[T]
+ case Some(x) => x.asInstanceOf[T]
+ case None => throw new IllegalStateException(s"Config had no value for '$item'.")
+ }
+}
|
