summaryrefslogtreecommitdiff
path: root/files/TG_bot_VPN-main/handlers/default_heandlers
diff options
context:
space:
mode:
Diffstat (limited to 'files/TG_bot_VPN-main/handlers/default_heandlers')
-rw-r--r--files/TG_bot_VPN-main/handlers/default_heandlers/__init__.py6
-rw-r--r--files/TG_bot_VPN-main/handlers/default_heandlers/echo.py21
-rw-r--r--files/TG_bot_VPN-main/handlers/default_heandlers/help.py13
-rw-r--r--files/TG_bot_VPN-main/handlers/default_heandlers/start.py99
4 files changed, 139 insertions, 0 deletions
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)