diff --git a/src/tgbot/senders/achievements.py b/src/tgbot/senders/achievements.py
index e6c61d56..0a044b59 100644
--- a/src/tgbot/senders/achievements.py
+++ b/src/tgbot/senders/achievements.py
@@ -5,25 +5,28 @@
from src import localizer
from src.tgbot.bot import bot
from src.tgbot.constants import UserType
+from src.tgbot.senders.meme_watched_achievements import (
+ send_meme_watched_achievement_if_needed,
+)
from src.tgbot.user_info import get_user_info
+SECONDS_TO_SLEEP_AFTER_NOTIFICATION = 3
+
async def send_achievement_if_needed(user_id: int) -> None:
user_info = await get_user_info(user_id)
if user_info["type"] == UserType.USER and user_info["nmemes_sent"] == 1000:
- await bot.send_message(
- chat_id=user_id,
- text="Do you wanna be a Moderator? 👀",
- parse_mode=ParseMode.HTML,
+ wants_to_be_mod_text = localizer.t(
+ "ask_if_user_wants_to_be_moderator", user_info["interface_lang"]
)
- await asyncio.sleep(3)
- return
-
- if user_info["nmemes_sent"] == 100:
await bot.send_message(
chat_id=user_id,
- text=localizer.t("achievement_100_meme_sent", user_info["interface_lang"]),
+ text=wants_to_be_mod_text,
parse_mode=ParseMode.HTML,
)
- await asyncio.sleep(3)
+ await asyncio.sleep(SECONDS_TO_SLEEP_AFTER_NOTIFICATION)
return
+
+ is_sent = await send_meme_watched_achievement_if_needed(user_id, user_info)
+ if is_sent:
+ await asyncio.sleep(SECONDS_TO_SLEEP_AFTER_NOTIFICATION)
diff --git a/src/tgbot/senders/meme_watched_achievements.py b/src/tgbot/senders/meme_watched_achievements.py
new file mode 100644
index 00000000..63271113
--- /dev/null
+++ b/src/tgbot/senders/meme_watched_achievements.py
@@ -0,0 +1,26 @@
+from telegram.constants import ParseMode
+
+from src import localizer
+from src.tgbot.bot import bot
+
+
+async def send_meme_watched_achievement_if_needed(
+ user_id: int, user_info: dict
+) -> bool:
+ """Send achievement about watching a certain amount of memes if needed
+
+ returns: True if achievement was sent, False otherwise
+ """
+ memes_sent_count = user_info["nmemes_sent"]
+ meme_count_alerts = (100, 500, 1000, 5000, 10000, 50000, 100000)
+
+ if memes_sent_count not in meme_count_alerts:
+ return False
+
+ text_localizer_name = f"achievement_{memes_sent_count}_meme_sent"
+ await bot.send_message(
+ chat_id=user_id,
+ text=localizer.t(text_localizer_name, user_info["interface_lang"]),
+ parse_mode=ParseMode.HTML,
+ )
+ return True
diff --git a/static/localization/achievements.yml b/static/localization/achievements.yml
index 003e0447..0d70a9cf 100644
--- a/static/localization/achievements.yml
+++ b/static/localization/achievements.yml
@@ -8,4 +8,76 @@ achievement_100_meme_sent:
de: |-
🚀 Du hast gerade 100 Memes gesehen! Schau dir MEHR an 🍔
uk: |-
- 🚀 Ви щойно переглянули 100 мемів! Дивіться БІЛЬШЕ 🍔
\ No newline at end of file
+ 🚀 Ви щойно переглянули 100 мемів! Дивіться БІЛЬШЕ 🍔
+
+achievement_500_meme_sent:
+ en: |-
+ 🚀 You've just devoured 500 memes, emerging as the Meme Gladiator! The arena echoes with your laughter. Ready for the next meme battle? 🍔
+ ru: |-
+ 🚀 Ты только что поглотил 500 мемов, став Гладиатором Мемов! Арена отзывается твоим смехом. Готов к новым битвам в мемной арене? 🍔
+ es: |-
+ 🚀 ¡Acabas de devorar 500 memes y te has coronado como el Gladiador de Memes! El eco de tu risa resuena en la arena. ¿Listo para la próxima batalla de memes? 🍔
+ de: |-
+ 🚀 Du hast gerade 500 Memes verschlungen und bist nun der Meme-Gladiator! 🍔
+ uk: |-
+ 🚀 Ти тільки що поглинув 500 мемів і став Мем Гладіатором! Арена відгукується твоїм сміхом. Готовий до наступної битви мемів? 🍔
+
+achievement_1000_meme_sent:
+ en: |-
+ 🚀 Yo, champ, you just surfed through a wave of a thousand memes and didn’t sink! 🌊🏄 You’re like... a meme magnate, yeah? Scrolling like a boss, with each meme a checkpoint on your path to legendary status. Dude, you turned procrastination into an art form! 🎨👑 Keep it up, and remember: each like and share you drop is like energy for the meme universe. Let’s go for more victories, just remember to occasionally emerge from under the blanket, lest you get sucked in. Ha, onward, meme master, conquer those internets further! 🍔💥
+ ru: |-
+ 🚀 Эй, чемпион, ты только что прокатился на волне из тысячи мемов и не утонул! 🌊🏄 Ты типа... мемный магнат, да? Листаешь как босс, и каждый мем – это чек-поинт на твоём пути к легендарности. Братан, ты превратил таймкиллинг в искусство! 🎨👑 Так держать, и помни: каждый твой лайк и репост – это как энергия для мемной вселенной. Пошли за новыми победами, только не забудь иногда вылезать из-под одеяла, а то засосёт. Ха, давай, мемный мастер, захватывай интернеты дальше! 🍔💥
+ es: |-
+ 🚀 ¡Epa, campeón, acabas de surfear una ola de mil memes sin hundirte! 🌊🏄 Eres como... un magnate de los memes, ¿verdad? Desplazándote como un jefe, con cada meme un punto de control en tu camino hacia el estatus de leyenda. Tío, has convertido la procrastinación en una forma de arte! 🎨👑 Sigue así, y recuerda: cada like y compartida que das es como energía para el universo meme. Vamos a por más victorias, solo recuerda salir ocasionalmente de debajo de la manta, para que no te absorba. Ja, adelante, maestro de los memes, ¡conquista más internets! 🍔💥
+ de: |-
+ 🚀 Hey, Champion, du hast gerade eine Welle von tausend Memes gemeistert und bist nicht untergegangen! 🌊🏄 Du bist quasi... ein Meme-Magnat, richtig? Scrollst wie ein Boss, und jedes Meme ist ein Checkpoint auf deinem Weg zur Legende. Alter, du hast das Aufschieben in eine Kunstform verwandelt! 🎨👑 Weiter so, und denk dran: Jedes Like und jeder Share von dir ist wie Energie für das Meme-Universum. Auf zu neuen Siegen, vergiss nur nicht, ab und zu unter der Decke hervorzukommen, sonst wirst du eingesogen. Ha, auf geht’s, Meme-Meister, erobere weiter die Weiten des Internets! 🍔💥
+ uk: |-
+ 🚀 Ой, чемпіоне, ти щойно проїхався на хвилі з тисячі мемів і не втопився! 🌊🏄 Ти як... мемний магнат, чи не так? Пролиставши як бос, і кожен мем – це чек-поінт на твоєму шляху до легендарності. Брате, ти перетворив таймкіллинг на мистецтво! 🎨👑 Так тримати, і пам'ятай: кожен твій лайк і репост – це як енергія для мемного всесвіту. Починай нові перемоги, лише не забувай час від часу вилізати з-під ковдри, інакше засмокче. Ха, давай, мемний майстер, захоплюй інтернети далі! 🍔💥
+
+achievement_5000_meme_sent:
+ en: |-
+ "FIVE GRAND MEMES!!! What even? YOU'RE A MACHINE."
+ ru: |-
+ "ПЯТЬ КОСАРЕЙ МЕМОВ!!! Это как вообще? ТЫ МАШИНА."
+ es: |-
+ "¡CINCO MIL MEMES!!! ¿Qué demonios? ERES UNA MÁQUINA."
+ de: |-
+ "FÜNF TAUSEND MEMES!!! Was zum Teufel? DU BIST EINE MASCHINE."
+ uk: |-
+ "П'ЯТЬ ТИСЯЧ МЕМІВ!!! Це як взагалі? ТИ МАШИНА."
+
+achievement_10000_meme_sent:
+ en: |-
+ "Dude. You're a MEME-CONSUMING MACHINE. Thanks a ton for using us. You've already viewed 10,000 memes. I'M PROUD OF YOU."
+ ru: |-
+ "Чувак. Ты МАШИНА по просмотру мемов. Спасибо тебе огромное, что пользуешься нами. Ты уже посмотрел(а) 10 000 мемов. Я ГОРЖУСЬ ТОБОЙ."
+ es: |-
+ "Amigo. Eres una MÁQUINA DEVORAMEMES. Gracias mil por utilizar nuestro servicio. Ya has visto 10,000 memes. ESTOY ORGULLOSO DE TI."
+ de: |-
+ "Alter. Du bist eine MEME-VERSCHLINGENDE MASCHINE. Vielen Dank für die Nutzung unserer Dienste. Du hast bereits 10.000 Memes angesehen. ICH BIN STOLZ AUF DICH."
+ uk: |-
+ "Чувак. Ти МАШИНА з перегляду мемів. Дякую тобі величезне, що використовуєш нас. Ти вже переглянув(ла) 10 000 мемів. Я ГОРДЖУСЬ ТОБОЮ."
+
+achievement_50000_meme_sent:
+ en: |-
+ "Fifty. Thousand. Memes. That's something unimaginable... Thanks for using our bot! You're in the top 0.01% of our users in terms of activity!"
+ ru: |-
+ "Пятьдесят. Тысяч. Мемов. Это что-то невообразимое... Спасибо что пользуешься нашим ботом!) Ты в топ 0.01% наших пользователей по активности!"
+ es: |-
+ "Cincuenta. Mil. Memes. Eso es algo inimaginable... ¡Gracias por usar nuestro bot! ¡Estás en el top 0.01% de nuestros usuarios en términos de actividad!"
+ de: |-
+ "Fünfzig. Tausend. Memes. Das ist etwas Unvorstellbares... Danke, dass du unseren Bot nutzt! Du gehörst zu den Top 0,01% unserer Benutzer in Bezug auf Aktivität!"
+ uk: |-
+ "П'ятдесят. Тисяч. Мемів. Це щось неймовірне... Дякую, що використовуєш нашого бота! Ти в топ 0.01% наших користувачів за активністю!"
+
+achievement_100000_meme_sent:
+ en: |-
+ "You've viewed 10% of a million memes. If you were a machine at 10k, now you're just a rocket 🚀🚀🚀"
+ ru: |-
+ "Ты посмотрел(а) 10% от миллиона мемов. Если на 10к ты был машиной, то сейчас ты просто ракета 🚀🚀🚀"
+ es: |-
+ "Has visto el 10% de un millón de memes. Si eras una máquina a los 10k, ahora eres simplemente un cohete 🚀🚀🚀"
+ de: |-
+ "Du hast 10% von einer Million Memes angesehen. Wenn du bei 10k eine Maschine warst, bist du jetzt einfach eine Rakete 🚀🚀🚀"
+ uk: |-
+ "Ти переглянув(ла) 10% від мільйона мемів. Якщо на 10к ти був(ла) машиною, то зараз ти просто ракета 🚀🚀🚀"
diff --git a/static/localization/moderator.yml b/static/localization/moderator.yml
new file mode 100644
index 00000000..d85f518b
--- /dev/null
+++ b/static/localization/moderator.yml
@@ -0,0 +1,11 @@
+ask_if_user_wants_to_be_moderator:
+ en: |-
+ Do you wanna be a Moderator? 👀
+ ru: |-
+ Хочешь быть Модератором? 👀
+ es: |-
+ ¿Quieres ser Moderador? 👀
+ de: |-
+ Willst du Moderator sein? 👀
+ uk: |-
+ Хочеш бути Модератором? 👀
\ No newline at end of file