Технологии

Добрый день, хочу спросить будет ли работать код import - вопрос №5479084

import sqlite3

from disnake import Command, Member

# Опр.команду для мува денег (Можно изменить)
@Command(«transfer», description=«Перевод суммы другому участнику»)
async def transfer(member: Member, target: Member, amount: int):
# Подключаемся к локальной базе данных sqlite
conn = sqlite3.connect(«database.db»)
cursor = conn.cursor()

# Проверяем есть ли нужная сумма
cursor.execute(f«SELECT balance FROM users WHERE id = {member.id}»)
balance = cursor.fetchone()[0]
if balance < amount:
await member.send(«У вас недостаточно средств для перевода»)
return

# Снятие суммы с аккаунта откуда перевод
cursor.execute(f«UPDATE users SET balance = balance — {amount} WHERE id = {member.id}»)
conn.commit()

# Начисляем указанную сумму на аккаунт другого пользователя
cursor.execute(f«UPDATE users SET balance = balance + {amount} WHERE id = {target.id}»)
conn.commit()

await member.send(f«Сумма {amount} была переведена на аккаунт {target.name}»)

май 10, 2024 г.

  • Всего ответов: 1

  • Arturk16 - аватарка

    Arturk16

    5-й в Технологиях

    Добрый день! Ваш код выглядит правильно, но есть несколько вещей, которые стоит учесть:

    1. Убедитесь, что у вас установлены все необходимые библиотеки (
      sqlite3
       и 
      disnake
      ).
    2. Убедитесь, что база данных 
      database.db
       существует и в ней есть таблица 
      users
       с полями 
      id
       и 
      balance
      .
    3. Убедитесь, что 
      id
       в таблице 
      users
       соответствует 
      id
       участников в вашем сервере Discord.
    4. Ваш код не обрабатывает возможные ошибки, которые могут возникнуть при работе с базой данных. Рекомендуется добавить обработку исключений для обеспечения надежности вашего кода.

    Пожалуйста, учтите, что этот код должен быть запущен в среде, где доступны асинхронные команды (например, внутри события 

    on_message
     или в команде бота). Если вы запустите этот код вне такой среды, вы получите ошибку.

    Также, пожалуйста, учтите, что использование SQL-запросов напрямую может создать уязвимости для SQL-инъекций. Рекомендуется использовать параметризованные запросы или ORM, такие как SQLAlchemy, для безопасной работы с базой данных.

    Наконец, убедитесь, что вы обрабатываете случаи, когда 

    fetchone()
     возвращает 
    None
    , что произойдет, если в базе данных нет записи с указанным 
    id
    .

    Если учесть все эти моменты, ваш код должен работать корректно.

    май 11, 2024 г.

Похожие вопросы