From 52cdb74268a544905b3c122598d91afeedafa428 Mon Sep 17 00:00:00 2001 From: Gleb Oborin Date: Thu, 12 Mar 2020 15:31:45 +0300 Subject: [PATCH 1/2] Old but gold --- src/main/scala/bot/BotStarter.scala | 39 ++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/src/main/scala/bot/BotStarter.scala b/src/main/scala/bot/BotStarter.scala index 565a9a9..7390f1f 100644 --- a/src/main/scala/bot/BotStarter.scala +++ b/src/main/scala/bot/BotStarter.scala @@ -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,6 +41,37 @@ 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") + } + 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 { From d19ea49925a549906699468f5e8ac43fe22b56d3 Mon Sep 17 00:00:00 2001 From: Gleb Oborin Date: Wed, 29 Apr 2020 20:49:12 +0300 Subject: [PATCH 2/2] Some changes from february --- build.sbt | 4 +++- src/main/scala/bot/BotStarter.scala | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) 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 7390f1f..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} @@ -49,6 +49,7 @@ class BotStarter(override val client: RequestHandler[Future]) extends TelegramBo messagesUsers(user.id.toString).foreach { p => reply(s"From: ${p._1}\n${p._2}\n\n") } + messagesUsers(user.id.toString).clear() reply("").void } } @@ -69,7 +70,7 @@ class BotStarter(override val client: RequestHandler[Future]) extends TelegramBo messagesUsers(id) = mutable.ListBuffer() } messagesUsers(id) += Tuple2(from_id.toString, text) - reply(s"Message was sent to ${id}").void + reply(s"Message was sent to $id").void } } } @@ -77,7 +78,7 @@ class BotStarter(override val client: RequestHandler[Future]) extends TelegramBo 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) )