mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-07 03:38:53 -05:00
Initial support for Discord timestamping (#5155)
* Initial support for Discord timestamping * Fix timezones * Fix userinfo for users with member.joined_at equal to None * Simplify Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
parent
b586c2f990
commit
f05debc923
@ -254,10 +254,8 @@ class General(commands.Cog):
|
||||
Default to False.
|
||||
"""
|
||||
guild = ctx.guild
|
||||
passed = (ctx.message.created_at - guild.created_at).days
|
||||
created_at = _("Created on {date}. That's over {num} days ago!").format(
|
||||
date=guild.created_at.strftime("%d %b %Y %H:%M"),
|
||||
num=humanize_number(passed),
|
||||
created_at = _("Created on <t:{0}:D>. That's <t:{0}:R>!").format(
|
||||
int(guild.created_at.replace(tzinfo=datetime.timezone.utc).timestamp()),
|
||||
)
|
||||
online = humanize_number(
|
||||
len([m.status for m in guild.members if m.status != discord.Status.offline])
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
import datetime
|
||||
from typing import cast
|
||||
|
||||
import discord
|
||||
@ -176,21 +176,16 @@ class ModInfo(MixinMeta):
|
||||
member = author
|
||||
|
||||
# A special case for a special someone :^)
|
||||
special_date = datetime(2016, 1, 10, 6, 8, 4, 443000)
|
||||
special_date = datetime.datetime(2016, 1, 10, 6, 8, 4, 443000, datetime.timezone.utc)
|
||||
is_special = member.id == 96130341705637888 and guild.id == 133049272517001216
|
||||
|
||||
roles = member.roles[-1:0:-1]
|
||||
names, nicks = await self.get_names_and_nicks(member)
|
||||
|
||||
joined_at = member.joined_at if not is_special else special_date
|
||||
since_created = (ctx.message.created_at - member.created_at).days
|
||||
if joined_at is not None:
|
||||
since_joined = (ctx.message.created_at - joined_at).days
|
||||
user_joined = joined_at.strftime("%d %b %Y %H:%M")
|
||||
else:
|
||||
since_joined = "?"
|
||||
user_joined = _("Unknown")
|
||||
user_created = member.created_at.strftime("%d %b %Y %H:%M")
|
||||
joined_at = member.joined_at.replace(tzinfo=datetime.timezone.utc)
|
||||
if is_special:
|
||||
joined_at = special_date
|
||||
user_created = int(member.created_at.replace(tzinfo=datetime.timezone.utc).timestamp())
|
||||
voice_state = member.voice
|
||||
member_number = (
|
||||
sorted(guild.members, key=lambda m: m.joined_at or ctx.message.created_at).index(
|
||||
@ -199,8 +194,11 @@ class ModInfo(MixinMeta):
|
||||
+ 1
|
||||
)
|
||||
|
||||
created_on = _("{}\n({} days ago)").format(user_created, since_created)
|
||||
joined_on = _("{}\n({} days ago)").format(user_joined, since_joined)
|
||||
created_on = "<t:{0}:D>\n(<t:{0}:R>)".format(user_created)
|
||||
if joined_at is not None:
|
||||
joined_on = "<t:{0}:D>\n(<t:{0}:R>)".format(int(joined_at.timestamp()))
|
||||
else:
|
||||
joined_on = _("Unknown")
|
||||
|
||||
if any(a.type is discord.ActivityType.streaming for a in member.activities):
|
||||
statusemoji = "\N{LARGE PURPLE CIRCLE}"
|
||||
|
||||
@ -432,9 +432,9 @@ class Case:
|
||||
until = None
|
||||
duration = None
|
||||
if self.until:
|
||||
start = datetime.utcfromtimestamp(self.created_at)
|
||||
end = datetime.utcfromtimestamp(self.until)
|
||||
end_fmt = end.strftime("%Y-%m-%d %H:%M:%S UTC")
|
||||
start = datetime.fromtimestamp(self.created_at, tz=timezone.utc)
|
||||
end = datetime.fromtimestamp(self.until, tz=timezone.utc)
|
||||
end_fmt = f"<t:{int(end.timestamp())}>"
|
||||
duration = end - start
|
||||
dur_fmt = _strfdelta(duration)
|
||||
until = end_fmt
|
||||
@ -454,9 +454,7 @@ class Case:
|
||||
|
||||
last_modified = None
|
||||
if self.modified_at:
|
||||
last_modified = "{}".format(
|
||||
datetime.utcfromtimestamp(self.modified_at).strftime("%Y-%m-%d %H:%M:%S UTC")
|
||||
)
|
||||
last_modified = f"<t:{self.modified_at}>"
|
||||
|
||||
if isinstance(self.user, int):
|
||||
if self.user == 0xDE1:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user