1234567891011121314151617181920212223242526272829303132333435363738 |
- package org.congressodeiradicali.karlmarx
- import com.bot4s.telegram.api.declarative.{CommandFilterMagnet, CommandImplicits}
- import scala.concurrent.{ExecutionContext, Future}
- import scala.util.{Failure, Success}
- class BanPlugin(localizer: Localizer, bot: Bot) extends Plugin with CommandImplicits {
- override var handlers: Map[CommandFilterMagnet, Handler] = Map {
- stringToCommandFilter("ban") -> { msg =>
- implicit val ec: ExecutionContext = ExecutionContext.global
- val futureLocalizedString = msg.replyToMessage.fold {
- Future { LocalizableString.BAN_FAILED_REPLY }
- } { reply =>
- reply.from.fold {
- Future { LocalizableString.BAN_FAILED_INVALID_USER }
- } { u =>
- val user = new BotUser(u, msg.chat, bot)
- user.init().map {
- case Success(user) => if (user.isAdmin || user.isCreator) {
- LocalizableString.BAN_FAILED_BAN_ADMIN
- } else {
- user.ban()
- LocalizableString.BAN_SUCCESSFUL
- }
- case Failure(_) => LocalizableString.BAN_FAILED
- }
- }
- }
- futureLocalizedString.map { s =>
- Some(localizer.getString(s))
- }
- }
- }
- }
|