about summary refs log tree commit diff
path: root/app/models/status.rb
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-04-02 15:50:34 -0500
committermultiple creatures <dev@multiple-creature.party>2019-05-21 03:16:21 -0500
commit01acaa792ad23d244a2ea8acfeaa4c0ffba4ffb1 (patch)
tree98b86a8f97c9a970463eb6e370423b579b6b37d9 /app/models/status.rb
parentd00907014b705a133cab48e3843afe5f4dbf99b4 (diff)
bangtag to mention admin/mods/staff
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