Ошибка в коде python discord.py
хз в чём дело. добавил в код переменную эвенты и команду для экономике так там вот эта ошибка
File "D:\Bots\Discord bot\bot.py", line 32
"id" INT,
^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
Для продолжения нажмите любую клавишу . . .
Ошибка возникает из-за того, что в строке 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 код. Вот он и не понимает, что за ерунда написана