diff --git a/client/locales/az.json b/client/locales/az.json
index c4a72bfe..863cae79 100644
--- a/client/locales/az.json
+++ b/client/locales/az.json
@@ -676,7 +676,11 @@
},
"serverCard": {
"noDescription": "Bu serverin təsviri yoxdur. ",
- "tripledVoteBadge": "3X SƏS!"
+ "tripledVoteBadge": "3X SƏS!",
+ "mostVotedBadge": {
+ "tooltip": "Bu server keçən ay ən çox səs alan server idi.",
+ "label": "Ən çox səs alan"
+ }
},
"serverPage": {
"countdown": {
@@ -1361,7 +1365,11 @@
"botCard": {
"noDescription": "Bu botun təsviri yoxdur. ",
"tripledVoteBadge": "3X SƏS!",
- "neverVoted": "Heç bir səs yoxdur"
+ "neverVoted": "Heç bir səs yoxdur",
+ "mostVotedBadge": {
+ "tooltip": "Bu bot keçən ay ən çox səs alan bot idi.",
+ "label": "Ən çox səs alan"
+ }
},
"badges": {
"admin": "Admin",
diff --git a/client/locales/en.json b/client/locales/en.json
index b25da782..1944141e 100644
--- a/client/locales/en.json
+++ b/client/locales/en.json
@@ -676,7 +676,11 @@
},
"serverCard": {
"noDescription": "This server does not have a description. We can only imagine how beautiful it is inside.",
- "tripledVoteBadge": "3X VOTE!"
+ "tripledVoteBadge": "3X VOTE!",
+ "mostVotedBadge": {
+ "tooltip": "This server was the most voted server last month.",
+ "label": "Most Voted"
+ }
},
"serverPage": {
"countdown": {
@@ -1361,7 +1365,11 @@
"botCard": {
"noDescription": "This bot does not have a description. We can only imagine how beautiful it is.",
"tripledVoteBadge": "3X VOTE!",
- "neverVoted": "Never Voted"
+ "neverVoted": "Never Voted",
+ "mostVotedBadge": {
+ "tooltip": "This bot was the most voted bot last month.",
+ "label": "Most Voted"
+ }
},
"badges": {
"admin": "Admin",
diff --git a/client/locales/tr.json b/client/locales/tr.json
index 3ab4d2cf..84a2ef05 100644
--- a/client/locales/tr.json
+++ b/client/locales/tr.json
@@ -676,7 +676,11 @@
},
"serverCard": {
"noDescription": "Bu sunucunun açıklaması yok. İçeride ne kadar güzel olduğunu ancak hayal edebiliyoruz.",
- "tripledVoteBadge": "3X OY!"
+ "tripledVoteBadge": "3X OY!",
+ "mostVotedBadge": {
+ "tooltip": "Bu sunucu geçen ay en çok oy alan sunucuydu.",
+ "label": "En Çok Oy Alan"
+ }
},
"serverPage": {
"countdown": {
@@ -1361,7 +1365,11 @@
"botCard": {
"noDescription": "Bu botun bir açıklaması yok. Sadece ne kadar güzel olduğunu hayal edebiliriz.",
"tripledVoteBadge": "3X OY!",
- "neverVoted": "Hiç oy verilmedi"
+ "neverVoted": "Hiç oy verilmedi",
+ "mostVotedBadge": {
+ "tooltip": "Bu bot geçen ay en çok oy alan botdu.",
+ "label": "En Çok Oy Alan"
+ }
},
"badges": {
"admin": "Yönetici",
diff --git a/server/src/routes/bots/search.js b/server/src/routes/bots/search.js
index 204a0205..888b2482 100644
--- a/server/src/routes/bots/search.js
+++ b/server/src/routes/bots/search.js
@@ -5,6 +5,7 @@ const Bot = require('@/schemas/Bot');
const Review = require('@/schemas/Bot/Review');
const { StandedOutBot } = require('@/schemas/StandedOut');
const validateRequest = require('@/utils/middlewares/validateRequest');
+const { BotMonthlyVotes } = require('@/schemas/MonthlyVotes');
module.exports = {
get: [
@@ -72,6 +73,14 @@ module.exports = {
const total = await Bot.countDocuments(findQuery);
const maxReached = skip + foundBots.length >= total;
+ const monthlyVotes = await BotMonthlyVotes.find({ identifier: { $in: sortedBots.map(server => server.id) } });
+
+ const mostVotedBot = monthlyVotes.find(({ data }) => {
+ const latestData = data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))[0];
+
+ return latestData.is_most_voted === true;
+ });
+
return response.json({
maxReached,
total,
@@ -83,7 +92,8 @@ module.exports = {
return {
...publiclySafeBot,
reviews: reviews.filter(review => review.bot.id === bot.id).length,
- latest_voted_at: bot.last_voter?.date || null
+ latest_voted_at: bot.last_voter?.date || null,
+ is_most_voted: mostVotedBot?.identifier === bot.id
};
}))
});
diff --git a/server/src/routes/servers/search.js b/server/src/routes/servers/search.js
index 4e4e54ef..ea09ff68 100644
--- a/server/src/routes/servers/search.js
+++ b/server/src/routes/servers/search.js
@@ -5,6 +5,7 @@ const User = require('@/schemas/User');
const ServerVoteTripleEnabled = require('@/schemas/Server/Vote/TripleEnabled');
const { StandedOutServer } = require('@/schemas/StandedOut');
const validateRequest = require('@/utils/middlewares/validateRequest');
+const { ServerMonthlyVotes } = require('@/schemas/MonthlyVotes');
module.exports = {
get: [
@@ -83,6 +84,13 @@ module.exports = {
}).select('id');
const voteTripleEnabledServerIds = await ServerVoteTripleEnabled.find({ id: { $in: sortedServers.map(server => server.id) } });
+ const monthlyVotes = await ServerMonthlyVotes.find({ identifier: { $in: sortedServers.map(server => server.id) } });
+
+ const mostVotedServer = monthlyVotes.find(({ data }) => {
+ const latestData = data.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))[0];
+
+ return latestData.is_most_voted === true;
+ });
return response.json({
maxReached,
@@ -120,6 +128,7 @@ module.exports = {
standed_out: standedOutServerIds.find(({ identifier }) => identifier === guild.id) ? {
created_at: standedOutServerIds.find(({ identifier }) => identifier === guild.id).createdAt
} : null,
+ is_most_voted: mostVotedServer?.identifier === guild.id,
owner: {
id: guild.ownerId
}