From 749cd49b66363cf8e5c330eb47c732ae7e6a5734 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 28 Apr 2015 10:59:21 +0200 Subject: [PATCH] auto-check troll reports on mod action --- modules/hub/src/main/actorApi.scala | 1 + modules/mod/src/main/ModApi.scala | 3 ++- modules/report/src/main/Env.scala | 2 ++ modules/report/src/main/ReportApi.scala | 8 ++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/modules/hub/src/main/actorApi.scala b/modules/hub/src/main/actorApi.scala index 099f209d148d7..55c93a5a84450 100644 --- a/modules/hub/src/main/actorApi.scala +++ b/modules/hub/src/main/actorApi.scala @@ -44,6 +44,7 @@ case class Cheater(userId: String, text: String) case class Clean(userId: String) case class Check(userId: String) case class MarkCheater(userId: String, by: String) +case class MarkTroll(userId: String, by: String) case class Shutup(userId: String, text: String) } diff --git a/modules/mod/src/main/ModApi.scala b/modules/mod/src/main/ModApi.scala index 921228a0915f7..80769c4def7fa 100644 --- a/modules/mod/src/main/ModApi.scala +++ b/modules/mod/src/main/ModApi.scala @@ -51,7 +51,8 @@ final class ModApi( def troll(mod: String, username: String): Fu[Boolean] = withUser(username) { u => val user = u.copy(troll = !u.troll) ((UserRepo updateTroll user) >>- - logApi.troll(mod, user.id, user.troll)) inject user.troll + logApi.troll(mod, user.id, user.troll)) >>- + (reporter ! lila.hub.actorApi.report.MarkTroll(user.id, mod)) inject user.troll } def ban(mod: String, username: String): Funit = withUser(username) { user => diff --git a/modules/report/src/main/Env.scala b/modules/report/src/main/Env.scala index fe48c58daa1a0..ed9ea58508d17 100644 --- a/modules/report/src/main/Env.scala +++ b/modules/report/src/main/Env.scala @@ -29,6 +29,8 @@ final class Env( api.autoProcess(userId) case lila.hub.actorApi.report.MarkCheater(userId, by) => api.processEngine(userId, by) + case lila.hub.actorApi.report.MarkTroll(userId, by) => + api.processTroll(userId, by) case lila.hub.actorApi.report.Shutup(userId, text) => api.autoInsultReport(userId, text) } diff --git a/modules/report/src/main/ReportApi.scala b/modules/report/src/main/ReportApi.scala index 778e1ea961603..bcfe5d198a3f3 100644 --- a/modules/report/src/main/ReportApi.scala +++ b/modules/report/src/main/ReportApi.scala @@ -76,6 +76,14 @@ private[report] final class ReportApi { $set("processedBy" -> byModId), multi = true) + def processTroll(userId: String, byModId: String): Funit = $update( + Json.obj( + "user" -> userId, + "reason" -> $or(List(Reason.Insult.name, Reason.Troll.name, Reason.Other.name)) + ) ++ unprocessedSelect, + $set("processedBy" -> byModId), + multi = true) + def autoInsultReport(userId: String, text: String): Funit = { UserRepo byId userId zip UserRepo.lichess flatMap { case (Some(user), Some(lichess)) => create(ReportSetup(