В вашем коде есть несколько синтаксических и логических ошибок. Вот основные проблемные места, которые необходимо исправить:
1. **Ошибка в строке создания объекта `Bot`:**
Вы используете неправильный синтаксис для доступа к элементам словаря. Вместо фигурных скобок `{}` нужно использовать квадратные скобки `[]`.
Исправьте эту строку:
```python
client = commands.Bot(command_prefix=settings['PREFIX'])
```
2. **Лишняя запятая в определении таблицы:**
В SQL-запросе создания таблицы `users` есть лишняя запятая перед закрывающей скобкой. Уберите её:
```python
cursor.execute("""CREATE TABLE IF NOT EXISTS users(
name TEXT,
id INT,
cash BIGINT,
rep INT,
lvl INT
)""")
```
3. **Использование `discord.member`:**
В функции `__balance` вы используете `discord.member`, но должно быть `discord.Member` (с заглавной буквы):
```python
async def __balance(ctx, member: discord.Member = None):
```
4. **Не завершённое выражение `if`:**
В функции `__balance` у вас есть строка `if`, после которой ничего нет. Вы должны завершить это выражение или удалить его, если это ошибка.
Например, вы можете добавить подходящее условие, например:
```python
if member is None:
member = ctx.author
```
Вот исправленный код с учётом вышеперечисленных замечаний:
```python
import discord
from discord.ext import commands
import sqlite3
from config import settings
intents = discord.Intents.all()
client = commands.Bot(command_prefix=settings['PREFIX'])
client.remove_command('help')
connection = sqlite3.connect('server.db')
cursor = connection.cursor()
@client.event
async def on_ready():
cursor.execute("""CREATE TABLE IF NOT EXISTS users(
name TEXT,
id INT,
cash BIGINT,
rep INT,
lvl INT
)""")
connection.commit()
for guild in client.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, 0, 1)")
connection.commit()
print('Bot connected')
@client.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, 0, 1)")
connection.commit()
@client.command(aliases=['balance', 'cash'])
async def __balance(ctx, member: discord.Member = None):
if member is None:
member = ctx.author
# Здесь добавьте логику для получения баланса пользователя (например, запрос к базе данных и отправка ответа)
```
После внесения этих правок, ваш код должен работать корректно. Убедитесь также, что у вас корректно настроен `settings` и другие модули.