diff --git a/build.sbt b/build.sbt index 2350a09..81d87e5 100644 --- a/build.sbt +++ b/build.sbt @@ -4,4 +4,6 @@ version := "0.1" scalaVersion := "2.12.9" -libraryDependencies += "com.bot4s" %% "telegram-core" % "4.4.0-RC2" \ No newline at end of file +libraryDependencies += "com.bot4s" %% "telegram-core" % "4.4.0-RC2" +libraryDependencies += "org.scalamock" %% "scalamock" % "4.4.0" % Test +libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.0" % Test \ No newline at end of file diff --git a/src/main/scala/bot/BotStarter.scala b/src/main/scala/bot/BotStarter.scala index 565a9a9..a990f60 100644 --- a/src/main/scala/bot/BotStarter.scala +++ b/src/main/scala/bot/BotStarter.scala @@ -7,7 +7,7 @@ import com.bot4s.telegram.api.declarative.Commands import com.bot4s.telegram.clients.{FutureSttpClient, ScalajHttpClient} import com.bot4s.telegram.future.{Polling, TelegramBot} import com.bot4s.telegram.models.{Message, User} -import com.softwaremill.sttp.SttpBackendOptions +import com.softwaremill.sttp.{SttpBackend, SttpBackendOptions} import com.softwaremill.sttp.okhttp.{OkHttpBackend, OkHttpFutureBackend} import slogging.{LogLevel, LoggerConfig, PrintLoggerFactory} @@ -23,14 +23,14 @@ class BotStarter(override val client: RequestHandler[Future]) extends TelegramBo with Commands[Future] { val registeredUsers: mutable.Set[User] = mutable.Set[User]() + var messagesUsers: mutable.Map[String, mutable.ListBuffer[(String, String)]] = mutable.Map[String, mutable.ListBuffer[(String, String)]]().withDefaultValue(mutable.ListBuffer()) onCommand("/start") { implicit msg => msg.from match { case None => reply("Register error").void - case Some(user) => { - registeredUsers += user - reply(s"You're registered.\n Your id is ${user.id}").void - } + case Some(user) => + registeredUsers += user + reply(s"You're registered.\nYour id is ${user.id}").void } } @@ -41,12 +41,44 @@ class BotStarter(override val client: RequestHandler[Future]) extends TelegramBo } reply(usersString).void } + + onCommand("/check") { implicit msg => + msg.from match { + case None => reply("Error.").void + case Some(user) => + messagesUsers(user.id.toString).foreach { p => + reply(s"From: ${p._1}\n${p._2}\n\n") + } + messagesUsers(user.id.toString).clear() + reply("").void + } + } + + onCommand("/send") { implicit msg => + var from_id : Int = 0 + msg.from match { + case None => from_id = 0 + case Some(user) => from_id = user.id + } + + msg.text match { + case None => reply("Enter non-empty message").void + case Some(s) => + val id: String = s.slice(6, 15) + val text: String = s.slice(16, s.length) + if (!messagesUsers.contains(id)) { + messagesUsers(id) = mutable.ListBuffer() + } + messagesUsers(id) += Tuple2(from_id.toString, text) + reply(s"Message was sent to $id").void + } + } } object BotStarter { def main(args: Array[String]): Unit = { implicit val ec: ExecutionContext = ExecutionContext.global - implicit val backend = OkHttpFutureBackend( + implicit val backend: SttpBackend[Future, Nothing] = OkHttpFutureBackend( SttpBackendOptions.Default.socksProxy("ps8yglk.ddns.net", 11999) )