db_kyc_project/bot/handlers/start_handler.py
Даня Вакуленков ff9c8c76b4 Fix bot and back problems
2024-12-14 08:52:01 +03:00

115 lines
6.3 KiB
Python
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import asyncio
from aiogram import Bot, Dispatcher, types
from keyboards import *
from aiogram.dispatcher.filters import Text
import re
import os
import time
import shutil
import random
from create_bot import bot, request_url, important_message, url, token, bucket_name, username, password, endpoint_url
from req import check_register
import urllib.request
from messages import get_main_menu_message
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, ReplyKeyboardRemove, InlineKeyboardMarkup, InlineKeyboardButton, WebAppInfo
from loguru import logger
def download_image(url, new_filename):
try:
urllib.request.urlretrieve(url, new_filename)
print("Image downloaded successfully as:", new_filename)
except Exception as e:
print("An error occurred:", str(e))
def copy_and_rename_image(source_folder, image_name, destination_folder, new_image_name):
# Check if the source image exists
if not os.path.exists(os.path.join(source_folder, image_name)):
print(f"Image '{image_name}' does not exist in the source folder.")
return
# Create the destination folder if it doesn't exist
if not os.path.exists(destination_folder):
os.makedirs(destination_folder)
# Construct source and destination paths
source_path = os.path.join(source_folder, image_name)
destination_path = os.path.join(destination_folder, new_image_name)
try:
# Copy the image file
shutil.copy(source_path, destination_path)
print(f"Successfully copied '{image_name}' to '{destination_path}'.")
except Exception as e:
print(f"Error copying image: {e}")
def get_answer_keyboard():
keyboard = InlineKeyboardMarkup()
button1 = InlineKeyboardButton('Главное меню', callback_data='main_menu')
keyboard.add(button1)
return keyboard
def get_main_keyboard_inline(is_admin=False, ref_code=None):
keyboard = InlineKeyboardMarkup()
button1 = InlineKeyboardButton('👾 Кликер', web_app=WebAppInfo(url=f'{url}?referred_by={ref_code}'))
button2 = InlineKeyboardButton(' Инструкция', callback_data='instruction_inline')
# button3 = InlineKeyboardButton('🔥 Кто мы?', web_app=WebAppInfo(url=''))
button4 = InlineKeyboardButton('ТЕСТ', callback_data='test_message')
keyboard.add(button1)
keyboard.add(button2)
# keyboard.add(button3)
if is_admin:
keyboard.add(button4)
return keyboard
async def get_main_menu_answer(call: types.CallbackQuery):
logger.info(f"{call.from_user.id} - @{call.from_user.username} : главное меню через инлайн кнопку")
await call.message.edit_text(get_main_menu_message(), reply_markup=get_main_keyboard_inline(), parse_mode=types.ParseMode.MARKDOWN)
async def get_main_menu_after_picture(call: types.CallbackQuery):
logger.info(f"{call.from_user.id} - @{call.from_user.username} : главное меню через инлайн кнопку после картинки")
await call.message.delete()
await bot.send_message(call.from_user.id, get_main_menu_message(), reply_markup=get_main_keyboard_inline(), parse_mode=types.ParseMode.MARKDOWN)
# async def get_main_menu(call: types.CallbackQuery):
# logger.info(f"{call.from_user.id} - @{call.from_user.username} : главное меню через инлайн кнопку без фото")
# call.message.delete()
# await bot.send_photo(call.from_user.id, open('pictures/main_menu.jpg', 'rb'), caption=f"{get_main_message(call.from_user.id)}", reply_markup=get_main_keyboard_inline(check_admin(call.from_user.id)), parse_mode=types.ParseMode.MARKDOWN)
async def command_start(message : types.Message, state:FSMContext):
ref_code = ''
if message.text[7:].startswith('user_'):
ref_code = message.text[12:]
if not check_register(message.from_user.id):
user = message.from_user
# try:
# photos = await bot.get_user_profile_photos(user.id)
# photo = photos.photos[0][-1]
# file_info = await bot.get_file(photo.file_id)
# download_image(f'https://api.telegram.org/file/bot{token}/{file_info["file_path"]}', f'photos/{user.id}.jpg')
# except:
# copy_and_rename_image('.', 'avatar.jpg', 'photos', f'{user.id}.jpg')
image_path = f'photos/{user.id}.jpg'
s3_key = f'{user.id}.jpg'
# upload_image_to_s3(image_path, bucket_name, s3_key, username, password, endpoint_url)
logger.info(f"{message.from_user.id} - @{message.from_user.username} : команда /start и не зарегистрирован")
await bot.send_message(message.from_user.id, '👋', reply_markup=ReplyKeyboardRemove())
await asyncio.sleep(0.5)
await bot.send_message(message.from_user.id, '👑 Я - KYC Кликер бот! Зарабатывай баллы кликами, поднимайся в рейтинге и получай бонусы. Развивайся быстрее с нашей специальной системой для новичков!', reply_markup=ReplyKeyboardRemove())
await asyncio.sleep(0.5)
await bot.send_message(message.from_user.id, '🎁 Используй баллы в аукционе за ценные призы! Победителей много, приглашаем в увлекательную битву кликов!', reply_markup=ReplyKeyboardRemove())
await asyncio.sleep(0.5)
await bot.send_message(message.from_user.id, '👯 Участвуй в реферальной программе, чтобы получать % с кликов друзей и зарабатывать больше баллов для аукциона. ', reply_markup=ReplyKeyboardRemove())
await asyncio.sleep(0.5)
await bot.send_message(message.from_user.id, '🍀 Удачи в битве!', reply_markup=ReplyKeyboardRemove())
await asyncio.sleep(0.5)
else:
logger.info(f"{message.from_user.id} - @{message.from_user.username} : команда /start")
await bot.send_message(message.from_user.id, get_main_menu_message(), reply_markup=get_main_keyboard_inline(ref_code=ref_code), parse_mode=types.ParseMode.MARKDOWN)