mirror of
https://github.com/MuRuLOSE/limoka.git
synced 2026-06-16 14:34:17 +02:00
Added and updated repositories 2026-03-11 01:21:45
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# -- version --
|
||||
__version__ = (1, 2, 2)
|
||||
__version__ = (1, 2, 3)
|
||||
# -- version --
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ class SenderGifts(loader.Module):
|
||||
"user_not_found": "<emoji document_id=4958526153955476488>❌</emoji> Пользователь не найден",
|
||||
"gift_menu": "<tg-emoji emoji-id=5370781982886220096>🎁</tg-emoji> Выберите категорию подарков.\n\n<tg-emoji emoji-id=6048471184461271609>👤</tg-emoji> Пользователь: {}\n<tg-emoji emoji-id=6048762138430803961>📂</tg-emoji> Текст: {}\n<tg-emoji emoji-id=5321485469249198987>⭐️</tg-emoji> Баланс: {} звезд",
|
||||
"category_menu": "<tg-emoji emoji-id=5370781982886220096>🎁</tg-emoji> Подарки за {} ⭐\n\n<tg-emoji emoji-id=6048471184461271609>👤</tg-emoji> Пользователь: {}\n<tg-emoji emoji-id=6048762138430803961>📂</tg-emoji> Текст: {}",
|
||||
"unique_category_menu": "<tg-emoji emoji-id=5370781982886220096>🎁</tg-emoji> {}\n\n<tg-emoji emoji-id=6048471184461271609>👤</tg-emoji> Пользователь: {}\n<tg-emoji emoji-id=6048762138430803961>📂</tg-emoji> Текст: {}",
|
||||
"privacy_menu": "<tg-emoji emoji-id=5370781982886220096>🎁</tg-emoji> Выбран подарок: {}\n\nКак отправить подарок?",
|
||||
"sending_gift": "<emoji document_id=5201691993775818138>🛫</emoji> Отправка подарка...",
|
||||
"gift_sent": "<emoji document_id=5021905410089550576>✅</emoji> Подарок успешно отправлен!",
|
||||
@@ -45,8 +46,8 @@ class SenderGifts(loader.Module):
|
||||
"btn_public": "📢 Публично",
|
||||
"btn_anon": "🕵️ Анонимно",
|
||||
}
|
||||
|
||||
gift_categories = {
|
||||
|
||||
regular_gifts = {
|
||||
15: [
|
||||
{"id": 5170145012310081615, "emoji": "❤️", "name": "Сердце"},
|
||||
{"id": 5170233102089322756, "emoji": "🧸", "name": "Мишка"},
|
||||
@@ -59,8 +60,6 @@ class SenderGifts(loader.Module):
|
||||
{"id": 5170144170496491616, "emoji": "🎂", "name": "Тортик"},
|
||||
{"id": 5170314324215857265, "emoji": "💐", "name": "Цветы"},
|
||||
{"id": 5170564780938756245, "emoji": "🚀", "name": "Ракета"},
|
||||
{"id": 5922558454332916696, "emoji": "🎄", "name": "Ёлка"},
|
||||
{"id": 5956217000635139069, "emoji": "🧸", "name": "Новогодний мишка"}
|
||||
],
|
||||
100: [
|
||||
{"id": 5168043875654172773, "emoji": "🏆", "name": "Кубок"},
|
||||
@@ -69,8 +68,28 @@ class SenderGifts(loader.Module):
|
||||
]
|
||||
}
|
||||
|
||||
async def client_ready(self, client, db):
|
||||
self.client = client
|
||||
unique_gifts = {
|
||||
"new_year": {
|
||||
"name": "🎄 Новогодние подарки",
|
||||
"gifts": [
|
||||
{"id": 5922558454332916696, "emoji": "🎄", "name": "Ёлка", "price": 50},
|
||||
{"id": 5956217000635139069, "emoji": "🧸", "name": "Новогодний мишка", "price": 50},
|
||||
]
|
||||
},
|
||||
"valentines": {
|
||||
"name": "💘 День святого валентина",
|
||||
"gifts": [
|
||||
{"id": 5800655655995968830, "emoji": "🧸", "name": "14 Февраля мишка", "price": 50},
|
||||
{"id": 5801108895304779062, "emoji": "💘", "name": "14 Февраля сердце", "price": 50},
|
||||
]
|
||||
},
|
||||
"march_8th": {
|
||||
"name": "🌷 8 Марта",
|
||||
"gifts": [
|
||||
{"id": 5866352046986232958, "emoji": "🧸", "name": "8 Марта мишка", "price": 50},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
async def get_star_balance(self):
|
||||
try:
|
||||
@@ -100,6 +119,10 @@ class SenderGifts(loader.Module):
|
||||
text = parts[1] if len(parts) > 1 else ""
|
||||
if username.startswith('@'):
|
||||
username = username[1:]
|
||||
try:
|
||||
username = int(username)
|
||||
except ValueError:
|
||||
pass
|
||||
msg = await utils.answer(message, self.strings["checking_user"])
|
||||
try:
|
||||
user = await self.client.get_entity(username)
|
||||
@@ -116,115 +139,54 @@ class SenderGifts(loader.Module):
|
||||
await utils.answer(balance_msg, self.strings["balance_error"])
|
||||
return
|
||||
|
||||
min_price = min(self.gift_categories.keys())
|
||||
min_price = min(self.regular_gifts.keys())
|
||||
if balance < min_price:
|
||||
await utils.answer(balance_msg, self.strings["min_stars_error"])
|
||||
return
|
||||
|
||||
available_categories = [price for price in self.gift_categories.keys() if balance >= price]
|
||||
if not available_categories:
|
||||
await utils.answer(balance_msg, self.strings["no_available_gifts"])
|
||||
return
|
||||
buttons = []
|
||||
row = []
|
||||
for price in sorted(available_categories):
|
||||
row.append({
|
||||
"text": f"{price} ⭐",
|
||||
"callback": self._show_category,
|
||||
"args": (user.id, price, text, balance, message.id),
|
||||
})
|
||||
if len(row) == 2:
|
||||
buttons.append(row)
|
||||
row = []
|
||||
|
||||
if row:
|
||||
buttons.append(row)
|
||||
|
||||
helper_msg = await self.inline.form("🪐", balance_msg)
|
||||
|
||||
await utils.answer(
|
||||
helper_msg,
|
||||
self.strings["gift_menu"].format(
|
||||
f"@{user.username}" if user.username else user.first_name,
|
||||
text if text else "-",
|
||||
balance
|
||||
),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _show_category(self, call, user_id, price, text, balance, msg_id):
|
||||
gifts = self.gift_categories[price]
|
||||
buttons = []
|
||||
row = []
|
||||
for gift in gifts:
|
||||
row.append({
|
||||
"text": gift["emoji"],
|
||||
"callback": self._select_privacy,
|
||||
"args": (user_id, gift["id"], text, gift["emoji"], msg_id, balance, price),
|
||||
})
|
||||
if len(row) == 3:
|
||||
buttons.append(row)
|
||||
row = []
|
||||
|
||||
if row:
|
||||
buttons.append(row)
|
||||
buttons.append([{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._back_to_categories,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
await self._show_main_menu_logic(helper_msg, user.id, text, balance, message.id, answer=True)
|
||||
|
||||
async def _show_main_menu_logic(self, msg_or_call, user_id, text, balance, msg_id, answer=False):
|
||||
try:
|
||||
user = await self.client.get_entity(user_id)
|
||||
user_display = f"@{user.username}" if user.username else user.first_name
|
||||
except:
|
||||
user_display = f"ID: {user_id}"
|
||||
|
||||
await call.edit(
|
||||
self.strings["category_menu"].format(
|
||||
price,
|
||||
user_display,
|
||||
text if text else "-"
|
||||
),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _select_privacy(self, call, user_id, gift_id, text, gift_emoji, msg_id, balance, price):
|
||||
buttons = [
|
||||
[
|
||||
{
|
||||
"text": self.strings["btn_public"],
|
||||
"callback": self._send_gift,
|
||||
"args": (user_id, gift_id, text, gift_emoji, msg_id, balance, False) # hide_name=False публично
|
||||
},
|
||||
{
|
||||
"text": self.strings["btn_anon"],
|
||||
"callback": self._send_gift,
|
||||
"args": (user_id, gift_id, text, gift_emoji, msg_id, balance, True) # hide_name=True анонимно
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._show_category,
|
||||
"args": (user_id, price, text, balance, msg_id)
|
||||
}
|
||||
]
|
||||
[{
|
||||
"text": "🎁 Обычные подарки",
|
||||
"callback": self._show_regular_categories,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}],
|
||||
[{
|
||||
"text": "✨ Уникальные подарки",
|
||||
"callback": self._show_unique_categories,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}]
|
||||
]
|
||||
|
||||
await call.edit(
|
||||
self.strings["privacy_menu"].format(gift_emoji),
|
||||
reply_markup=buttons
|
||||
)
|
||||
text_menu = self.strings["gift_menu"].format(user_display, text if text else "-", balance)
|
||||
|
||||
if answer:
|
||||
await utils.answer(msg_or_call, text_menu, reply_markup=buttons)
|
||||
else:
|
||||
await msg_or_call.edit(text_menu, reply_markup=buttons)
|
||||
|
||||
async def _back_to_categories(self, call, user_id, text, balance, msg_id):
|
||||
async def _show_main_menu(self, call, user_id, text, balance, msg_id):
|
||||
await self._show_main_menu_logic(call, user_id, text, balance, msg_id)
|
||||
|
||||
async def _show_regular_categories(self, call, user_id, text, balance, msg_id):
|
||||
try:
|
||||
user = await self.client.get_entity(user_id)
|
||||
user_display = f"@{user.username}" if user.username else user.first_name
|
||||
except:
|
||||
await call.answer("Ошибка получения пользователя", show_alert=True)
|
||||
return
|
||||
|
||||
available_categories = [price for price in self.gift_categories.keys() if balance >= price]
|
||||
user_display = f"ID: {user_id}"
|
||||
|
||||
available_categories = [price for price in self.regular_gifts.keys() if balance >= price]
|
||||
|
||||
buttons = []
|
||||
row = []
|
||||
@@ -237,16 +199,151 @@ class SenderGifts(loader.Module):
|
||||
if len(row) == 2:
|
||||
buttons.append(row)
|
||||
row = []
|
||||
if row:
|
||||
buttons.append(row)
|
||||
|
||||
buttons.append([{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._show_main_menu,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
await call.edit(
|
||||
self.strings["gift_menu"].format(user_display, text if text else "-", balance),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _show_unique_categories(self, call, user_id, text, balance, msg_id):
|
||||
try:
|
||||
user = await self.client.get_entity(user_id)
|
||||
user_display = f"@{user.username}" if user.username else user.first_name
|
||||
except:
|
||||
user_display = f"ID: {user_id}"
|
||||
|
||||
buttons = []
|
||||
for cat_id, cat_data in self.unique_gifts.items():
|
||||
if any(balance >= gift["price"] for gift in cat_data["gifts"]):
|
||||
buttons.append([{
|
||||
"text": cat_data["name"],
|
||||
"callback": self._show_unique_category_gifts,
|
||||
"args": (user_id, cat_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
if not buttons:
|
||||
buttons.append([{
|
||||
"text": "❌ Нет доступных (баланс)",
|
||||
"callback": self._show_main_menu,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
buttons.append([{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._show_main_menu,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
await call.edit(
|
||||
self.strings["gift_menu"].format(user_display, text if text else "-", balance),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _show_category(self, call, user_id, price, text, balance, msg_id):
|
||||
gifts = self.regular_gifts[price]
|
||||
buttons = []
|
||||
row = []
|
||||
for gift in gifts:
|
||||
row.append({
|
||||
"text": gift["emoji"],
|
||||
"callback": self._select_privacy,
|
||||
"args": (user_id, gift["id"], text, gift["emoji"], msg_id, balance, "regular", price),
|
||||
})
|
||||
if len(row) == 3:
|
||||
buttons.append(row)
|
||||
row = []
|
||||
|
||||
if row:
|
||||
buttons.append(row)
|
||||
buttons.append([{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._show_regular_categories,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
try:
|
||||
user = await self.client.get_entity(user_id)
|
||||
user_display = f"@{user.username}" if user.username else user.first_name
|
||||
except:
|
||||
user_display = f"ID: {user_id}"
|
||||
|
||||
await call.edit(
|
||||
self.strings["gift_menu"].format(
|
||||
f"@{user.username}" if user.username else user.first_name,
|
||||
text if text else "-",
|
||||
balance
|
||||
),
|
||||
self.strings["category_menu"].format(price, user_display, text if text else "-"),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _show_unique_category_gifts(self, call, user_id, cat_id, text, balance, msg_id):
|
||||
category = self.unique_gifts[cat_id]
|
||||
buttons = []
|
||||
row = []
|
||||
for gift in category["gifts"]:
|
||||
if balance >= gift["price"]:
|
||||
row.append({
|
||||
"text": gift["emoji"],
|
||||
"callback": self._select_privacy,
|
||||
"args": (user_id, gift["id"], text, gift["emoji"], msg_id, balance, "unique", cat_id),
|
||||
})
|
||||
if len(row) == 3:
|
||||
buttons.append(row)
|
||||
row = []
|
||||
|
||||
if row:
|
||||
buttons.append(row)
|
||||
buttons.append([{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": self._show_unique_categories,
|
||||
"args": (user_id, text, balance, msg_id),
|
||||
}])
|
||||
|
||||
try:
|
||||
user = await self.client.get_entity(user_id)
|
||||
user_display = f"@{user.username}" if user.username else user.first_name
|
||||
except:
|
||||
user_display = f"ID: {user_id}"
|
||||
|
||||
await call.edit(
|
||||
self.strings["unique_category_menu"].format(category["name"], user_display, text if text else "-"),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
async def _select_privacy(self, call, user_id, gift_id, text, gift_emoji, msg_id, balance, gift_type, type_arg):
|
||||
if gift_type == "regular":
|
||||
back_callback = self._show_category
|
||||
else:
|
||||
back_callback = self._show_unique_category_gifts
|
||||
|
||||
buttons = [
|
||||
[
|
||||
{
|
||||
"text": self.strings["btn_public"],
|
||||
"callback": self._send_gift,
|
||||
"args": (user_id, gift_id, text, gift_emoji, msg_id, balance, False)
|
||||
},
|
||||
{
|
||||
"text": self.strings["btn_anon"],
|
||||
"callback": self._send_gift,
|
||||
"args": (user_id, gift_id, text, gift_emoji, msg_id, balance, True)
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"text": "⬅️ Назад",
|
||||
"callback": back_callback,
|
||||
"args": (user_id, type_arg, text, balance, msg_id)
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
await call.edit(
|
||||
self.strings["privacy_menu"].format(gift_emoji),
|
||||
reply_markup=buttons
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user