Upload main.py
Browse files
main.py
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import telebot
|
| 2 |
+
from telebot import types
|
| 3 |
+
import time
|
| 4 |
+
|
| 5 |
+
# --- НАСТРОЙКИ ---
|
| 6 |
+
TOKEN = '8317707454:AAHRAInErEdeLVO5d_NDWkYZtCMxU1wXBdw'
|
| 7 |
+
ADMIN_ID = 0
|
| 8 |
+
BOT_START_TIME = int(time.time())
|
| 9 |
+
|
| 10 |
+
bot = telebot.TeleBot(TOKEN)
|
| 11 |
+
user_data = {}
|
| 12 |
+
|
| 13 |
+
def get_stats():
|
| 14 |
+
now = int(time.time())
|
| 15 |
+
diff = now - BOT_START_TIME
|
| 16 |
+
# Стартовые значения: 5243 подарка и 8125 звезд
|
| 17 |
+
gifts = (diff if diff > 0 else 0) + 5243
|
| 18 |
+
hours_passed = diff // 3600
|
| 19 |
+
saved_money = (hours_passed * 5000) + 8125
|
| 20 |
+
return gifts, saved_money
|
| 21 |
+
|
| 22 |
+
def main_menu():
|
| 23 |
+
gifts, saved = get_stats()
|
| 24 |
+
kb = types.InlineKeyboardMarkup(row_width=1)
|
| 25 |
+
|
| 26 |
+
btn_nfts = types.InlineKeyboardButton("🎁 Подарки", callback_data="nft_list")
|
| 27 |
+
btn_task = types.InlineKeyboardButton("📱 Написать комментарий в TikTok - + 100⭐", callback_data="tiktok_task")
|
| 28 |
+
btn_profile = types.InlineKeyboardButton("👤 Профиль", callback_data="profile")
|
| 29 |
+
|
| 30 |
+
kb.add(btn_nfts, btn_task, btn_profile)
|
| 31 |
+
|
| 32 |
+
# Текст с жирными значениями, которые меняются
|
| 33 |
+
text = (
|
| 34 |
+
"📍 Главное меню\n\n"
|
| 35 |
+
f"🎁 Подарено подарков: **{gifts}**⠀\n"
|
| 36 |
+
f"💸 Сэкономили для вас: **{saved}** ⭐\n\n"
|
| 37 |
+
"Выбери категорию 👇"
|
| 38 |
+
)
|
| 39 |
+
return text, kb
|
| 40 |
+
|
| 41 |
+
def nft_menu():
|
| 42 |
+
kb = types.InlineKeyboardMarkup(row_width=1)
|
| 43 |
+
items = [
|
| 44 |
+
"🎭 Маска", "💼 Рюкзак", "📅 Календарь", "🍭 Лолипоп", "🦩 Фламинго",
|
| 45 |
+
"🥥 Кокос", "🥚 Яйцо", "🍦 Мороженое", "💩 Какашка", "🧁 Кекс",
|
| 46 |
+
"☘️ Клевер", "🗑 Банка", "🐍 Змея", "🍸 Коктейль", "🕯 Свеча",
|
| 47 |
+
"🐒 Обезьяна", "🍄 Гриб", "🌸 Цветок", "🎃 Тыква", "👁 Глаз",
|
| 48 |
+
"🧹 Метла", "🍜 Рамен", "🗽 Статуя Свободы", "🧦 Носок", "🐶 Редо",
|
| 49 |
+
"👜 Сумка", "⌚️ Часы", "🚬 Сигара", "⛑ Шлем", "🧢 Кепка",
|
| 50 |
+
"🍑 Персик", "🐸 Лягушка", "👳♂️ Папаха", "🗿 Статуя Дурова", "💪 Бицепс",
|
| 51 |
+
"🕴 Оскар", "🧴 Духи", "📦 UFC Бокс"
|
| 52 |
+
]
|
| 53 |
+
for item in items:
|
| 54 |
+
kb.add(types.InlineKeyboardButton(f"{item} — 35 ⭐", callback_data=f"buy_{item}"))
|
| 55 |
+
kb.add(types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
|
| 56 |
+
return kb
|
| 57 |
+
|
| 58 |
+
@bot.message_handler(commands=['start'])
|
| 59 |
+
def start_cmd(message):
|
| 60 |
+
user_data[message.chat.id] = {'photos': 0, 'is_uploading': False}
|
| 61 |
+
text, kb = main_menu()
|
| 62 |
+
bot.send_message(message.chat.id, text, reply_markup=kb, parse_mode="Markdown")
|
| 63 |
+
|
| 64 |
+
@bot.callback_query_handler(func=lambda call: True)
|
| 65 |
+
def handle_calls(call):
|
| 66 |
+
chat_id = call.message.chat.id
|
| 67 |
+
if call.data == "to_main":
|
| 68 |
+
text, kb = main_menu()
|
| 69 |
+
bot.edit_message_text(text, chat_id, call.message.message_id, reply_markup=kb, parse_mode="Markdown")
|
| 70 |
+
|
| 71 |
+
elif call.data == "profile":
|
| 72 |
+
user_id = call.from_user.id
|
| 73 |
+
first_name = call.from_user.first_name
|
| 74 |
+
profile_text = (
|
| 75 |
+
"📊 Ваш профиль!\n\n"
|
| 76 |
+
f"┌ 💡 ID: `{user_id}`\n"
|
| 77 |
+
f"├ 👤 Имя: {first_name}\n"
|
| 78 |
+
f"├ 💰 Баланс дуровы: 50\n"
|
| 79 |
+
"└ ⭐ Потрачено звёзд: 0"
|
| 80 |
+
)
|
| 81 |
+
kb = types.InlineKeyboardMarkup()
|
| 82 |
+
kb.add(types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
|
| 83 |
+
bot.edit_message_text(profile_text, chat_id, call.message.message_id, reply_markup=kb, parse_mode="Markdown")
|
| 84 |
+
|
| 85 |
+
elif call.data == "nft_list":
|
| 86 |
+
bot.edit_message_text("✨ НФТ подарки:", chat_id, call.message.message_id, reply_markup=nft_menu())
|
| 87 |
+
|
| 88 |
+
elif call.data.startswith("buy_"):
|
| 89 |
+
item_full = call.data.replace("buy_", "")
|
| 90 |
+
pay_text = (
|
| 91 |
+
f"🎁 {item_full}\n\n"
|
| 92 |
+
"1️⃣ Нажмите кнопку ниже.\n"
|
| 93 |
+
"2️⃣ Оплатите платное сообщение.\n"
|
| 94 |
+
"3️⃣ После оплаты бот автоматически выдаст Вам подарок.\n\n"
|
| 95 |
+
"⚡️ Скриншоты не нужны — подтверждение срабатывает автоматически."
|
| 96 |
+
)
|
| 97 |
+
kb = types.InlineKeyboardMarkup(row_width=1)
|
| 98 |
+
kb.add(types.InlineKeyboardButton("💳 Оплатить", callback_data="pay_now"))
|
| 99 |
+
kb.add(types.InlineKeyboardButton("Назад 🔙", callback_data="nft_list"))
|
| 100 |
+
bot.edit_message_text(pay_text, chat_id, call.message.message_id, reply_markup=kb)
|
| 101 |
+
|
| 102 |
+
elif call.data == "tiktok_task":
|
| 103 |
+
task_text = (
|
| 104 |
+
"📱 Задание: Комментарии в TikTok\n\n"
|
| 105 |
+
"🎁 Награда: +100 ⭐\n\n"
|
| 106 |
+
"📝 Что нужн�� сделать:\n\n"
|
| 107 |
+
" 1️⃣ Откройте TikTok\n"
|
| 108 |
+
" 2️⃣ Найдите любое видео в ленте\n"
|
| 109 |
+
" 3️⃣ Напишите ровно 10 комментариев под разными видео с этим текстом:\n\n"
|
| 110 |
+
"`зашёл в durov_play_bot и сразу получил подарок` \n"
|
| 111 |
+
" (можно нажать, и скопировать)\n\n"
|
| 112 |
+
" 4️⃣ Поставьте ❤️ лайк под каждым комментарием\n"
|
| 113 |
+
" 5️⃣ Сделайте 10 скриншотов (комментарий + лайк)\n"
|
| 114 |
+
" 6️⃣ Отправьте все 10 фото сюда подряд\n\n"
|
| 115 |
+
"⏳ После проверки звёзды придут в течение 24 часов"
|
| 116 |
+
)
|
| 117 |
+
kb = types.InlineKeyboardMarkup(row_width=1)
|
| 118 |
+
kb.add(types.InlineKeyboardButton("✅ Я Выполнил - отправить скриншот", callback_data="send_screens"))
|
| 119 |
+
kb.add(types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
|
| 120 |
+
bot.edit_message_text(task_text, chat_id, call.message.message_id, reply_markup=kb, parse_mode="Markdown")
|
| 121 |
+
|
| 122 |
+
elif call.data == "send_screens":
|
| 123 |
+
user_data[chat_id] = {'photos': 0, 'is_uploading': True}
|
| 124 |
+
kb = types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("Отменить ❌", callback_data="tiktok_task"))
|
| 125 |
+
bot.edit_message_text("📸 Отправляйте 10 скриншотов по одному\n\nКак только будет ровно 10 — они автоматически отправятся на модерацию", chat_id, call.message.message_id, reply_markup=kb)
|
| 126 |
+
|
| 127 |
+
@bot.message_handler(content_types=['photo'])
|
| 128 |
+
def handle_photo_task(message):
|
| 129 |
+
chat_id = message.chat.id
|
| 130 |
+
if chat_id in user_data and user_data[chat_id].get('is_uploading'):
|
| 131 |
+
user_data[chat_id]['photos'] += 1
|
| 132 |
+
count = user_data[chat_id]['photos']
|
| 133 |
+
if ADMIN_ID != 0:
|
| 134 |
+
bot.forward_message(ADMIN_ID, chat_id, message.message_id)
|
| 135 |
+
if count < 10:
|
| 136 |
+
bot.send_message(chat_id, f"вы отправили {count} скрин из 9 для получения 100 ⭐ звезд")
|
| 137 |
+
elif count == 10:
|
| 138 |
+
kb = types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("Хорошо", callback_data="to_main"))
|
| 139 |
+
bot.send_message(chat_id, "Ожидайте модерации после проверок фоток вы получите звезды ⭐", reply_markup=kb)
|
| 140 |
+
user_data[chat_id]['is_uploading'] = False
|
| 141 |
+
|
| 142 |
+
@bot.message_handler(func=lambda m: True)
|
| 143 |
+
def handle_any_text(message):
|
| 144 |
+
chat_id = message.chat.id
|
| 145 |
+
if chat_id in user_data and user_data[chat_id].get('is_uploading'):
|
| 146 |
+
bot.send_message(chat_id, "Отправляй только фото скриншотов (по одному).")
|
| 147 |
+
|
| 148 |
+
if __name__ == "__main__":
|
| 149 |
+
bot.infinity_polling()
|