Top.Mail.Ru
Ответы

Ошибка в коде python discord.py

хз в чём дело. добавил в код переменную эвенты и команду для экономике так там вот эта ошибка

12345
   File "D:\Bots\Discord bot\bot.py", line 32 
    "id"  INT, 
    ^^^^^^^^^ 
SyntaxError: invalid syntax. Perhaps you forgot a comma? 
Для продолжения нажмите любую клавишу . . . 

Код: https://text-host.ru/bez-zagolovka-5475

По дате
По Рейтингу
Аватар пользователя
Новичок

Ошибка возникает из-за того, что в строке 32 вы использовали неправильный синтаксис при определении столбца таблицы БД. Вместо запятой после "id" нужно использовать двоеточие. То есть строка должна выглядеть так:

"id" INT:

Всего в вашем коде нужно исправить несколько мест, где вы ошиблись в синтаксисе определения столбцов таблицы. Ниже представлен исправленный код:

import discord
from discord.ext import commands
import sqlite3

client = commands.Bot(command_prefix = '!')
conn = sqlite3.connect("users.db")
cursor = conn.cursor()

@client.event
async def on_ready():
print('Logged on as', client.user)

cursor.execute("""CREATE TABLE IF NOT EXISTS users (
"id" INTEGER PRIMARY KEY,
"balance" INTEGER,
"xp" INTEGER,
"level" INTEGER
)""")

@client.event
async def on_message(message):
if message.author == client.user:
return

if message.content == 'ping':
await message.channel.send('pong')

await client.process_commands(message)

@client.command()
async def balance(ctx):
cursor.execute(f"SELECT balance FROM users WHERE id = {ctx.author.id}")
result = cursor.fetchone()

if result is None:
await ctx.send("You don't have an account yet. Type !register to create one.")
else:
await ctx.send(f"Your balance is {result[0]}")

@client.command()
async def register(ctx):
cursor.execute(f"SELECT id FROM users WHERE id = {ctx.author.id}")
result = cursor.fetchone()

if result is None:
cursor.execute(f"INSERT INTO users (id, balance, xp, level) VALUES ({ctx.author.id}, 0, 0, 1)")
conn.commit()
await ctx.send("Your account has been created successfully.")
else:
await ctx.send("You already have an account.")

@client.command()
async def add(ctx, amount: int):
cursor.execute(f"SELECT balance FROM users WHERE id = {ctx.author.id}")
result = cursor.fetchone()

if result is None:
await ctx.send("You don't have an account yet. Type !register to create one.")
else:
balance = result[0] + amount
cursor.execute(f"UPDATE users SET balance = {balance} WHERE id = {ctx.author.id}")
conn.commit()
await ctx.send(f"{amount} has been added to your balance. Your new balance is {balance}.")

@client.command()
async def level(ctx):
cursor.execute(f"SELECT level FROM users WHERE id = {ctx.author.id}")
result = cursor.fetchone()

if result is None:
await ctx.send("You don't have an account yet. Type !register to create one.")
else:
await ctx.send(f"Your level is {result[0]}")

client.run('token')

Аватар пользователя
Просветленный

Потому что ты скармливаешь питону sql код. Вот он и не понимает, что за ерунда написана