我发现了自己:
这是将信息保存到 Dict 和 Json 文件的代码(将其保存为 storage.py 以保持机器人正常工作)
import json
replist = {}
def Handle(Name, action, varname = None, data = None):
if action == "add":
o = checkInfo(Name, varname)
if o == "Error":
addentry(Name)
addInfo(Name, varname, data)
else:
addInfo(Name, varname, data)
elif action == "check":
o = checkInfo(Name, varname)
if o == "Error":
return "User doesnt exist in database"
else:
return o
def savetojson(dict):
with open('varStorage.json', 'w') as fp:
json.dump(dict, fp)
def loadfromjson():
try:
with open('varStorage.json') as json_file:
global replist
replist = json.load(json_file)
except json.decoder.JSONDecodeError:
addentry("Placeholder")
def addInfo(Name, varN, data):
loadfromjson()
if Name in replist:
replist[Name][varN] = data
savetojson(replist)
else:
return "Error"
def checkInfo(Name, varN):
loadfromjson()
try:
return replist[Name][varN]
except:
return "Error"
def addentry(Name):
replist[Name] = {}
savetojson(replist)
return "done"
您可以像这样在您的机器人(或其他任何地方)中调用它:
import discord, discord.utils
from discord.utils import get
from discord.ext import commands
import storage
client = commands.Bot(command_prefix= "+")
@client.event
async def on_ready():
print("Ready!")
@client.command()
async def changeStuff(ctx, name, data):
name = str(name)
data = str(data)
gid = ctx.guild.id
gid = str(gid)
storage.Handle(gid, "add", name, data)
await ctx.send("changed")
@client.command()
async def checkStuff(ctx, tocheck):
gid = ctx.guild.id
gid = str(gid)
outl = storage.Handle(gid, "check", tocheck)
await ctx.send(outl)
client.run("yourToken")
第一部分来自我不久前制作的一个机器人:https://github.com/Lulonaut/Discordrepbot/blob/master/Functions/storage.py(稍作修改)
希望这对某人有所帮助,即使没有,至少它对我有所帮助:D