python - 在嵌入消息 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)
提前致谢。
解决方案
您可以检查成员加入的日期(<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')
)
推荐阅读
- spring - google guice @Inject 在春季进行 DI @Autowired 时给出 null
- mysql - 删除实体并仅删除其他表中的reference_fk而不删除第二个实体
- c++ - operator++ 在前向迭代器上做了什么
- flutter - 是否由于应用程序关注预期行为而丢失 TextField 文本?
- javascript - 如何在 reactjs 中使用 antd 多个复选框?
- reactjs - React App部署但未在heroku中运行
- python - 如何将我的元组转换为格式,以便 Python 中的 JSON 格式可以接受
- delphi - Delphi - 调试 COM+ 时 RPC 服务器不可用
- data-science - 从 Play 商店获取用户评论
- c++ - C++:带有重载成员函数的 std::apply