保存/存储数据 discord.py

Saving / storing data discord.py

我正在尝试使用 discord.py 制作游戏。 我需要一种方法来保存数据 所以..当我停止机器人并再次运行时,数据不会消失

这是我当前的代码:

async def token():
  global counter
  counter = 0
  while True:
    await asyncio.sleep(5)
    counter += 1

@client.event
async def on_message(message):

  if message.content.startswith('check'):
    await message.channel.send(counter)

client.loop.create_task(token())

这个问题的答案取决于你的 python 程序关闭的方式,如果你关闭它 'the normal way' 一个 try-finally 循环就可以了。像这样:

with open('counter.txt', 'r') as f:
    counter = int(f.readline())
try:
    client.run(TOKEN)
finally:
    with open('counter.txt', 'w') as f:
        f.write(counter)

但是,如果您 'kill' finally 部分可能不存在的程序 运行,解决此问题的方法是使用包含 client.close()

另一种方法是修改您的计数器函数,以便它在更改时始终保存当前计数器

async def token():
  global counter
  counter = 0
  while True:
    await asyncio.sleep(5)
    counter += 1
    with open('counter.txt', 'w') as f:
        f.write(counter)

另请注意,由于您的程序现在将计数器设置为 0,因此您也需要添加加载值 (this:)

with open('counter.txt', 'r') as f:
    counter = int(f.readline())

当然,如果你不只是想保存一个简单的计数器,你将不得不使用jsonpickle,但方法保持不变