-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
129 lines (106 loc) · 5.2 KB
/
bot.py
File metadata and controls
129 lines (106 loc) · 5.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import telebot
from telebot import types
import os
import time
# --- КОНФИГУРАЦИЯ ---
TOKEN = os.environ.get("BOT_TOKEN", "ВАШ_ТОКЕН_ЗДЕСЬ")
ADMIN_ID = int(os.environ.get("ADMIN_ID", "0"))
# Проверка токена
if TOKEN == "ВАШ_ТОКЕН_ЗДЕСЬ" or not TOKEN:
print("❌ Ошибка: Укажите BOT_TOKEN в переменных окружения или в коде!")
exit(1)
# Инициализация бота
bot = telebot.TeleBot(TOKEN)
# --- ХРАНИЛИЩЕ ДАННЫХ (в памяти) ---
user_data = {}
# --- КОМАНДА /start ---
@bot.message_handler(commands=['start'])
def send_welcome(message):
chat_id = message.chat.id
# Сбрасываем старые данные
if chat_id in user_data:
del user_data[chat_id]
user_data[chat_id] = {'step': 0}
bot.reply_to(message,
"👋 *Добро пожаловать!*\n\n"
"Этот бот создан для *бесплатной* консультации по списанию долгов (ФЗ-127).\n\n"
"👇 *Для начала заполните небольшую анкету. Это займет 2 минуты.*\n\n"
"Введите, пожалуйста, ваши *Фамилию и Имя*:",
parse_mode="Markdown"
)
# --- ОБРАБОТКА СООБЩЕНИЙ ---
@bot.message_handler(func=lambda message: True, content_types=['text'])
def handle_text(message):
chat_id = message.chat.id
# Если пользователь не начал с /start
if chat_id not in user_data:
bot.reply_to(message, "Напишите /start для начала консультации.")
return
user = user_data[chat_id]
step = user.get('step', 0)
text = message.text.strip()
# Шаг 0: ФИО
if step == 0:
user['fio'] = text
user['step'] = 1
user_data[chat_id] = user
bot.send_message(chat_id, "📞 Спасибо! Теперь укажите ваш *номер телефона*:", parse_mode="Markdown")
# Шаг 1: Телефон
elif step == 1:
user['phone'] = text
user['step'] = 2
user_data[chat_id] = user
bot.send_message(chat_id, "📝 Опишите *кратко вашу ситуацию* (просрочки, кредиты):", parse_mode="Markdown")
# Шаг 2: Ситуация
elif step == 2:
user['situation'] = text
user['step'] = 3
user_data[chat_id] = user
bot.send_message(chat_id, "💰 Укажите *примерную сумму ваших долгов* (в рублях):", parse_mode="Markdown")
# Шаг 3: Сумма долга (ФИНАЛ)
elif step == 3:
user['debt'] = text
user_data[chat_id] = user
# Отправляем заявку админу
send_to_admin(chat_id, message.from_user, user)
# Уведомляем пользователя
bot.send_message(chat_id,
"✅ *Спасибо за доверие!*\n\n"
"Ваша заявка принята. В ближайшее время с вами свяжется наш специалист для *бесплатной* консультации.\n\n"
"Если у вас есть срочный вопрос — напишите его сюда.",
parse_mode="Markdown"
)
# Очищаем данные
del user_data[chat_id]
def send_to_admin(chat_id, user_obj, data):
"""Отправляет собранные данные админу"""
admin_message = (
f"🔥 *НОВАЯ ЗАЯВКА!*\n\n"
f"👤 *ФИО:* {data.get('fio', 'не указано')}\n"
f"📞 *Телефон:* {data.get('phone', 'не указан')}\n"
f"📝 *Ситуация:* {data.get('situation', 'не указана')}\n"
f"💰 *Сумма долга:* {data.get('debt', 'не указана')} руб.\n\n"
f"🆔 *ID:* `{chat_id}`\n"
f"📱 *Username:* @{user_obj.username if user_obj.username else 'нет'}\n"
f"🔗 *Профиль:* [открыть](tg://user?id={chat_id})"
)
try:
bot.send_message(ADMIN_ID, admin_message, parse_mode="Markdown")
print(f"✅ Заявка отправлена админу от {chat_id}")
except Exception as e:
print(f"❌ Ошибка отправки админу: {e}")
# Пробуем отправить без форматирования
try:
bot.send_message(ADMIN_ID, f"Заявка от {chat_id}: {data}")
except:
pass
# --- ЗАПУСК БОТА ---
if __name__ == "__main__":
print("🚀 Бот запускается...")
# Уведомляем админа о запуске
try:
bot.send_message(ADMIN_ID, "🟢 *Бот успешно запущен!*", parse_mode="Markdown")
except:
pass
# Бесконечный цикл polling
bot.polling(none_stop=True, interval=0, timeout=60)