首页 > 解决方案 > 在嵌入消息 discord.py 上写入时间戳

问题描述

我正在开发一个机器人,我想发一条消息说“今天创建的帐户”或类似的东西(就像在嵌入上使用时间戳属性时所做的那样)而不是“帐户创建于 2020-09-02 12:22:47.893000 " 我现在的代码是这样的:

@client.event
async def on_member_join(member)
embed = discord.Embed(
    description=f":inbox_tray: <@{member.id}> joined.",
    colour=discord.colour.Color.dark_green(),

    timestamp=datetime.now()
)
embed.set_thumbnail(url=member.avatar_url)
embed.add_field(name='Account created:', value=member.created_at)

embed.set_footer(
    text=f'User Id: {member.id}')
await client.get_channel(logchannel).send(embed=embed)

提前致谢。

标签: pythondiscorddiscord.py

解决方案


您可以检查成员加入的日期(<datetime object>.date())以查看是否是今天的日期,如果是,则输入Today at h:m PM,但如果不是今天,则可以通过获取今天的日期来检查日期是否来自昨天(datetime.datetime.today().date())然后使用 'timedelta' 带走 1 这基本上意味着它从今天起带走了一天,留下昨天的日期,然后您可以检查成员加入日期等于我们得到的日期(昨天的日期),如果是,则Yesteday at h:m PM如下所示。如果不是今天和昨天,那么dd/mm/yyyy就像不和谐一样(至少如果我没记错的话)

from datetime import timedelta, datetime
embed.add_field(name='Account created:', value=member.created_at.strftime(
    'Today at %-I:%M %p' if member.created_at.date() == datetime.today().date()
    else 'Yesterday at %-I:%M %p' if member.created_at.date() == (datetime.today() - timedelta(1)).date()
    else '%d/%m/%Y')
)

推荐阅读