diff --git a/files/helpers/alerts.py b/files/helpers/alerts.py
index b0f2f7252..67d7a64be 100644
--- a/files/helpers/alerts.py
+++ b/files/helpers/alerts.py
@@ -132,24 +132,28 @@ def NOTIFY_USERS(text, v):
if word in text and id not in notify_users:
notify_users.add(id)
- billed = set()
if FEATURES['PING_GROUPS']:
+ billed = set()
for i in group_mention_regex.finditer(text):
- group = g.db.get(Group, i.group(2))
- if group:
- if v.id not in group.member_ids:
- billed.update(group.member_ids)
- notify_users.update(group.member_ids)
+ if i.group(2) == 'everyone':
+ everyone = [x[0] for x in g.db.query(User.id).all()]
+ billed.update(everyone)
+ notify_users.update(everyone)
+ else:
+ group = g.db.get(Group, i.group(2))
+ if group:
+ if v.id not in group.member_ids:
+ billed.update(group.member_ids)
+ notify_users.update(group.member_ids)
if billed:
cost = len(billed) * 5
if cost > v.coins:
abort(403, f"You need {cost} coins for this!")
+ g.db.query(User).filter(User.id.in_(billed)).update({ User.coins: User.coins + 5 })
v.coins -= cost
g.db.add(v)
- g.db.query(User).filter(User.id.in_(billed)).update({ User.coins: User.coins + 5 })
-
names = set(m.group(2) for m in mention_regex.finditer(text))
for user in get_users(names, graceful=True):
diff --git a/files/helpers/regex.py b/files/helpers/regex.py
index 9595264f4..be3322a60 100644
--- a/files/helpers/regex.py
+++ b/files/helpers/regex.py
@@ -11,6 +11,8 @@ mention_regex = re.compile('(^|\s|>)@([a-zA-Z0-9_\-]{1,30})(?![^<]*<\/(code|pre|
group_mention_regex = re.compile('(^|\s|>)!([a-z0-9_\-]{3,25})(?![^<]*<\/(code|pre|a)>)', flags=re.A)
+everyone_regex = re.compile('(^|\s|>)!(everyone)(?![^<]*<\/(code|pre|a)>)', flags=re.A)
+
valid_password_regex = re.compile("^.{8,100}$", flags=re.A)
marseyaward_body_regex = re.compile(">[^<\s+]|[^>\s+]<", flags=re.A)
diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py
index 504af00eb..7061d5517 100644
--- a/files/helpers/sanitize.py
+++ b/files/helpers/sanitize.py
@@ -422,9 +422,12 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys
if FEATURES['PING_GROUPS']:
for i in group_mention_regex.finditer(sanitized):
name = i.group(2)
- existing = g.db.get(Group, name)
- if existing:
- sanitized = group_mention_regex.sub(r'\1!\2', sanitized)
+ if name == 'everyone':
+ sanitized = group_mention_regex.sub(r'\1!\2', sanitized)
+ else:
+ existing = g.db.get(Group, name)
+ if existing:
+ sanitized = group_mention_regex.sub(r'\1!\2', sanitized)
soup = BeautifulSoup(sanitized, 'lxml')