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

Глеб Черняк

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

Александр

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

Dmitriy_Teh

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