我怎么能得到一个不带CTX的Discord.py时间戳?



我正在制作一个Discord bot。它的功能之一是在日志通道中记录成员的离开和进入。on_member_join和on_member_remove事件只接受成员参数。我想知道如何把时间戳在我的嵌入没有ctx。我知道这是可能的,我只是不知道怎么做。

您可以通过datetime获得当前时间,为此您只需导入一个模块。如果你在嵌入中发布整个内容,你可以这样做:

import datetime # 1
from datetime import datetime # 2
@commands.Cog.listener / @client.event / @bot.event
async def on_member_join
embed = discord.Embed(timestamp=datetime.utcnow())

如果你想发送这些类型的消息,你必须定义一个通道,因为ctx.send将无法工作,所以不如选择:

@commands.Cog.listener / @client.event / @bot.event
channel = self.bot.get_channel(ChannelID) # Or bot/client.get_channel
async def on_member_join
embed = discord.Embed(timestamp=datetime.utcnow())
[...]
await channel.send(embed=embed)

如果你已经定义了一个通道,只是想把它作为一个普通的消息发送,你可以把datetime放入一个f-string:

await channel.send(f"{datetime}")