BanPlugin.scala 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package org.congressodeiradicali.karlmarx
  2. import com.bot4s.telegram.api.declarative.{CommandFilterMagnet, CommandImplicits}
  3. import scala.concurrent.{ExecutionContext, Future}
  4. import scala.util.{Failure, Success}
  5. class BanPlugin(localizer: Localizer, bot: Bot) extends Plugin with CommandImplicits {
  6. override var handlers: Map[CommandFilterMagnet, Handler] = Map {
  7. stringToCommandFilter("ban") -> { msg =>
  8. implicit val ec: ExecutionContext = ExecutionContext.global
  9. val futureLocalizedString = msg.replyToMessage.fold {
  10. Future { LocalizableString.BAN_FAILED_REPLY }
  11. } { reply =>
  12. reply.from.fold {
  13. Future { LocalizableString.BAN_FAILED_INVALID_USER }
  14. } { u =>
  15. val user = new BotUser(u, msg.chat, bot)
  16. user.init().map {
  17. case Success(user) => if (user.isAdmin || user.isCreator) {
  18. LocalizableString.BAN_FAILED_BAN_ADMIN
  19. } else {
  20. user.ban()
  21. LocalizableString.BAN_SUCCESSFUL
  22. }
  23. case Failure(_) => LocalizableString.BAN_FAILED
  24. }
  25. }
  26. }
  27. futureLocalizedString.map { s =>
  28. Some(localizer.getString(s))
  29. }
  30. }
  31. }
  32. }