我如何让我的机器人对在加入后一段时间内收到警告的成员采取行动?discord.py



我想让我的discord.py bot对在设定时间内被警告的新成员采取行动;例如:如果用户加入并在加入后一小时内收到警告,他们将被踢出局。

我不需要踢腿命令或警告命令的帮助(我已经有了这些设置),我只需要一种方法来"监视"成员的第一组时间(一个小时,例如)。

提前感谢!

在warn命令中,您只需要检查它们是否在过去一小时内加入。当它们与member.joined_at结合时,可以得到datetime对象

例如:

from datetime import datetime, timedelta
@commands.command()
async def warn(self, ctx: commands.Context, user: discord.Member, *, reason: str):
# Check if they joined in the last hour
if datetime.utcnow() - user.joined_at < timedelta(hours=1):
return await user.kick()
# Otherwise, warn as usual
...

当你减去两个datetime对象时,你得到一个支持比较的timedelta对象。在这里,你可以检查两个datetimes之间的差异,如果不到一个小时,你可以直接踢它们。

如果你使用的是discord.py的最新分支,你需要使用discord.utils.utcnow()而不是datetime.utcnow(),因为datetime对象在discord.py 2.0中具有时区意识。