From e5abc1fe99340b979b18864d978179f71fe8f5c5 Mon Sep 17 00:00:00 2001 From: vlapa Date: Sat, 13 Jun 2026 20:33:26 +0300 Subject: First --- .../handlers/default_heandlers/__init__.py | 6 ++ .../handlers/default_heandlers/echo.py | 21 +++++ .../handlers/default_heandlers/help.py | 13 +++ .../handlers/default_heandlers/start.py | 99 ++++++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 files/TG_bot_VPN-main/handlers/default_heandlers/__init__.py create mode 100644 files/TG_bot_VPN-main/handlers/default_heandlers/echo.py create mode 100644 files/TG_bot_VPN-main/handlers/default_heandlers/help.py create mode 100644 files/TG_bot_VPN-main/handlers/default_heandlers/start.py (limited to 'files/TG_bot_VPN-main/handlers/default_heandlers') diff --git a/files/TG_bot_VPN-main/handlers/default_heandlers/__init__.py b/files/TG_bot_VPN-main/handlers/default_heandlers/__init__.py new file mode 100644 index 0000000..4e4b225 --- /dev/null +++ b/files/TG_bot_VPN-main/handlers/default_heandlers/__init__.py @@ -0,0 +1,6 @@ +from . import start +from . import help +from . import echo + + +__all__ = ['start', 'help', 'echo'] diff --git a/files/TG_bot_VPN-main/handlers/default_heandlers/echo.py b/files/TG_bot_VPN-main/handlers/default_heandlers/echo.py new file mode 100644 index 0000000..f8f5904 --- /dev/null +++ b/files/TG_bot_VPN-main/handlers/default_heandlers/echo.py @@ -0,0 +1,21 @@ +from telebot.types import Message +from loader import bot +from handlers.custom_heandlers.location_handlers import location_handler +from handlers.default_heandlers.help import bot_help +from handlers.custom_heandlers.instruction_handlers import instruction_handler + + +# Эхо хендлер, куда летят текстовые сообщения без указанного состояния + +@bot.message_handler(state=None) +def bot_echo(message: Message): + if message.text == "🌍 Серверы": + location_handler(message) + elif message.text == "❓ Справка": + bot_help(message) + elif message.text == "📖 Инструкция": + instruction_handler(message) + else: + bot.reply_to(message, f"Введите любую команду из меню, чтобы я начал работать\n" + f"Либо выберите одну из кнопок, которые я вам прислал 👇") + diff --git a/files/TG_bot_VPN-main/handlers/default_heandlers/help.py b/files/TG_bot_VPN-main/handlers/default_heandlers/help.py new file mode 100644 index 0000000..fc77dd4 --- /dev/null +++ b/files/TG_bot_VPN-main/handlers/default_heandlers/help.py @@ -0,0 +1,13 @@ +from telebot.types import Message + +from config_data.config import DEFAULT_COMMANDS, ADMIN_COMMANDS, ALLOWED_USERS +from loader import bot + + +@bot.message_handler(commands=['help']) +def bot_help(message: Message): + commands = [f"/{command} - {description}" for command, description in DEFAULT_COMMANDS] + if message.from_user.id in ALLOWED_USERS: + commands.extend([f"/{command} - {description}" for command, description in ADMIN_COMMANDS]) + bot.reply_to(message, "📋 Доступные команды:\n" + "\n".join(commands)) + bot.send_message(message.chat.id, "🤝 Для поддержки обращайтесь: @guardtunnel_support") diff --git a/files/TG_bot_VPN-main/handlers/default_heandlers/start.py b/files/TG_bot_VPN-main/handlers/default_heandlers/start.py new file mode 100644 index 0000000..32beca8 --- /dev/null +++ b/files/TG_bot_VPN-main/handlers/default_heandlers/start.py @@ -0,0 +1,99 @@ +from telebot.types import Message +from loader import bot, app_logger +from config_data.config import DEFAULT_COMMANDS, ADMIN_COMMANDS, ALLOWED_USERS, CHANNEL_ID +from database.models import User, Group +from utils.functions import is_subscribed +from keyboards.inline.subscribed import is_subscribed_markup +from keyboards.reply.handlers_reply import handlers_reply +from states.states import SubscribedState + + +start_text = """*Вы не подписались на канал!* + +☺️ Для доступа к полному функционалу бота вам необходимо подписаться на наш новостной канал [Guard Tunnel VPN](https://t.me/{channel_id}) + +🎁 В подарок вы получите *бесплатный доступ* на использование нашего сервиса + +*С Уважением, команда Guard Tunnel VPN* + +_После подписки на наш канал нажмите ниже на кнопку: ✅ Я подписался_""" + + +@bot.message_handler(commands=['start']) +def bot_start(message: Message): + if message.chat.type == "private": + is_sub = True if message.from_user.id in ALLOWED_USERS else False + if User.get_or_none(user_id=message.from_user.id) is None: + app_logger.info(f"Внимание! Новый юзер: {message.from_user.full_name} - {message.from_user.username}") + User.create(user_id=message.from_user.id, + full_name=message.from_user.full_name, + username=message.from_user.username if message.from_user.username is not None else "None", + is_premium=message.from_user.is_premium, + is_subscribed=is_sub) + commands = [f"/{command} - {description}" for command, description in DEFAULT_COMMANDS] + if message.from_user.id in ALLOWED_USERS: + commands.extend([f"/{command} - {description}" for command, description in ADMIN_COMMANDS]) + bot.send_message( + message.from_user.id, + f"Здравствуйте, {message.from_user.full_name}! 👋\n" + f"Вы вошли как администратор. Доступны следующие команды:\n{'\n'.join(commands)}", + reply_markup=handlers_reply() + ) + else: + if is_subscribed(CHANNEL_ID, message.from_user.id): + # Если пользователь подписан на канал, тогда ему можно пользоваться ботом. + bot.send_message(message.from_user.id, f"Приветствуем, {message.from_user.full_name}.\n" + f"Рады приветствовать вас на нашем сервисе!\n" + f"Что бы использовать наш VPN сервис, " + f"следуйте инструкциям ниже 👇\n" + f"{'\n'.join(commands)}", + reply_markup=handlers_reply()) + cur_user = User.get(User.user_id == message.from_user.id) + cur_user.is_subscribed = True + cur_user.save() + else: + bot.send_message(message.from_user.id, start_text.format(channel_id=CHANNEL_ID[1:]), + reply_markup=is_subscribed_markup(), parse_mode='Markdown', + disable_web_page_preview=True) + bot.set_state(message.from_user.id, SubscribedState.subscribe) + + else: + bot.send_message(message.chat.id, "Здравствуйте! Я - телеграм бот, модератор каналов и групп. " + "Чтобы получить больше информации, " + "обратитесь к администратору, или напишите мне в личку)") + if Group.get_or_none(group_id=message.chat.id) is None: + Group.create(group_id=message.chat.id, + title=message.chat.title, + description=message.chat.description, + bio=message.chat.bio, + invite_link=message.chat.invite_link, + location=message.chat.location, + username=message.chat.username) + app_logger.info(f"Внимание! Новая группа: {message.chat.title} - {message.chat.invite_link}") + if User.get_or_none(user_id=message.from_user.id) is None: + User.create(user_id=message.from_user.id, + full_name=message.from_user.full_name, + username=message.from_user.username, + is_premium=message.from_user.is_premium) + app_logger.info(f"Внимание! Новый юзер: {message.from_user.full_name} - {message.from_user.username}") + +@bot.callback_query_handler(func=None, state=SubscribedState.subscribe) +def is_subscribed_handler(call): + if is_subscribed(CHANNEL_ID, call.from_user.id): + commands = [f"/{command} - {description}" for command, description in DEFAULT_COMMANDS] + app_logger.info(f"Пользователь {call.from_user.full_name} подписался на канал!") + + cur_user = User.get(User.user_id == call.from_user.id) + cur_user.is_subscribed = True + cur_user.save() + + bot.answer_callback_query(callback_query_id=call.id) + bot.send_message(call.message.chat.id, "Спасибо, что выбрали наш сервис, приятного использования!\n" + f"Вам доступны следующие команды:\n" + f"{'\n'.join(commands)}") + bot.set_state(call.message.chat.id, None) + else: + bot.answer_callback_query(callback_query_id=call.id) + bot.send_message(call.message.chat.id, start_text.format(channel_id=CHANNEL_ID[1:]), + reply_markup=is_subscribed_markup(), parse_mode='Markdown', + disable_web_page_preview=True) -- cgit v1.2.3