这会变得有点复杂,但让我一步一步来。这可能会有点令人困惑,但是
逐步方法存储谁禁止了会员
第 1 步:创建 JSON 文件并在其中添加一个空字典。
JSON 文件将用于将数据保存到 JSON 文件中,因为当机器人重新启动时,收集的资源将被删除。因此,通过将此信息添加到 JSON 文件,我们将永久保存它。我们可以从 JSON 文件中添加和提取数据,因此在这里会有所帮助。
创建一个任意名称的文件。我正在制作:moderationinfo.json
现在添加这段代码:
{
"ban-mod": [
]
}
第 2 步:创建 Ban 命令并将用户数据添加到 JSON 文件中。
该命令将禁止成员并将信息上传到 JSON 文件中。然后,我们将使用我将在下面解释的另一个命令从 JSON 文件中提取数据。
禁止命令:
@mybot.command()
@commands.has_permissions(manage_roles=True, kick_members=True, ban_members=True)
async def ban(ctx, member : discord.Member, *, reason):
with open("moderationinfo.json") as f:
data = json.load(f)
all_users = []
for user in data['ban-mod']:
all_users.append(user['banned-member-id'])
if member.id in all_users:
for user in data['ban-mod']:
if member.id == user['banned-member-id']:
if user['moderator'] == str(ctx.author):
user['banned-member'] = str(member.name)
await member.ban(reason=reason)
await ctx.channel.send(f'{member.mention} banned successfully by {ctx.author.name}!')
else:
await member.ban(reason=reason)
await ctx.channel.send(f'{member.mention} banned successfully by {ctx.author.name}')
data["ban-mod"].append({"banned-member-id": member.id, "moderator": str(ctx.author), "banner-member": str(member.name)})
with open("moderationinfo.json", 'w') as f:
json.dump(data, f, indent=2)
我认为被禁止用户的 ID 是一个重要值,因为它对每个人都是唯一的。因此,代码首先检查条目是否存在。如果不是,它会创建一个列表,如果是,则将值附加到它。
相加的值为:banned-member-id、moderator、banned-member 和 time。
可以从这个答案中获取更多信息:
Discord.py: How to extract a Boolean value for if someone is muted or not
我曾针对 tempmute 提出过这个问题,但 JSON 的工作是相同的。所以大家可以参考一下。
第 3 步:创建 banchart 函数以从 JSON 文件中提取值。
我们将创建一个函数,然后提取特定值并将其嵌入到消息中,然后打印它。该命令将显示我们想要的数据。
BANCHART 函数:
@mybot.command()
@commands.has_permissions(manage_roles=True, kick_members=True, ban_members=True)
async def banchart(ctx):
with open("moderationinfo.json") as f:
data = json.load(f)
await ctx.channel.send(f'The banchart shows:')
for user in data['ban-mod']:
moderator = user['moderator']
banned_member = user['banned-member']
date = user['time']
await ctx.channel.send(f"The moderator, **{moderator}** banned the user, **{banned_member}** on **{date}**")
此命令非常适合您想要执行的操作。
这就是你所要做的。
一些图片来解释这些步骤:
1。执行 BAN 命令和确认消息。
2。带有我们信息的 BANCHART 命令。
3。 JSON 文件中的数据。
我希望我能够解释我的工作,如果您仍有任何问题,请随时问我任何问题。 :)
谢谢! :D