Files
limoka/coddrago/modules/promoclaimer.py
2025-07-10 21:02:34 +03:00

98 lines
4.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ---------------------------------------------------------------------------------
# ░█▀▄░▄▀▀▄░█▀▄░█▀▀▄░█▀▀▄░█▀▀▀░▄▀▀▄░░░█▀▄▀█
# ░█░░░█░░█░█░█░█▄▄▀░█▄▄█░█░▀▄░█░░█░░░█░▀░█
# ░▀▀▀░░▀▀░░▀▀░░▀░▀▀░▀░░▀░▀▀▀▀░░▀▀░░░░▀░░▒▀
# Name: PromoClaimer
# Description: Automatically claim https://t.me/StableWaifuBot promo from any chat
# Author: @codrago_m
# ---------------------------------------------------------------------------------
# 🔒 Licensed under the GNU AGPLv3
# 🌐 https://www.gnu.org/licenses/agpl-3.0.html
# ---------------------------------------------------------------------------------
# Author: @codrago
# Commands: checktokens
# scope: hikka_only
# meta developer: @codrago_m
# meta banner: https://raw.githubusercontent.com/coddrago/modules/refs/heads/main/banner.png
# meta pic: https://envs.sh/HoF.webp
# ---------------------------------------------------------------------------------
__version__ = (1, 0, 0)
import logging
from telethon.errors import AlreadyInConversationError
from telethon.tl.types import Message
import re
from .. import loader, utils
logger = logging.getLogger('PromoClaimer')
@loader.tds
class PromoClaimerMod(loader.Module):
"""Automatically claim https://t.me/StableWaifuBot promo from any chat"""
strings = {
"name": "PromoClaimer",
"claimed_promo": "[PromoClaimer] 👌 I successfully claimed promo {promo} for {amount} tokens!",
"error_watcher": "[PromoClaimer] ⛔️ An error occurred while watching for messages:\n{e}",
"invalid_promo": "[PromoClaimer] 😢 Promo code {promo} is invalid!",
"already_claimed": "[PromoClaimer] 😢 Promo code {promo} has already been claimed!",
}
strings_ru = {
"claimed_promo": "[PromoClaimer] 👌 Я успешно активировал промокод {promo} на {amount} токен(-ов)!",
"error_watcher": "[PromoClaimer] ⛔️ Во время отслеживания сообщений произошла ошибка:\n{e}",
"invalid_promo": "[PromoClaimer] 😢 Промокод {promo} недействителен, либо уже истек!",
"already_claimed": "[PromoClaimer] 😢 Промокод {promo} уже активирован!",
"_cls_doc": "Автоматически забирать промокоды для https://t.me/StableWaifuBot",
}
@loader.command(ru_doc='| Посмотреть баланс токенов')
async def checktokens(self, message: Message):
"""| check tokens balance"""
try:
async with self.client.conversation('@StableWaifuBot') as conv:
msg = await conv.send_message('/tokens')
response = await conv.get_response()
tokens = response.text.splitlines()[0]
await conv.mark_read()
await msg.delete()
await response.delete()
await utils.answer(message, tokens)
except AlreadyInConversationError:
pass
@loader.watcher()
async def watcher(self, message: Message):
try:
pattern = r'https://t\.me/StableWaifuBot\?start=promo_(\w+)'
matches = re.findall(pattern, message.text)
for match in matches:
async with self.client.conversation('StableWaifuBot') as conv:
promo = 'promo_' + match
msg = await conv.send_message(f'/start {promo}')
response = await conv.get_response()
await conv.mark_read()
await msg.delete()
await response.delete()
if response.text == '🥲 Промокод недействителен или уже истёк!':
logger.info(self.strings("invalid_promo").format(promo=promo))
elif response.text == '❌ Этот промокод уже активирован, проверь выше!':
logger.info(self.strings('already_claimed').format(promo=promo))
else:
amount = response.text.split('(+')[1]
logger.info(self.strings('claimed_promo').format(promo=promo, amount=amount))
except Exception as e:
logger.info(self.strings('error_watcher').format(e=str(e)))