Команда работает через подключение таблицы sqlite3. Проблема в том, что надо упоминать пользователя который хочет перевести и того кому перевести. Хочется сделать без упоминания, но команда перестает работать, точнее перестает изымать средства, но при этом исправно сохраняет добавленное.
код частичный
import sqlite3
import disnake
from disnake import Color, Member, Intents, Embed
from disnake.ext import commands
from sqlite3 import connect
from typing import Any
con = connect("users.db", check_same_thread=False)
cur = con.cursor()
bot = commands.InteractionBot(intents=Intents.all())
cur.execute("""CREATE TABLE IF NOT EXISTS users(userid BIGINT, cash BIGINT)"""); con.commit()
def checkUser(id: int) -> list[Any]:
user = cur.execute("SELECT * FROM users WHERE userid = %s" % id).fetchall()
if not user:
cur.execute("INSERT INTO users VALUES (?, ?)", (id, 0))
return cur.execute("SELECT * FROM users WHERE userid = %s" % id).fetchall()
@bot.slash_command(name="transfer")
async def transfer(ctx, member: Member, target: Member, amount: int):
data = checkUser(ctx.author.id)
if data[0][1] < amount:
await ctx.send(embed=Embed(
title=f'Ошибка | ❌',
description=f'У вас недостаточно средств для перевода',
color=Color.gold()
))
else:
await ctx.send(embed=Embed(
title=f'Экономика',
description=f'{ctx.author.mention} передал пользователю {target.mention} **{amount}**, Ваш баланс составляет **{data[0][1] - amount}**',
color=Color.red()
))
cur.execute("UPDATE users SET cash = ? WHERE userid = ?", (data[0][1] + amount, target.id));
cur.execute("UPDATE users SET cash = ? WHERE userid = ?", (data[0][1] - amount, mention.id)); con.commit()