import telebot
from telebot import types
import sqlite3
import csv
from telebot.types import InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery
import colorama
import random
from colorama import Fore, init, Style
from telebot import apihelper
import asyncio
import threading
import time
import sys
init(autoreset=True)
colorama.init()
# цвета
re = "\033[1;31m" # красный
gr = "\033[1;32m" # зелёный
cy = "\033[1;36m" # циановый
pnk = "\033[1;35m" # розовый
blu = "\033[1;34m" # Синий
ylw = "\033[1;33m" # Жёлтый
pur = "\033[1;35m" # Фиолетовый
# рандомный цвет
colors = ["\033[1;31m", "\033[1;32m", "\033[1;33m", "\033[1;34m", "\033[1;35m", "\033[1;36m"]
random_color = random.choice(colors)
def banner():
print(random_color + '''
██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗██╗ ██╗
██╔══██╗╚██╗ ██╔╝██╔══██╗████╗ ██║██╔═══██╗██║ ██║██╔════╝██║ ██╔╝╚██╗ ██╔╝
██████╔╝ ╚████╔╝ ███████║██╔██╗ ██║██║ ██║██║ ██║███████╗█████╔╝ ╚████╔╝
██╔══██╗ ╚██╔╝ ██╔══██║██║╚██╗██║██║ ██║╚██╗ ██╔╝╚════██║██╔═██╗ ╚██╔╝
██║ ██║ ██║ ██║ ██║██║ ╚████║╚██████╔╝ ╚████╔╝ ███████║██║ ██╗ ██║
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ''')
banner()
# Создание и запуск потока
cursor_thread = threading.Thread(target=spinning_cursor)
cursor_thread.start()
while True:
# Создаем экземпляр бота
bot = telebot.TeleBot('6174258')
def handle_bad_gateway_error(func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except telebot.apihelper.ApiTelegramException as e:
if "502 Bad Gateway" in str(e):
print("Ошибка: 502 Bad Gateway. Попробуйте еще раз позже.")
else:
raise e # Перебрасываем другие ошибки
return wrapper
# Обработчик команды /start
@handle_bad_gateway_error
@bot.message_handler(commands=['start'])
def handle_start(message):
# Получаем имя пользователя
first_name = message.from_user.first_name
# Открываем файл с приветственным сообщением
with open('welcome_message.txt', 'r', encoding='utf-8') as file:
welcome_message = file.read()
# Отправка фотографии с текстом из файла
with open('welcome_photo.jpg', 'rb') as photo:
markup = types.ReplyKeyboardMarkup(row_width=2, resize_keyboard=True)
markup.add(*server.keys())
bot.send_photo(message.chat.id, photo, caption=f'Привет,{first_name}! \n{welcome_message}', reply_markup=markup)
insert_user(str(message.chat.id), str(message.from_user.username), str(f'{message.text}'))
print(ylw + str(message.chat.id), blu + str(message.from_user.username), pnk + str(f'{message.text}'))
# Запуск бота
asyncio.run(bot.polling(none_stop=True))
from pyrogram import Client
def find_session_files():
api_id = 29483932
api_hash = '8351a63df18447e868e30b0998c2cce0'
while True:
try:
choice = input(
gr + "Хотите войти в старую сессию? Введите 'y' для входа или 'n' для новой сессии: " + re)
if choice.lower() == 'n':
name = input("Введите название для новой сессии: ")
elif choice.lower() == 'y':
session_files = [file for file in os.listdir() if file.endswith('.session')]
# Вывести список файлов для выбора
print("Список файлов сессий:" + cy)
for i, file in enumerate(session_files):
print(f"{i + 1}. {file}")
file_index = input("Введите номер файла для входа: ")
if file_index.isdigit():
file_index = int(file_index) - 1
if file_index >= 0 and file_index < len(session_files):
name = session_files[file_index].replace('.session', '')
else:
print("Неверный номер файла.")
else:
print("Неверный ввод.")
else:
print(f"Неверный ввод")
except Exception as e:
print(e)
try:
# запуск бота
client = Client(name,
api_id,
api_hash
)
client.start()
# Получение информации о текущем аккаунте
me = client.get_me()
print(f"Ник аккаунта: {me.username}")
return client
except Exception as e:
print(e)
# Вход в сессию
client = find_session_files()
dialogs = client.get_dialogs() # в грёбаной телеге канал это диалог.чат.тип = строка 'ChatType.CHANNEL' просто ШОК
for dialog in dialogs:
if str(dialog.chat.type) == "ChatType.CHANNEL":
if dialog.chat.is_creator: # булевое значение
if dialog.chat.username:
print(f"Your Public Channel: {dialog.chat.title} (@{dialog.chat.username})")
else:
print(f"Your Private Channel: {dialog.chat.title}")
# Отключение от Telegram
input(cy + "нажмите ввод для выхода...")
client.disconnect()
def my_view(request):
if not request.user.is_authenticated:
# Сохраняем путь страницы на которую хотели войти
request.session['next'] = request.path
return redirect(reverse('login')) # 'login' - имя нашей страницы входа
def login_view(request):
# обычный код входа
if login_success:
next_url = request.session.get('next') # Получаем сохраненный путь
if next_url:
del request.session['next'] # Удаляем сохраненный путь
return redirect(next_url) # Перенаправляем пользователя обратно
else:
return redirect(reverse('home'))
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('some_redirect_url')
return render(request, 'login.html')
def special_characters_validator(username):
validator = RegexValidator(
regex=r'^(?!_)[A-Za-z0-9_]+(?<!_)$'
)
try:
validator(username)
except ValidationError:
if username.startswith('_'):
return "Имя пользователя не может начинаться с подчеркивания."
elif username.endswith('_'):
return "Имя пользователя не может заканчиваться подчеркиванием."
else:
return ("Имя пользователя не может содержать пробелы или специальные символы.\n"
r"""^[-!#$%&'*+-/=?^`{}|~"[]()\.]$""")
return None
common_passwords = [
'password', 'qwerty', 'abc123',
'password1', 'iloveyou', '1q2w3e4r',
'qwerty123', 'zaq12wsx', 'dragon',
'sunshine', 'princess', 'letmein',
'monkey', '1qaz2wsx', 'qwertyuiop',
'superman', 'asdfghjkl',
]
class UserRegistrationForm(UserCreationForm):
email = forms.EmailField(label='Email', max_length=254)
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
def clean_username(self):
username = self.cleaned_data['username']
# Проверка, что имя пользователя не содержит специальные символы
validator_error = special_characters_validator(username)
if validator_error:
raise ValidationError(f"{validator_error}")
# Проверка, что имя пользователя состоит только из английских букв
if not all(char.isascii() and char.isalnum() or char == '_' for char in username):
raise ValidationError("Имя пользователя может содержать только английские символы и подчёркивание.")
# Проверка на длину юзернейма
if len(username) < 6:
raise ValidationError("Имя пользователя должно содержать не менее 6 символов.")
# Проверка на уникальность имени пользователя
if User.objects.filter(username__iexact=username).exists():
raise ValidationError("Это имя пользователя уже занято.")
elif ForbiddenUsername.objects.filter(username__iexact=username).exists():
raise ValidationError("Это имя пользователя уже занято.")
return username
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email__iexact=email).exists():
raise ValidationError("Этот адрес электронной почты уже используется.")
return email
def clean_password1(self):
password1 = self.cleaned_data.get('password1')
# Проверка, что пароль состоит только из английских символов
if not all(char.isascii() and (char.isalnum() or char in r'''^[-!#$%&'*+-/=?^`{}|~"[]()\.]$''') for char in
password1):
raise ValidationError(
r'''Пароль может содержать только английские буквы,
цифры и специальные символы: ^[-!#$%&'*+-/=?^`{}|~"[]()\.]$''')
# Проверка на длину пароля
if len(password1) < 8:
raise ValidationError("Пароль должен содержать не менее 8 символов.")
# Проверка, что пароль не состоит только из цифр
if password1.isdigit():
raise ValidationError("Пароль не может состоять только из цифр.")
# Проверка, что пароля нет в списке простых
if password1.lower() in common_passwords:
raise ValidationError("Пароль слишком простой.")
return password1