要执行您的命令,我们需要一些参数。我们需要的信息是:要静音的用户和静音的时间。根据您的要求,我将完成创建命令以将上述信息存储在 JSON 文件中并为用户提供“静音”角色的过程。我将让您倒计时并删除“静音”角色。过程非常相似。
所以首先在与您的脚本相同的目录中创建一个 JSON 文件。我将我的命名为“mute.json”。该文件必须包含以下内容:
{
"users": [
]
}
然后创建命令,传入所需的参数并加载 JSON 文件。
@bot.command()
async def tempmute(ctx, member : discord.Member, time : int):
with open('mute.json') as f:
data = json.load(f)
现在我们需要检查用户是否已经在我们的 JSON 文件中。为此,我们遍历文件中已有的所有用户并将他们的 ID 附加到列表中。然后我们检查用户是否在该列表中。如果他不在我们的文件中,我们将带有他的信息的对象添加到“用户”数组中。
all_users = []
for user in data['users']:
all_users.append(user['id'])
if member.id in all_users:
else:
data["users"].append({"id":member.id, "muted":True, "banned":False, "mute_time":time, "ban_time":0, "last_message": ""})
注意:我使用用户 ID 来引用他。这种方式比使用他的名字更好,因为它与 id 不同,可以更改。
接下来,我们需要检查文件中的用户是否与我们指定的用户匹配。
if member.id == user['id']:
现在我们检查用户是否已经静音。如果他不是,我们将他静音并定义静音时间。这是我们将赋予用户“静音”角色的部分。
if user['muted'] == False:
user['muted'] = True
user['mute_time'] = time
mute_role_id = member.guild.get_role(9999999999999999) # Change this to the "Muted" role ID
await member.add_roles(mute_role_id)
现在我们已经对 JSON 文件进行了更改并将角色分配给了用户,我们必须保存更改。
with open('mute.json', 'w') as f:
json.dump(data, f, indent=2)
所以最终的完整命令如下所示:
@bot.command()
async def tempmute(ctx, member : discord.Member, time : int):
with open('mute.json') as f:
data = json.load(f)
all_users = []
for user in data['users']:
all_users.append(user['id'])
if member.id in all_users:
for user in data['users']:
if member.id == user['id']:
if user['muted'] == False:
user['muted'] = True
user['mute_time'] = time
mute_role_id = member.guild.get_role(9999999999999999)
await member.add_roles(mute_role_id)
else:
mute_role_id = member.guild.get_role(9999999999999999)
await member.add_roles(mute_role_id)
data["users"].append({"id":member.id, "muted":True, "banned":False, "mute_time":time, "ban_time":0, "last_message": ""})
with open('mute.json', 'w') as f:
json.dump(data, f, indent=2)
您也可以修改和调整值以使其成为“禁止”命令。
希望能帮上忙!