about summary refs log tree commit diff
path: root/app/models/status.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/status.rb')
-rw-r--r--app/models/status.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/app/models/status.rb b/app/models/status.rb
index 859da01ec..37ceb1a9c 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -570,7 +570,7 @@ class Status < ApplicationRecord
     return if text&.nil?
     return unless '#!'.in?(text)
     chunks = []
-    text.split(/(#!\w+)/).each do |chunk|
+    text.split(/(#![\w:]+)/).each do |chunk|
       if chunk.start_with?("#!")
         case chunk[2..-1].downcase
         when 'permalink'
@@ -579,6 +579,20 @@ class Status < ApplicationRecord
           chunks << "https://monsterpit.cloud/~/#{account.username}"
         when 'blogroot'
           chunks << "https://monsterpit.blog/~/#{account.username}"
+        when 'ping:admins'
+          mentions = User.admins.map { |u| "@#{u.account.username}" }
+          mentions.sort!
+          chunks << mentions.join(' ')
+        when 'ping:mods'
+          mentions = User.moderators.map { |u| "@#{u.account.username}" }
+          mentions.sort!
+          chunks << mentions.join(' ')
+        when 'ping:staff'
+          mentions = User.admins.map { |u| "@#{u.account.username}" }
+          mentions += User.moderators.map { |u| "@#{u.account.username}" }
+          mentions.uniq!
+          mentions.sort!
+          chunks << mentions.join(' ')
         else
           chunks << chunk
         end