zjsjdjsj commited on
Commit
1dc9951
·
verified ·
1 Parent(s): d2666c6

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +100 -0
app.py ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import telebot
2
+ from telebot import types
3
+ import time
4
+ import threading
5
+ import gradio as gr
6
+
7
+ # --- НАСТРОЙКИ ---
8
+ TOKEN = '8317707454:AAHRAInErEdeLVO5d_NDWkYZtCMxU1wXBdw'
9
+ ADMIN_ID = 0
10
+ BOT_START_TIME = int(time.time())
11
+
12
+ # Создаем бота напрямую БЕЗ apihelper.proxy (если DNS на HF заработает)
13
+ bot = telebot.TeleBot(TOKEN)
14
+ user_data = {}
15
+
16
+ def get_stats():
17
+ now = int(time.time())
18
+ diff = now - BOT_START_TIME
19
+ gifts = (diff if diff > 0 else 0) + 5243
20
+ hours_passed = diff // 3600
21
+ saved_money = (hours_passed * 5000) + 8125
22
+ return gifts, saved_money
23
+
24
+ def main_menu():
25
+ gifts, saved = get_stats()
26
+ kb = types.InlineKeyboardMarkup(row_width=1)
27
+ kb.add(
28
+ types.InlineKeyboardButton("🎁 Подарки", callback_data="nft_list"),
29
+ types.InlineKeyboardButton("📱 Написать комментарий в TikTok - + 100⭐", callback_data="tiktok_task"),
30
+ types.InlineKeyboardButton("👤 Профиль", callback_data="profile")
31
+ )
32
+ text = (f"📍 Главное меню\n\n"
33
+ f"🎁 Подарено подарков: **{gifts}**⠀\n"
34
+ f"💸 Сэкономили для вас: **{saved}** ⭐\n\n"
35
+ "Выбери категорию 👇")
36
+ return text, kb
37
+
38
+ def nft_menu():
39
+ kb = types.InlineKeyboardMarkup(row_width=1)
40
+ items = ["🎭 Маска", "💼 Рюкзак", "📅 Календарь", "🍭 Лолипоп", "🦩 Фламинго",
41
+ "🥥 Кокос", "🥚 Яйцо", "🍦 Мороженое", "💩 Какашка", "🧁 Кекс"]
42
+ for item in items:
43
+ kb.add(types.InlineKeyboardButton(f"{item} — 35 ⭐", callback_data=f"buy_{item}"))
44
+ kb.add(types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
45
+ return kb
46
+
47
+ @bot.message_handler(commands=['start'])
48
+ def start_cmd(message):
49
+ user_data[message.chat.id] = {'photos': 0, 'is_uploading': False}
50
+ text, kb = main_menu()
51
+ bot.send_message(message.chat.id, text, reply_markup=kb, parse_mode="Markdown")
52
+
53
+ @bot.callback_query_handler(func=lambda call: True)
54
+ def handle_calls(call):
55
+ chat_id = call.message.chat.id
56
+ if call.data == "to_main":
57
+ text, kb = main_menu()
58
+ bot.edit_message_text(text, chat_id, call.message.message_id, reply_markup=kb, parse_mode="Markdown")
59
+ elif call.data == "nft_list":
60
+ bot.edit_message_text("✨ НФТ подарки:", chat_id, call.message.message_id, reply_markup=nft_menu())
61
+ elif call.data == "profile":
62
+ profile_text = (f"📊 Ваш профиль!\n\n💡 ID: `{call.from_user.id}`\n"
63
+ f"👤 Имя: {call.from_user.first_name}\n"
64
+ f"💰 Баланс: 50\n⭐ Потрачено: 0")
65
+ kb = types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
66
+ bot.edit_message_text(profile_text, chat_id, call.message.message_id, reply_markup=kb, parse_mode="Markdown")
67
+ elif call.data == "tiktok_task":
68
+ kb = types.InlineKeyboardMarkup().add(types.InlineKeyboardButton("✅ Отправить скриншот", callback_data="send_screens"),
69
+ types.InlineKeyboardButton("Назад 🔙", callback_data="to_main"))
70
+ bot.edit_message_text("📱 Задание: 10 комментов в TikTok за 100⭐", chat_id, call.message.message_id, reply_markup=kb)
71
+ elif call.data == "send_screens":
72
+ user_data[chat_id] = {'photos': 0, 'is_uploading': True}
73
+ bot.send_message(chat_id, "📸 Кидай 10 скринов подряд.")
74
+
75
+ @bot.message_handler(content_types=['photo'])
76
+ def handle_photo(message):
77
+ chat_id = message.chat.id
78
+ if chat_id in user_data and user_data[chat_id].get('is_uploading'):
79
+ user_data[chat_id]['photos'] += 1
80
+ if user_data[chat_id]['photos'] == 10:
81
+ bot.send_message(chat_id, "✅ Получено! Жди проверки.")
82
+ user_data[chat_id]['is_uploading'] = False
83
+ else:
84
+ bot.send_message(chat_id, f"Принято {user_data[chat_id]['photos']}/10")
85
+
86
+ # --- ЗАПУСК БОТА С ПЕРЕЗАПУСКОМ ПРИ ОШИБКЕ ---
87
+ def run_bot():
88
+ while True:
89
+ try:
90
+ bot.polling(none_stop=True, timeout=60)
91
+ except Exception as e:
92
+ print(f"Ошибка: {e}")
93
+ time.sleep(10)
94
+
95
+ threading.Thread(target=run_bot, daemon=True).start()
96
+
97
+ # --- ОБЯЗАТЕЛЬНО ДЛЯ HUGGING FACE GRADIO ---
98
+ with gr.Blocks() as demo:
99
+ gr.Markdown("# БОТ ВКЛЮЧЕН")
100
+ demo.launch(server_name="0.0.0.0", server_port=7860)