fix captha and stars

This commit is contained in:
Vladless
2025-02-28 20:30:04 +03:00
parent da7b63ac46
commit 82e3f7d6cd
5 changed files with 3191 additions and 1449 deletions
+2 -1
View File
@@ -26,6 +26,7 @@ async def generate_captcha(message: Message, state: FSMContext):
correct_emoji=correct_emoji,
message_id=message.message_id,
chat_id=message.chat.id,
original_text=message.text,
)
builder = InlineKeyboardBuilder()
@@ -63,7 +64,7 @@ async def check_captcha(callback: CallbackQuery, state: FSMContext, session: Any
if selected_emoji == correct_emoji:
logger.info(f"Пользователь {callback.message.chat.id} успешно прошел капчу")
await start_command(target_message, state, session, admin, False)
await start_command(target_message, state, session, admin, captcha=False)
else:
logger.warning(f"Пользователь {callback.message.chat.id} неверно ответил на капчу")
captcha = await generate_captcha(target_message, state)
+3181 -1433
View File
File diff suppressed because it is too large Load Diff
+7 -14
View File
@@ -52,12 +52,6 @@ async def start_command(message: Message, state: FSMContext, session: Any, admin
"""Обрабатывает команду /start, включая логику проверки подписки, рефералов и подарков."""
logger.info(f"Вызвана функция start_command для пользователя {message.chat.id}")
try:
await state.clear()
logger.info(f"Состояние для пользователя {message.chat.id} успешно очищено.")
except Exception:
logger.info(f"Состояние для пользователя {message.chat.id} не было очищено.")
if CAPTCHA_ENABLE and captcha:
captcha_data = await generate_captcha(message, state)
await edit_or_send_message(
@@ -67,12 +61,14 @@ async def start_command(message: Message, state: FSMContext, session: Any, admin
)
return
state_data = await state.get_data()
text_to_process = state_data.get("original_text", message.text)
if CHANNEL_EXISTS and CHANNEL_REQUIRED:
try:
member = await bot.get_chat_member(CHANNEL_ID, message.chat.id)
if member.status not in ["member", "administrator", "creator"]:
original_text = message.text
await state.update_data(original_text=original_text)
await state.update_data(original_text=text_to_process)
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="✅ Я подписался", callback_data="check_subscription"))
await edit_or_send_message(
@@ -82,12 +78,10 @@ async def start_command(message: Message, state: FSMContext, session: Any, admin
)
return
else:
logger.info(
f"Пользователь {message.chat.id} подписан на канал (статус: {member.status}). Продолжаем работу."
)
logger.info(f"Пользователь {message.chat.id} подписан на канал (статус: {member.status}). Продолжаем работу.")
except Exception as e:
logger.error(f"Ошибка проверки подписки пользователя {message.chat.id}: {e}")
await state.update_data(start_text=message.text)
await state.update_data(start_text=text_to_process)
builder = InlineKeyboardBuilder()
builder.row(InlineKeyboardButton(text="✅ Я подписался", callback_data="check_subscription"))
await edit_or_send_message(
@@ -96,8 +90,7 @@ async def start_command(message: Message, state: FSMContext, session: Any, admin
reply_markup=builder.as_markup(),
)
return
await process_start_logic(message, state, session, admin)
await process_start_logic(message, state, session, admin, text_to_process)
async def process_start_logic(
+1 -1
View File
File diff suppressed because one or more lines are too long