편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.09.26

    json 저장 코드를 2개를 넣으면 꼬입니다.


    Python에서 디스코드 봇을 만들고 있습니다.

    임시적으로 json 2개에 데이터를 저장하고 있습니다. 하지만, json 2개를 저장하려 하니, 한 json의 데이터가 다른 json 파일에도 똑같이 저장됩니다.

    이유를 모르겠어서 질문해봅니다.

    코드 :

    @bot.command()
    async def 매입(message,money=None):
        await open_account(message.channel.id,message.guild.owner_id)
        users = await get_bank_data()
        await open_user_account(message.author)
        userss = await get_user_data()
        userss[str(message.author.id)]["money"] -= int(money)
    
        users[str(message.channel.id)]["channel_sy"] = message.author.id
        users[str(message.channel.id)]["channel_m"] = int(money)
    
        with open('D:/Fishing_Bot/fishuser.json','w') as f:
            json.dump(users,f, indent=2)
         with open('D:/Fishing_Bot/fishmap.json','w') as f:
            json.dump(users,f, indent=2)
    
    # json
    
    async def open_account(chnname,user):
        users = await get_bank_data()
    
        if str(chnname) in users:
            return False
        else:
            users[str(chnname)] = {}
            users[str(chnname)]["channel_id"] = chnname
            users[str(chnname)]["channel_ji"] = random.choice(ji_roll)
            users[str(chnname)]["channel_ms"] = 0
            users[str(chnname)]["channel_m"] = 10000
            users[str(chnname)]["channel_sy"] = user
            users[str(chnname)]["channel_ssl"] = 3
            users[str(chnname)]["channel_ygb"] = 0
    
    
        with open("D:/Fishing_Bot/fishmap.json", "w", encoding='UTF-8') as f:
            users = json.dump(users, f, indent=2)
        return True
    
    
    async def get_bank_data():
        with open("D:/Fishing_Bot/fishmap.json", encoding='UTF-8') as f:
            users = json.load(f)
    
    
        return users
    
    async def open_user_account(user):
        userss = await get_user_data()
    
        if str(user.id) in userss:
            return False
        else:
            userss[str(user.id)] = {}
            userss[str(user.id)]["money"] = 0
    
    
        with open("D:/Fishing_Bot/fishuser.json", "w", encoding='UTF-8') as f:
            users = json.dump(userss, f, indent=2)
        return True
    
    
    async def get_user_data():
        with open("D:/Fishing_Bot/fishuser.json", encoding='UTF-8') as f:
            userss = json.load(f)
    
    
        return userss
    
  • 프로필 엽토군님의 편집
    날짜2021.09.26

    json 저장 코드를 2개를 넣으면 꼬입니다.


    Python에서 디스코드 봇을 만들고 있습니다.

    임시적으로 json 2개에 데이터를 저장하고 있습니다. 하지만, json 2개를 저장하려 하니, 한 json의 데이터가 다른 json 파일에도 똑같이 저장됩니다.

    이유를 모르겠어서 질문해봅니다.

    코드 :

    @bot.command()
    async def 매입(message,money=None):
        await open_account(message.channel.id,message.guild.owner_id)
        users = await get_bank_data()
        await open_user_account(message.author)
        userss = await get_user_data()
        userss[str(message.author.id)]["money"] -= int(money)
    
        users[str(message.channel.id)]["channel_sy"] = message.author.id
        users[str(message.channel.id)]["channel_m"] = int(money)
    
        with open('D:/Fishing_Bot/fishuser.json','w') as f:
            json.dump(users,f, indent=2)
         with open('D:/Fishing_Bot/fishmap.json','w') as f:
            json.dump(users,f, indent=2)
    
    async def open_account(chnname,user):
        users = await get_bank_data()
    
        if str(chnname) in users:
            return False
        else:
            users[str(chnname)] = {}
            users[str(chnname)]["channel_id"] = chnname
            users[str(chnname)]["channel_ji"] = random.choice(ji_roll)
            users[str(chnname)]["channel_ms"] = 0
            users[str(chnname)]["channel_m"] = 10000
            users[str(chnname)]["channel_sy"] = user
            users[str(chnname)]["channel_ssl"] = 3
            users[str(chnname)]["channel_ygb"] = 0
    
    
        with open("D:/Fishing_Bot/fishmap.json", "w", encoding='UTF-8') as f:
            users = json.dump(users, f, indent=2)
        return True
    
    
    async def get_bank_data():
        with open("D:/Fishing_Bot/fishmap.json", encoding='UTF-8') as f:
            users = json.load(f)
    
    
        return users
    
    async def open_user_account(user):
        userss = await get_user_data()
    
        if str(user.id) in userss:
            return False
        else:
            userss[str(user.id)] = {}
            userss[str(user.id)]["money"] = 0
    
    
        with open("D:/Fishing_Bot/fishuser.json", "w", encoding='UTF-8') as f:
            users = json.dump(userss, f, indent=2)
        return True
    
    
    async def get_user_data():
        with open("D:/Fishing_Bot/fishuser.json", encoding='UTF-8') as f:
            userss = json.load(f)
    
    
        return userss
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.09.26

    json 저장 코드를 2개를 넣으면 꼬입니다.


    Python에서 디스코드 봇을 만들고 있습니다.

    임시적으로 json 2개에 데이터를 저장하고 있습니다. 하지만, json 2개를 저장하려 하니, 한 json의 데이터가 다른 json 파일에도 똑같이 저장됩니다.

    이유를 모르겠어서 질문해봅니다.

    코드 :

    @bot.command()
    async def 매입(message,money=None):
        await open_account(message.channel.id,message.guild.owner_id)
        users = await get_bank_data()
        await open_user_account(message.author)
        userss = await get_user_data()
        userss[str(message.author.id)]["money"] -= int(money)
    
        users[str(message.channel.id)]["channel_sy"] = message.author.id
        users[str(message.channel.id)]["channel_m"] = int(money)
    
        with open('D:/Fishing_Bot/fishuser.json','w') as f:
            json.dump(users,f, indent=2)
         with open('D:/Fishing_Bot/fishmap.json','w') as f:
            json.dump(users,f, indent=2)
    

    open_account, get_bank_data, open_user_account, get_user_data

    async def open_account(chnname,user):
        users = await get_bank_data()
    
        if str(chnname) in users:
            return False
        else:
            users[str(chnname)] = {}
            users[str(chnname)]["channel_id"] = chnname
            users[str(chnname)]["channel_ji"] = random.choice(ji_roll)
            users[str(chnname)]["channel_ms"] = 0
            users[str(chnname)]["channel_m"] = 10000
            users[str(chnname)]["channel_sy"] = user
            users[str(chnname)]["channel_ssl"] = 3
            users[str(chnname)]["channel_ygb"] = 0
    
    
        with open("D:/Fishing_Bot/fishmap.json", "w", encoding='UTF-8') as f:
            users = json.dump(users, f, indent=2)
        return True
    
    
    async def get_bank_data():
        with open("D:/Fishing_Bot/fishmap.json", encoding='UTF-8') as f:
            users = json.load(f)
    
    
        return users
    
    async def open_user_account(user):
        userss = await get_user_data()
    
        if str(user.id) in userss:
            return False
        else:
            userss[str(user.id)] = {}
            userss[str(user.id)]["money"] = 0
    
    
        with open("D:/Fishing_Bot/fishuser.json", "w", encoding='UTF-8') as f:
            users = json.dump(userss, f, indent=2)
        return True
    
    
    async def get_user_data():
        with open("D:/Fishing_Bot/fishuser.json", encoding='UTF-8') as f:
            userss = json.load(f)
    
    
        return userss