|
@@ -1,8 +1,7 @@
|
|
|
package org.congressodeiradicali.karlmarx
|
|
|
-import com.bot4s.telegram.api.declarative.CommandFilterMagnet
|
|
|
import com.bot4s.telegram.models.Message
|
|
|
|
|
|
-import scala.util.{Failure, Success}
|
|
|
+import scala.concurrent.{ExecutionContext, Future, blocking}
|
|
|
|
|
|
class BanPlugin(localizer: Localizer, bot: Bot) extends Plugin {
|
|
|
// override var handlers: Map[CommandFilterMagnet, Handler] = ...
|
|
@@ -12,24 +11,29 @@ class BanPlugin(localizer: Localizer, bot: Bot) extends Plugin {
|
|
|
user.syncAfterInit{user => user.canBanUsers}{_ => false}
|
|
|
}
|
|
|
|
|
|
- onCommand("ban", { msg =>
|
|
|
- val text = msg.replyToMessage.fold {
|
|
|
- LocalizableString.BAN_FAILED_REPLY
|
|
|
- } { message =>
|
|
|
- message.from.fold {
|
|
|
- LocalizableString.BAN_FAILED_INVALID_USER
|
|
|
- } { u =>
|
|
|
- val user = new BotUser(u, message.chat, bot)
|
|
|
- user.init() map {
|
|
|
- case Success(_) if user.isAdmin => LocalizableString.BAN_FAILED_BAN_ADMIN
|
|
|
- case Success(_) => {
|
|
|
- user.ban()
|
|
|
- LocalizableString.BAN_SUCCESSFUL
|
|
|
+ onCommand("ban") { implicit msg =>
|
|
|
+ Future {
|
|
|
+ val text = msg.replyToMessage.fold {
|
|
|
+ LocalizableString.BAN_FAILED_REPLY
|
|
|
+ } { message =>
|
|
|
+ message.from.fold {
|
|
|
+ LocalizableString.BAN_FAILED_INVALID_USER
|
|
|
+ } { u =>
|
|
|
+ val user = new BotUser(u, message.chat, bot)
|
|
|
+ blocking {
|
|
|
+ user syncAfterInit { botuser =>
|
|
|
+ if (botuser.isAdmin || botuser.isCreator) {
|
|
|
+ LocalizableString.BAN_FAILED_BAN_ADMIN
|
|
|
+ } else {
|
|
|
+ user.ban()
|
|
|
+ LocalizableString.BAN_SUCCESSFUL
|
|
|
+ }
|
|
|
+ } { _ => LocalizableString.BAN_FAILED }
|
|
|
}
|
|
|
- case Failure(_) => LocalizableString.BAN_FAILED
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- Some(localizer.getString(text))
|
|
|
- })
|
|
|
+
|
|
|
+ Some(localizer.getString(text))
|
|
|
+ }(ExecutionContext.global)
|
|
|
+ }
|
|
|
}
|