diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index fedfa39deec9ea..3088e3177ddd2d 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -85,8 +85,16 @@ def process_status ApplicationRecord.transaction do @status = Status.create!(@params) attach_tags(@status) + + # Delete status on zero follower user and nearly created account with include some replies + if like_a_spam? + @status = nil + raise ActiveRecord::Rollback + end end + return if @status.nil? + resolve_thread(@status) fetch_replies(@status) distribute @@ -426,4 +434,13 @@ def increment_voters_count! poll.reload retry end + + def like_a_spam? + ( + !@status.account.local? && + @status.account.followers_count.zero? && + @status.account.created_at > 1.day.ago && + @mentions.count >= 2 + ) + end end