From ecd252cdad94bfb86bc8f498e51ff98a0a780c73 Mon Sep 17 00:00:00 2001 From: vrubelroman Date: Fri, 7 Nov 2025 22:54:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=81=D1=83=D1=89=D0=B5=D1=81=D1=82=D0=B2?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D1=8F=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20=D0=B8=D0=B3?= =?UTF-8?q?=D1=80=D0=BE=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LichessClientTG_bot/bot.py | 44 ++++++++++++++++++------------ LichessClientTG_bot/lichess_api.py | 19 +++++++++++++ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/LichessClientTG_bot/bot.py b/LichessClientTG_bot/bot.py index 67d3c92..e91c763 100644 --- a/LichessClientTG_bot/bot.py +++ b/LichessClientTG_bot/bot.py @@ -166,29 +166,37 @@ class LichessBot: username = update.message.text.strip() user_id = update.effective_user.id - if username: - # Add gamer to database (without token) - gamer_id = self.db.add_gamer(username) - # Link user to gamer (without token) - self.db.add_user_gamer(user_id, gamer_id, None) - - # Set default period to 1 hour (60 minutes) for new gamer - self.db.set_user_gamer_period(user_id, gamer_id, 60) - - # If this is the first gamer for this user, make it active - user_gamers = self.db.get_user_gamers(user_id) - if len(user_gamers) == 1: - self.db.set_user_active_gamer(user_id, gamer_id) - - await update.message.reply_text( - f"✅ Игрок {username} успешно добавлен!" - ) - else: + if not username: await update.message.reply_text( "❌ Username не может быть пустым. Попробуйте еще раз." ) return WAITING_FOR_USERNAME + # Check if user exists on Lichess + user_exists = await self.lichess_api.check_user_exists(username) + if not user_exists: + await update.message.reply_text( + f"❌ Игрок {username} не найден на Lichess. Проверьте правильность написания имени." + ) + return WAITING_FOR_USERNAME + + # Add gamer to database (without token) + gamer_id = self.db.add_gamer(username) + # Link user to gamer (without token) + self.db.add_user_gamer(user_id, gamer_id, None) + + # Set default period to 1 hour (60 minutes) for new gamer + self.db.set_user_gamer_period(user_id, gamer_id, 60) + + # If this is the first gamer for this user, make it active + user_gamers = self.db.get_user_gamers(user_id) + if len(user_gamers) == 1: + self.db.set_user_active_gamer(user_id, gamer_id) + + await update.message.reply_text( + f"✅ Игрок {username} успешно добавлен!" + ) + return ConversationHandler.END async def getgamers(self, update: Update, context: ContextTypes.DEFAULT_TYPE): diff --git a/LichessClientTG_bot/lichess_api.py b/LichessClientTG_bot/lichess_api.py index 3bd0d91..d8f0056 100644 --- a/LichessClientTG_bot/lichess_api.py +++ b/LichessClientTG_bot/lichess_api.py @@ -118,6 +118,25 @@ class LichessAPI: logger.error(f"Error getting puzzles period: {e}") return None + async def check_user_exists(self, username: str) -> bool: + """Check if user exists on Lichess""" + try: + async with aiohttp.ClientSession() as session: + async with session.get( + f"{self.lichess_base_url}/user/{username}" + ) as response: + if response.status == 200: + return True + elif response.status == 404: + logger.warning(f"User {username} not found on Lichess (404)") + return False + else: + logger.error(f"Failed to check user existence: {response.status}") + return False + except Exception as e: + logger.error(f"Error checking user existence: {e}") + return False + async def get_user_ratings(self, username: str) -> Optional[Dict[str, Any]]: """Get user ratings from Lichess API""" try: