Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Discord.py:如何为某人是否静音提取布尔值_Python_Json_Python 3.x_Discord_Discord.py - Fatal编程技术网

Python Discord.py:如何为某人是否静音提取布尔值

Python Discord.py:如何为某人是否静音提取布尔值,python,json,python-3.x,discord,discord.py,Python,Json,Python 3.x,Discord,Discord.py,最近,我一直在为一个特定的discord服务器开发bot。在服务器中,我观察到,如果关闭正在运行的脚本,然后再次运行它,先前插入的数据将被删除,这是我不希望发生的事情。它会导致各种各样的错误发生 我的机器人使某人静音的方式是指定一个角色名:Muted。此角色具有发布消息和加入禁用的VCs的权限。因此,当主持人要求时,我的机器人会提供这个角色 我有一个tempmuet命令,它会在特定时间使某人静音,但是如果机器人关闭,那么计时器也会重置,其他许多事情也会发生同样的情况。就像有一个列表,我使用命令将

最近,我一直在为一个特定的discord服务器开发bot。在服务器中,我观察到,如果关闭正在运行的脚本,然后再次运行它,先前插入的数据将被删除,这是我不希望发生的事情。它会导致各种各样的错误发生

我的机器人使某人静音的方式是指定一个角色名:Muted。此角色具有发布消息和加入禁用的VCs的权限。因此,当主持人要求时,我的机器人会提供这个角色

我有一个
tempmuet
命令,它会在特定时间使某人静音,但是如果机器人关闭,那么计时器也会重置,其他许多事情也会发生同样的情况。就像有一个列表,我使用命令将成员添加到其中。但是一旦机器人重启,它也会被重置

我希望您能帮助我如何将数据存储在JSON文件中,我将在其中插入每个成员的数据。以下是我想要保存的东西:

  • 姓名:
  • 静音:真/假(我不知道!)
  • 禁止:真/假(我不知道!)
  • 静音时间:(我对此不确定!)
  • 禁赛时间:(我对此不确定!)
  • 最后信息:
我加了笔记的东西是我不知道的。请让我知道我怎样才能在这里做我想做的事。任何帮助都将不胜感激

指向我的代码的链接是:


谢谢!:)

要发出命令,我们需要一些参数。我们需要的信息是:用户将被静音以及用户将被静音的时间。根据您的要求,我将执行一个命令过程,将上述信息存储在JSON文件中,并为用户提供“静音”角色。我将把倒计时和删除“静音”角色留给您。过程非常相似

因此,首先在与脚本相同的目录中创建一个JSON文件。我把我的名字命名为“mute.json”。该文件必须包含以下内容:

{
“用户”:[
]
}
然后创建命令,传入所需参数并加载JSON文件

@bot.command()
异步def tempmute(ctx,成员:discord.member,时间:int):
将open('mute.json')作为f:
data=json.load(f)
现在我们需要检查用户是否已经在我们的JSON文件中。为此,我们遍历文件中已经存在的所有用户,并将其ID附加到列表中。然后我们检查用户是否在该列表中。如果他不在我们的文件中,我们会将一个包含他的信息的对象添加到“users”数组中

所有用户=[]
对于数据中的用户['users']:
所有用户。追加(用户['id'])
如果所有用户中都有member.id:
其他:
数据[“用户”]。追加({“id”:member.id,“mute”:True,“banked”:False,“mute_time”:time,“ban_time”:0,“last_message”:“”)
注意:我使用用户的ID来引用他。这种方式比使用他的名字要好,因为与id不同,它可以更改

接下来,我们需要检查文件中的用户是否与指定的用户匹配

如果member.id==user['id']:
现在我们检查用户是否已经静音。如果他不在,我们就让他哑口无言,并定义哑口无言的时间。这是我们将给用户“静音”角色的部分

如果用户['muted']==False:
用户['muted']=True
用户['mute_time']=时间
mute_role_id=member.guild.get_role(99999999999999)#将其更改为“mute”角色id
等待成员。添加角色(静音角色\u id)
现在我们已经对JSON文件进行了更改,并将角色赋予了用户,我们必须保存更改

以open('mute.json','w')作为f的
:
dump(数据,f,缩进=2)
最后的完整命令如下所示:

@bot.command()
异步def tempmute(ctx,成员:discord.member,时间:int):
将open('mute.json')作为f:
data=json.load(f)
所有用户=[]
对于数据中的用户['users']:
所有用户。追加(用户['id'])
如果所有用户中都有member.id:
对于数据中的用户['users']:
如果member.id==user['id']:
如果用户['muted']==False:
用户['muted']=True
用户['mute_time']=时间
mute_role_id=member.guild.get_role(99999999999)
等待成员。添加角色(静音角色\u id)
其他:
mute_role_id=member.guild.get_role(99999999999)
等待成员。添加角色(静音角色\u id)
数据[“用户”]。追加({“id”:member.id,“mute”:True,“banked”:False,“mute_time”:time,“ban_time”:0,“last_message”:“”)
将open('mute.json','w')作为f:
dump(数据,f,缩进=2)
您可以修改和调整值,使其成为“禁止”命令。
我希望我能帮忙

您是否用分钟计算时间?您想用静音实现什么功能?命令是否应该给他们一个“静音”角色,剥夺他们发布消息或说话的能力?或者当他们加入语音频道时,它应该让他们静音吗?@captangreyes时间单位为
:)@CaptAngryEyes同样,这里的
静音功能是:1。无法发送消息2。无法加入语音频道3。如果已在频道中,则无法发言。我的命令为成员提供了一个名为:
Muted
的角色,该角色不允许成员使用这些内容。您可以编辑帖子以包含此信息吗?我尝试了此代码。但是当我执行它的时候,什么都没发生。你有错误吗?这就是问题所在。没有错误。它什么也不做。使用这个代码。这是我创建的命令:在第一个“for”循环中添加一个“print”语句并打印“all_users”。上面说什么?