heroku 与www.example.com产生不一致的bot时发生“TypeError:”datetime.datetime“对象不可调用”discord.py

9jyewag0  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(112)

我试图让机器人踢球员谁的作用了一个星期,但我得到一些错误。
第一个
我已经在stackoverflow中尝试了一些相关的答案,比如TypeError: 'module' object is not callableTypeError: 'datetime.datetime' object is not callable,但是没有任何效果,也许是因为这是我第一次使用python?
对不起,我的英语不好,但我需要一些帮助。

  • 编辑-
    我的第一个代码是
@bot.event
async def on_member_update(before, after):
    if len(before.roles) < len(after.roles):
        new_role = next(role for role in after.roles if role not in before.roles)
        guild = bot.get_guild(*something*)
        if '.• 미인증 유저' in new_role.name:
            role_name1 = ".• 미인증 유저"
            role1 = discord.utils.get(guild.roles, name=role_name1)
            await asyncio.sleep(604800)
            timenow = datetime.now
            max_join_time_1 = timenow() - timedelta(weeks=1)
            log_channel = bot.get_channel(*something*)
            if after in role1.members and after.joined_at < max_join_time_1:
                await after.kick(reason="일주일동안 인증하지 않으셨습니다.")
                
                embed = discord.Embed(title="강퇴",
                                      colour=0xB11B1B,
                                      timestamp=datetime.now())
                              
                embed.set_thumbnail(url=after.avatar_url)
                
                fields = [("이름", f"{after.name}", False),
                          ("사유", f"7일간 미인증으로 머물러 강퇴당함.", False)]
                          
                for name, value, inline in fields:
                    embed.add_field(name=name, value=value, inline=inline)
                    
                await log_channel.send(embed=embed)
            else:
                pass
        else:
            pass

但后来我有了

TypeError: can’t compare offset-naive and offset-aware datetimes

错误,所以我将两个时区都固定为UTC。
首先,当我在我的电脑上运行它时,它工作得很好,只有当我将它上传到Heroku时,它才有错误。
但是编辑之后我也不能用我的电脑运行它。

g0czyy6m

g0czyy6m1#

问题就在这里:

timenow = datetime.now(timezone.utc)
max_join_time_1 = timenow() - timedelta(weeks=1)
#                        ^^

您创建了一个名为timenowdatetime对象,然后尝试在下一行调用它。
删除括号:

timenow = datetime.now(timezone.utc)
max_join_time_1 = timenow - timedelta(weeks=1)
zfciruhq

zfciruhq2#

在我的情况下,有一个datetime.py存在于我的活动python文件的同一目录中。

相关问题