diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 58d094023..0ddd798a5 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -84,8 +84,16 @@ class ActivityPub::Activity::Create < ActivityPub::Activity 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 @@ -445,4 +453,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity rescue nil 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