python - 为什么我的警告命令会删除 .json 文件中的所有内容?(discord.py)
问题描述
我的警告命令应该在 3 个警告后将成员静音一小时,但是当它使成员静音时,命令停止工作并且 .json 文件被清除。有谁知道为什么?
@client.command()
@commands.has_permissions(manage_roles = True)
async def warn(ctx, member : discord.Member, *, reason=None):
with open("warned_members.json", "r") as f:
warned_ones = json.load(f)
try:
with open("warned_members.json", "r") as f:
if warned_ones[str(member)] == 1 or 2 or 3:
pass
except:
with open("warned_members.json", "w") as f:
warned_ones[str(member)] = 1
json.dump(warned_ones, f, indent=5)
warn_embed = discord.Embed(title='Member Warned', description=f"{member} has been warned.")
warn_embed.add_field(name='Reason', value=f"{reason}")
await ctx.send(embed=warn_embed)
return
if warned_ones[str(member)] == 1:
warned_ones[str(member)] = 2
with open("warned_members.json", "w") as f:
json.dump(warned_ones, f, indent=5)
warn_embed = discord.Embed(title='Member Warned', description=f"{member} has been warned.")
warn_embed.add_field(name='Reason', value=f"{reason}")
await ctx.send(embed=warn_embed)
return
if warned_ones[str(member)] == 2:
try:
muted_role = discord.utils.get(ctx.guild.roles, name="Muted")
time = 3600
await member.add_roles(muted_role, reason=None, atomic=True)
warned_ones.pop(str(member))
with open("warned_members.json", "w") as f:
json.dump(warned_ones, f, indent=5)
warn_embed = discord.Embed(title='Member Muted', description=f"{member} has been muted for 1 hour.")
warn_embed.add_field(name='Reason', value=f"3 warns reached.")
await ctx.send(embed=warn_embed)
await asyncio.sleep(time)
except:
await ctx.send("Muted role not found")
解决方案
推荐阅读
- c# - 如何使用 xamarin 中的用户输入验证 sqlite 用户名和密码
- ruby - 如何对多维数组使用收集和包含
- reactjs - 跨多个应用共享通用 React Native 组件
- javascript - 警告:未知的事件处理程序属性“onHeaderClick”。会被忽略
- php - 如何检查数组键是否为空
- javascript - 如何根据弹性搜索的结果添加帖子字段
- android-studio - 版本控制中的 IntelliJ IDEA 差异
- typescript - 在 Angular 7 中找不到“属性名称”(编译时错误)
- c++ - 模拟对象未传递给其他类
- php - 如何在 laravel 5.7 中测试 mongo 连接?