Python 使用cog discord.py获取错误

Python 使用cog discord.py获取错误,python,python-3.x,discord,discord.py,Python,Python 3.x,Discord,Discord.py,嗨,我目前得到一个cog的功能,以防止垃圾邮件的错误。 这就是我得到的错误 文件“C:\Users\User\Documents\stream\cogs\spamdetect.py”,第19行,on\u member\u join 上次重置=datetime.strtime(self.settings[server.id][“自上次重置以来的时间],%Y-%m-%d%H:%m:%S.%f”) TypeError:strTime()参数1必须是str,而不是None 我不确定是什么导致了这个错误

嗨,我目前得到一个cog的功能,以防止垃圾邮件的错误。 这就是我得到的错误

文件“C:\Users\User\Documents\stream\cogs\spamdetect.py”,第19行,on\u member\u join
上次重置=datetime.strtime(self.settings[server.id][“自上次重置以来的时间],%Y-%m-%d%H:%m:%S.%f”)
TypeError:strTime()参数1必须是str,而不是None

我不确定是什么导致了这个错误,齿轮似乎工作了一段时间,然后现在它抛出了这个错误

这就是我的工作

导入异步IO
导入操作系统
进口不和
从日期时间导入日期时间
从_main _导入发送_cmd _帮助,设置
从discord.ext导入命令
从.utils导入检查
from.utils.dataIO导入dataIO
类反援助():
“”“提醒员工可能会有袭击事件”“”
def uuu init uuuu(自我,机器人):
self.bot=bot
self.settings=dataIO.load_json(“data/anti_raid/settings.json”)
成员加入时的异步定义(自身、成员):
server=member.server
上次重置=datetime.strtime(self.settings[server.id][“自上次重置以来的时间],%Y-%m-%d%H:%m:%S.%f”)
重置时间=(datetime.now()-上次重置)。总秒数()
如果重置时间>30:
self.settings[server.id][“join_count”]=0
self.settings[server.id][“自上次重置以来的时间”]=str(datetime.now())
save_json(“data/lockdown/settings.json”,self.settings)
如果self.settings[server.id][“join_count”]如果(self.settings[server.id][“join_count”]>=self.settings[server.id][“max_joins”])并从设置中存储的代码中重置此行
None

  if "time_since_last_reset" not in self.settings[server.id]:
    self.settings[server.id]["time_since_last_reset"] = None
然后某个玩家加入了,你得到了错误,因为你试图解析的时间是零

有许多解决方案,最简单的是:

if self.settings[server.id]["time_since_last_reset"] is None:
   reset_time = 999 # a big number to trigger the timeout now
else:
   last_reset = datetime.strptime(self.settings[server.id]["time_since_last_reset"], "%Y-%m-%d %H:%M:%S.%f")
   reset_time = (datetime.now() - last_reset).total_seconds()

@DaveOnley错误在于,您试图将
None
转换为日期,如果self.settings[server.id][“time\u since\u last\u reset”]为None,则只需添加一个检查
:在发生错误的行周围添加
以保护它,以便在
None
时python不会尝试转换它。这就是我在\u member\u join上添加它的方式(self,member):server=member.server如果self.settings[server.id][“自上次重置以来的时间”]为None:reset\u time=999#现在触发超时的一个大数字否则:last\u reset=datetime.strtime(self.settings[server.id][“自上次重置以来的时间”],%Y-%m-%d%H:%m:%S.%f”)reset\u时间=(datetime.now()-最后一次重置)。总秒数()如果重置时间>30:
现在cog不起作用了我在这里做错了什么?