switch ru/en
This commit is contained in:
parent
c16a11cf63
commit
123749415a
4 changed files with 241 additions and 81 deletions
|
|
@ -28,13 +28,23 @@ class Database:
|
|||
)
|
||||
''')
|
||||
|
||||
# Add language_code column if it doesn't exist
|
||||
# Add language_code column if it doesn't exist (Telegram language)
|
||||
try:
|
||||
cursor.execute("ALTER TABLE telegram_users ADD COLUMN language_code TEXT")
|
||||
except sqlite3.OperationalError:
|
||||
# Column already exists
|
||||
pass
|
||||
|
||||
# Add bot_language column if it doesn't exist (user-selected bot language)
|
||||
try:
|
||||
cursor.execute("ALTER TABLE telegram_users ADD COLUMN bot_language TEXT DEFAULT 'en'")
|
||||
# Set default value for existing users
|
||||
cursor.execute("UPDATE telegram_users SET bot_language = 'en' WHERE bot_language IS NULL")
|
||||
conn.commit()
|
||||
except sqlite3.OperationalError:
|
||||
# Column already exists
|
||||
pass
|
||||
|
||||
# Create gamers table (Lichess players only)
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS gamers (
|
||||
|
|
@ -144,22 +154,30 @@ class Database:
|
|||
def add_or_get_telegram_user(self, user_id: int, username: Optional[str] = None,
|
||||
first_name: Optional[str] = None, last_name: Optional[str] = None,
|
||||
language_code: Optional[str] = None) -> bool:
|
||||
"""Add or update Telegram user"""
|
||||
"""
|
||||
Add or update Telegram user.
|
||||
For new users, automatically sets bot_language based on Telegram language_code:
|
||||
- 'ru' -> 'ru' (Russian)
|
||||
- anything else -> 'en' (English)
|
||||
"""
|
||||
with sqlite3.connect(self.db_path) as conn:
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("SELECT user_id FROM telegram_users WHERE user_id = ?", (user_id,))
|
||||
cursor.execute("SELECT user_id, bot_language FROM telegram_users WHERE user_id = ?", (user_id,))
|
||||
existing = cursor.fetchone()
|
||||
|
||||
if not existing:
|
||||
# New user - determine bot language from Telegram language_code
|
||||
bot_language = 'ru' if language_code and language_code.lower().startswith('ru') else 'en'
|
||||
cursor.execute(
|
||||
"INSERT INTO telegram_users (user_id, username, first_name, last_name, language_code) VALUES (?, ?, ?, ?, ?)",
|
||||
(user_id, username, first_name, last_name, language_code)
|
||||
"INSERT INTO telegram_users (user_id, username, first_name, last_name, language_code, bot_language) VALUES (?, ?, ?, ?, ?, ?)",
|
||||
(user_id, username, first_name, last_name, language_code, bot_language)
|
||||
)
|
||||
conn.commit()
|
||||
logger.info(f"New user {user_id} added with bot_language={bot_language} (from Telegram language_code={language_code})")
|
||||
return True
|
||||
else:
|
||||
# Update language_code if provided (always update, even if None to clear old value)
|
||||
# Existing user - update language_code but keep bot_language unchanged
|
||||
cursor.execute(
|
||||
"UPDATE telegram_users SET language_code = ? WHERE user_id = ?",
|
||||
(language_code, user_id)
|
||||
|
|
@ -168,8 +186,28 @@ class Database:
|
|||
return False
|
||||
|
||||
def get_user_language(self, user_id: int) -> str:
|
||||
"""Always return English language"""
|
||||
return 'en'
|
||||
"""Get user's selected bot language from database"""
|
||||
with sqlite3.connect(self.db_path) as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("SELECT bot_language FROM telegram_users WHERE user_id = ?", (user_id,))
|
||||
result = cursor.fetchone()
|
||||
if result and result[0]:
|
||||
return result[0]
|
||||
# Default to English if not set
|
||||
return 'en'
|
||||
|
||||
def set_user_language(self, user_id: int, language: str) -> bool:
|
||||
"""Set user's selected bot language"""
|
||||
if language not in ['en', 'ru']:
|
||||
return False
|
||||
with sqlite3.connect(self.db_path) as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute(
|
||||
"UPDATE telegram_users SET bot_language = ? WHERE user_id = ?",
|
||||
(language, user_id)
|
||||
)
|
||||
conn.commit()
|
||||
return cursor.rowcount > 0
|
||||
|
||||
def add_gamer(self, username: str) -> int:
|
||||
"""Add a new gamer to the database (return gamer_id)"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue