mckruasan
@mckruasan
Junior Python, Html, CSS

Как разделить БД дискорд бота под разные сервера?

Доброго времени суток, делаю своего бота с экономикой и задался вопросом: Как разделить БД дискорд бота под разные сервера? То есть, если я выдам себе баланс на одном сервере, ну другом он должен оставаться нулевым. Прошу помощи, т.к. я еще плохо знаю БД.

Код:
import discord
from discord.ext import commands
import sqlite3

intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix='m.', intents=intents)

connection = sqlite3.connect('server.db')
cursor = connection.cursor()

@bot.event
async def on_ready():
    cursor.execute("""CREATE TABLE IF NOT EXISTS users (
        name TEXT,
        id INT,
        cash BIGINT
    )""")
    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)")
            else:
                pass
    
    connection.commit()
    print('DB connected!')

@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)")
    else:
        pass
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
В таблицу добавить ключевое поле GUILD_ID
Соответственно запрос изменится на:
select = '''SELECT * FROM "users" WHERE id = %s AND guild_id = %s'''
cur.execute(select, (member.id, guild.id))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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