Добрый день, хочу спросить будет ли работать код 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.05.24
1 ответ

Ответы

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

  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.05.24

Глеб Черняк

Сейчас на сайте
Читать ответы

Виталий

Читать ответы

Олег Николаевич

Читать ответы
Посмотреть всех экспертов из раздела Технологии
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store