【问题标题】:How to change only one value of a list from repl.it database?如何仅更改 repl.it 数据库中列表的一个值?
【发布时间】:2021-01-02 13:46:05
【问题描述】:

我正在尝试在 repl.it 上编写一个 Discord 游戏机器人,并使用它的数据库来存储玩家的数据。

所以我现在正在发出命令让玩家重命名自己,但是出现了问题。以下几行有效,但涉及影响整个 player_data 列表的新值,该列表存储每个玩家的数据:

renamer = player_id.index(message.author.id)
new_name = message.content[len(prefix)+7:]
player_data = db["player_data"]
player_data[renamer][0] = new_name
db["player_data"] = player_data
await message.channel.send('You successfully renamed yourself into '+new_name+'.')

所以我担心如果有人开始玩而另一个人正在更改他的昵称,“旧”player_data 会覆盖新的,其中包含新玩家的数据。

我想要类似于这些行的东西(不起作用)只更改相关玩家的数据:

renamer = player_id.index(message.author.id)
new_name = message.content[len(prefix)+7:]
db["player_data"][renamer][0] = new_name
await message.channel.send('You successfully renamed yourself into '+new_name+'.')

【问题讨论】:

    标签: python repl.it


    【解决方案1】:

    因此,由于我可以在 repl.it 数据库中创建许多密钥,因此我决定为每个玩家创建一个密钥,这些行无需获取其他玩家的数据即可工作:

    new_name = message.content[len(prefix)+7:]
    player_data = db["player_data"+str(message.author.id)]
    player_data[0] = new_name
    db["player_data"+str(message.author.id)] = player_data
    await message.channel.send('You successfully renamed yourself into '+new_name+'.')
    

    如果有人对最初的问题有解决方案,我仍然很感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      相关资源
      最近更新 更多