Discord Bot с экономикой, как сделать разную базу данных json для разных серверов?

Сделал Discord-бота с экономикой, в качестве базы данных использую привязанный к коду json файл. Друг увидел моего бота и захотел тоже его к себе на сервер. Но если кто-то на его сервере вводит команду shop (открывающую магазин с ролями) - открывается магазин с ролями моего сервера, которых у друга на его сервере нет. Также общий и счёт пользователей на обоих серверах (но против этого я ничего не имею против). Помогите, пожалуйста, сделать персональный shop для каждого сервера.


Ответы (1 шт):

Автор решения: denisnumb

У вас наверняка json-файл вашего сервера имеет какое-то название.

Вы можете создать для второго сервера другой файл с его данными и ролями, а затем сделать для обоих файлов названия в формате <id сервера>.json

Затем, при вызове команды shop из контекста получайте id сервера и открывайте соответствующий файл.

Например:

@bot.command()
async def shop(ctx):
    server_id = ctx.guild.id # получили id сервера
    json_file = open(f'{server_id}.json', 'r')
    data = json.loads(json_file.read())
    json_file.close()

В данном случае, в data будут считаны данные соответствующего сервера

→ Ссылка