Discord.py 点未加载到 json 中
Posted
技术标签:
【中文标题】Discord.py 点未加载到 json 中【英文标题】:Discord.py points not loading into json 【发布时间】:2021-04-24 11:03:47 【问题描述】:我正在尝试为我的不和谐创建一个 python 点系统,并且已经理顺了所有错误和主要代码。现在, 如果有人能就如何解决这个问题提供一些见解/资源,那将非常非常感激!谢谢。import discord
import json
import os
from discord.ext import commands
from googlesearch import search
os.chdir(r"C:\Users\name")
client = commands.Bot(command_prefix="<")
#Bot is online
@client.event
async def on_ready():
general_chat = client.get_channel(#)
await general_chat.send("Music Feedback is online.")
@client.event
async def on_member_join(member):
with open ("MF Points.json", "r") as f:
users = json.load(f)
await update_data(users, member)
with open("MF Points.json", "w") as f:
json.dump(users, f)
@client.event
async def on_message(message):
with open ("MF Points.json", "r") as f:
users = json.load(f)
await update_data(users, message.author)
await add_points_to_json(users, message.author, message)
await use_points_from_json(users, message.author, message)
with open("MF Points.json", "w") as f:
json.dump(users, f)
async def update_data(users, user):
if not user.id in users:
users[user.id] =
users[user.id]["points"] = 0
async def add_points_to_json(users, user, message):
if message.content.startswith("<MFR"):
points = users[user.id]["points"]
user_points = points + 1
await message.channel.send(f"You have gained 1 MF point. You now have user_points MF points.")
with open("MF Points.json", "w") as f:
json.dump(users, f)
async def use_points_from_json(users, user, message):
if message.content.startswith("<MFS"):
points = users[user.id]["points"]
used_user_points = points - 1
if users[user.id]["points"] <= 0:
await message.channel.send("You do not have any MF points.")
elif users[user.id]["points"] >= 0:
await message.channel.send(f"You have used 1 MF point. You now have used_user_points MF points.")
with open("MF Points.json", "w") as f:
json.dump(users, f)
【问题讨论】:
如果您实际上没有使用@bot.command
创建命令,为什么还要使用discord.ext.commands
?如果您要检查每条消息上的startswith
,这是一个无用的导入。
我为我遗漏的代码编写了更多内容 :-) 以及 from googlesearch import search
【参考方案1】:
您的问题是一个非常简单的问题。在 add_points_to_json 上,您必须编辑用户对象。你做不到。您有一个空变量 user_points
,它不会保存在任何地方。
users[user.id]["points"] = user_points
会解决这个问题。
async def add_points_to_json(users, user, message):
if message.content.startswith("<MFR"):
points = users[user.id]["points"]
user_points = points + 1
await message.channel.send(f"You have gained 1 MF point. You now have user_points MF points.")
users[user.id]["points"] = user_points
with open("MF Points.json", "w") as f:
json.dump(users, f)
【讨论】:
谢谢!但我无法准确理解您所说的内容。 刚刚试了一下,并没有抛出任何错误,但是当我尝试以上是关于Discord.py 点未加载到 json 中的主要内容,如果未能解决你的问题,请参考以下文章
我的 cogs 文件没有加载到我的主文件中 (discord.py)
如何从 api 获取 json 数据并将其以嵌入形式发送到 discord.py 中?