Этот вопрос закрыт для ответов, так как повторяет вопрос Как ввести мультисерверную экономику в бота?
LifeGameYT
@LifeGameYT
UE | Developer

Как сделать разный баланс на разных серверах в Discord?

У меня есть бот в дискорде, у него есть команда !balance что бы посмотреть баланс. Балансы пользователей хранятся в wallets.json, дак вот как сделать что бы баланс одного пользователя был другим на другом сервере?

Код просмотра баланса и записи:
async def get_user_wallet(user_id):
    user_id = str(user_id)

    with open("wallets.json", "r") as file:
        users_wallets = json.load(file)

    if user_id not in users_wallets.keys():
        users_wallets[user_id] = WALLET_DEFAULT

    with open("wallets.json", "w") as file:
        json.dump(users_wallets, file)

    return users_wallets[user_id]

async def set_user_wallet(user_id, parameter, new_value):
    user_id = str(user_id)

    with open("wallets.json", "r") as file:
        users_wallets = json.load(file)

    if user_id not in users_wallets.keys():
        users_wallets[user_id] = WALLET_DEFAULT

    users_wallets[user_id][parameter] = new_value

    with open("wallets.json", "w") as file:
        json.dump(users_wallets, file)

@bot.command()
async def balance(ctx):
    user_wallet = await get_user_wallet(ctx.author.id)
    await ctx.send(f"** Ваш баланс**: {user_wallet['balance']}")
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
AlexNest
@AlexNest
Работаю с Python/Django
Вариант 1 [ОПТИМАЛЬНЫЙ]: Хранить баланс в базе данных, в отдельной таблице, содержащей внешние ключи к пользователю и серверу соответственно.
Вариант 2 [ПЛОХОЙ]: В качестве ключей "верхнего уровня" использовать id сервера. И уже внутри массива, относящегося к этому ключу, хранить баланс.
Второй вариант плохой потому, что вы работаете с файлами в асинхронном боте, работать с которым, в теории, одновременно могут работать несколько пользователей.
Ответ написан
Ответы на вопрос 1
fenrir1121
@fenrir1121 Куратор тега discord.py
Начни с документации
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы