@NoGrisha
Точка.

Проблема SQLITE3 и Discord Python. Как решить?

Я программирую своего discord бота на python. Решил сделать экономическую часть с помощью SQLITE3. Проблема в том что при команде $яблоки должно выводится кол-во яблок(Валюта в боте) у участника, но на эту команду никак не реагирует SQLITE3 и в консоли ошибки нет. Я решил также попробовать напечатать значение в консоль но тоже ничего, не ошибки не ответа. Вот проблемный код (на всяких случай ещё прикреплю создание таблицы):

#таблица sqlite3
connection = sqlite3.connect('hedgehog_bot.db')
cursor = connection.cursor()

@bot.event
async def on_ready():
    DiscordComponents(bot)

    #создание таблицы sqlite3 при запуске кода
    cursor.execute("""CREATE TABLE IF NOT EXISTS users (
        name TEXT,
        id INT,
        cash BIGINT,
        rep INT,
        warns INT,
        lvl INT,
        salmon INT,
        cod INT
    )""")
    connection.commit()

    for guild in bot.guilds:
        for member in guild.members:
            if cursor.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None:
                cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, {0}, {100}, {0}, {0}, {0}, {0})")
            else:
                pass
    connection.commit()
    print("Бот готов!")

@bot.event
async def on_member_join(member):
    if cursor.execute(f"SELECT id FROM users WHERE id = {member.id}").fetchone() is None:
        cursor.execute(f"INSERT INTO users VALUES ('{member}', {member.id}, 0, 100, 0, 0, 0, 0)")
        connection.commit()
    else:
        pass
...
#проблемная часть
@bot.command()
async def яблоки(ctx, *, member: discord.Member):
    cash = cursor.execute(f"SELECT cash FROM users WHERE id = {member.id}").fetchone()[0]
    print(cash)
    await ctx.send(embed = discord.Embed(
                description = f"""Баланс пользователя **{member.mention}** состовляет **{cursor.execute(f"SELECT cash FROM users WHERE id = {member.id}").fetchone()[0]}** """,
                timestamp = ctx.message.created_at,
                color = discord.Colour.from_rgb(255, 69, 0)
            ))
  • Вопрос задан
  • 305 просмотров
Пригласить эксперта
Ответы на вопрос 1
JiMoon
@JiMoon
меня тут ненавидят, потому что я говнокодер.
Попробуйте создать отдельную переменную apples.
@bot.command()
async def яблоки(ctx, *, member: discord.Member):
    cash = cursor.execute(f"SELECT cash FROM users WHERE id = {member.id}").fetchone()[0]
    print(cash)
    apples = cursor.execute(f"SELECT cash FROM users WHERE id = {member.id}").fetchone()[0]
    connection.commit()
    await ctx.send(embed = discord.Embed(
                description = f"""Баланс пользователя **{member.mention}** составляет **{apples}** """,
                timestamp = ctx.message.created_at,
                color = discord.Colour.from_rgb(255, 69, 0)
            ))


P.S. Извините, на что вам переменная cash? вместо писанины в ctx.send используйте cash.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы