diff --git a/website/client/src/components/achievements/testing.vue b/website/client/src/components/achievements/testing.vue
deleted file mode 100644
index 6e04e7bd0e..0000000000
--- a/website/client/src/components/achievements/testing.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
- {{ $t('guildReminderText1') }}
-
-
-
- {{ $t('guildReminderText2') }}
-
{{ $t('marketing2Lead1') }}
diff --git a/website/common/locales/en/front.json b/website/common/locales/en/front.json
index 434ea56177..a9d16b7b42 100644
--- a/website/common/locales/en/front.json
+++ b/website/common/locales/en/front.json
@@ -33,7 +33,7 @@
"marketing1Lead2": "Improve your habits to build up your avatar. Show off the sweet gear you've earned!",
"marketing1Lead3Title": "Find Random Prizes",
"marketing1Lead3": "For some, it's the gamble that motivates them: a system called \"stochastic rewards.\" Habitica accommodates all reinforcement and punishment styles: positive, negative, predictable, and random.",
- "marketing2Header": "Compete With Friends, Join Interest Groups",
+ "marketing2Header": "Compete with Friends",
"marketing2Lead1Title": "Social Productivity",
"marketing2Lead1": "While you can play Habitica solo, the lights really turn on when you start collaborating, competing, and holding each other accountable. The most effective part of any self-improvement program is social accountability, and what better an environment for accountability and competition than a video game?",
"marketing2Lead2Title": "Fight Monsters",
diff --git a/website/common/locales/en/groups.json b/website/common/locales/en/groups.json
index 23a84f5243..fdffc61d24 100644
--- a/website/common/locales/en/groups.json
+++ b/website/common/locales/en/groups.json
@@ -251,7 +251,7 @@
"fetchRecentMessages": "Fetch Recent Messages",
"like": "Like",
"liked": "Liked",
- "inviteToGuild": "Invite to Guild",
+ "inviteToGuild": "Invite to Group",
"inviteToParty": "Invite to Party",
"inviteEmailUsername": "Invite via Email or Username",
"inviteEmailUsernameInfo": "Invite users via a valid email or username. If an email isn't registered yet, we'll invite them to join.",
diff --git a/website/common/locales/en/messages.json b/website/common/locales/en/messages.json
index 79d98479a9..9c418208e1 100644
--- a/website/common/locales/en/messages.json
+++ b/website/common/locales/en/messages.json
@@ -59,5 +59,6 @@
"messageMissingDisplayName": "Missing display name.",
"reportedMessage": "You have reported this message to moderators.",
"canDeleteNow": "You can now delete the message if you wish.",
- "newsPostNotFound": "News Post not found or you don't have access."
+ "newsPostNotFound": "News Post not found or you don't have access.",
+ "featureRetired": "This feature is no longer supported."
}
diff --git a/website/common/script/libs/achievements.js b/website/common/script/libs/achievements.js
index d02f8b2c2a..380e2b481b 100644
--- a/website/common/script/libs/achievements.js
+++ b/website/common/script/libs/achievements.js
@@ -182,7 +182,6 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'partyUp', language });
_addSimple(result, user, { path: 'partyOn', language });
- _addSimple(result, user, { path: 'joinedGuild', language });
_addSimple(result, user, { path: 'royallyLoyal', language });
_addSimple(result, user, { path: 'joinedChallenge', language });
_addSimple(result, user, { path: 'invitedFriend', language });
@@ -352,6 +351,10 @@ function _getSpecialAchievements (user, language) {
_addSimple(result, user, { path: 'groupsBeta2022', language });
}
+ if (user.achievements.joinedGuild) {
+ _addSimple(result, user, { path: 'joinedGuild', language });
+ }
+
return result;
}
diff --git a/website/server/controllers/api-v3/chat.js b/website/server/controllers/api-v3/chat.js
index c3922bb843..d4793a8fb3 100644
--- a/website/server/controllers/api-v3/chat.js
+++ b/website/server/controllers/api-v3/chat.js
@@ -130,6 +130,10 @@ api.postChat = {
const group = await Group.getGroup({ user, groupId });
+ if (group.type !== 'party' && !(group.purchased && group.purchased.plan.customerId)) {
+ throw new BadRequest(res.t('featureRetired'));
+ }
+
// Check message for banned slurs
if (group && group.privacy !== 'private' && textContainsBannedSlur(req.body.message)) {
const { message } = req.body;