Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to Discord 2.0a0 #1815

Merged
merged 21 commits into from Oct 17, 2021
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion bot/converters.py
Expand Up @@ -272,7 +272,7 @@ async def convert(self, ctx: Context, arg: str) -> int:
snowflake = int(arg)

try:
time = snowflake_time(snowflake)
time = snowflake_time(snowflake).replace(tzinfo=None)
except (OverflowError, OSError) as e:
# Not sure if this can ever even happen, but let's be safe.
raise BadArgument(f"{error}: {e}")
Expand Down
10 changes: 7 additions & 3 deletions bot/exts/filters/antispam.py
Expand Up @@ -109,7 +109,7 @@ async def upload_messages(self, actor_id: int, modlog: ModLog) -> None:
colour=Colour(Colours.soft_red),
title="Spam detected!",
text=mod_alert_message,
thumbnail=first_message.author.avatar_url_as(static_format="png"),
thumbnail=first_message.author.display_avatar.url,
channel_id=Channels.mod_alerts,
ping_everyone=AntiSpamConfig.ping_everyone
)
Expand Down Expand Up @@ -181,7 +181,9 @@ async def on_message(self, message: Message) -> None:
self.cache.append(message)

earliest_relevant_at = datetime.utcnow() - timedelta(seconds=self.max_interval)
relevant_messages = list(takewhile(lambda msg: msg.created_at > earliest_relevant_at, self.cache))
relevant_messages = list(
takewhile(lambda msg: msg.created_at.replace(tzinfo=None) > earliest_relevant_at, self.cache)
)

for rule_name in AntiSpamConfig.rules:
rule_config = AntiSpamConfig.rules[rule_name]
Expand All @@ -190,7 +192,9 @@ async def on_message(self, message: Message) -> None:
# Create a list of messages that were sent in the interval that the rule cares about.
latest_interesting_stamp = datetime.utcnow() - timedelta(seconds=rule_config['interval'])
messages_for_rule = list(
takewhile(lambda msg: msg.created_at > latest_interesting_stamp, relevant_messages)
takewhile(
lambda msg: msg.created_at.replace(tzinfo=None) > latest_interesting_stamp, relevant_messages
)
)

result = await rule_function(message, messages_for_rule, rule_config)
Expand Down
4 changes: 2 additions & 2 deletions bot/exts/filters/filtering.py
Expand Up @@ -226,7 +226,7 @@ async def check_bad_words_in_name(self, member: Member) -> None:
title="Username filtering alert",
text=log_string,
channel_id=Channels.mod_alerts,
thumbnail=member.avatar_url
thumbnail=member.display_avatar.url
)

# Update time when alert sent
Expand Down Expand Up @@ -386,7 +386,7 @@ async def _send_log(
colour=Colour(Colours.soft_red),
title=f"{_filter['type'].title()} triggered!",
text=message,
thumbnail=msg.author.avatar_url_as(static_format="png"),
thumbnail=msg.author.display_avatar.url,
channel_id=Channels.mod_alerts,
ping_everyone=ping_everyone,
additional_embeds=stats.additional_embeds,
Expand Down
2 changes: 1 addition & 1 deletion bot/exts/filters/token_remover.py
Expand Up @@ -109,7 +109,7 @@ async def take_action(self, msg: Message, found_token: Token) -> None:
colour=Colour(Colours.soft_red),
title="Token removed!",
text=log_message + "\n" + userid_message,
thumbnail=msg.author.avatar_url_as(static_format="png"),
thumbnail=msg.author.display_avatar.url,
channel_id=Channels.mod_alerts,
ping_everyone=mention_everyone,
)
Expand Down
2 changes: 1 addition & 1 deletion bot/exts/filters/webhook_remover.py
Expand Up @@ -63,7 +63,7 @@ async def delete_and_respond(self, msg: Message, redacted_url: str, *, webhook_d
colour=Colour(Colours.soft_red),
title="Discord webhook URL removed!",
text=message,
thumbnail=msg.author.avatar_url_as(static_format="png"),
thumbnail=msg.author.display_avatar.url,
channel_id=Channels.mod_alerts
)

Expand Down
4 changes: 2 additions & 2 deletions bot/exts/fun/duck_pond.py
Expand Up @@ -94,7 +94,7 @@ async def relay_message(self, message: Message) -> None:
webhook=self.webhook,
content=message.clean_content,
username=message.author.display_name,
avatar_url=message.author.avatar_url
avatar_url=message.author.display_avatar.url
)

if message.attachments:
Expand All @@ -109,7 +109,7 @@ async def relay_message(self, message: Message) -> None:
webhook=self.webhook,
embed=e,
username=message.author.display_name,
avatar_url=message.author.avatar_url
avatar_url=message.author.display_avatar.url
)
except discord.HTTPException:
log.exception("Failed to send an attachment to the webhook")
Expand Down
2 changes: 1 addition & 1 deletion bot/exts/info/information.py
Expand Up @@ -315,7 +315,7 @@ async def create_user_embed(self, ctx: Context, user: MemberOrUser) -> Embed:
for field_name, field_content in fields:
embed.add_field(name=field_name, value=field_content, inline=False)

embed.set_thumbnail(url=user.avatar_url_as(static_format="png"))
embed.set_thumbnail(url=user.display_avatar.url)
embed.colour = user.colour if user.colour != Colour.default() else Colour.blurple()

return embed
Expand Down
18 changes: 14 additions & 4 deletions bot/exts/moderation/defcon.py
Expand Up @@ -111,7 +111,7 @@ async def on_member_join(self, member: Member) -> None:
if self.threshold:
now = datetime.utcnow()

if now - member.created_at < relativedelta_to_timedelta(self.threshold):
if now - member.created_at.replace(tzinfo=None) < relativedelta_to_timedelta(self.threshold):
log.info(f"Rejecting user {member}: Account is too new")

message_sent = False
Expand All @@ -137,7 +137,7 @@ async def on_member_join(self, member: Member) -> None:

await self.mod_log.send_log_message(
Icons.defcon_denied, Colours.soft_red, "Entry denied",
message, member.avatar_url_as(static_format="png")
message, member.display_avatar.url
)

@group(name='defcon', aliases=('dc',), invoke_without_command=True)
Expand Down Expand Up @@ -185,7 +185,12 @@ async def shutdown(self, ctx: Context) -> None:
role = ctx.guild.default_role
permissions = role.permissions

permissions.update(send_messages=False, add_reactions=False, connect=False)
permissions.update(
send_messages=False,
add_reactions=False,
send_messages_in_threads=False,
connect=False
)
await role.edit(reason="DEFCON shutdown", permissions=permissions)
await ctx.send(f"{Action.SERVER_SHUTDOWN.value.emoji} Server shut down.")

Expand All @@ -196,7 +201,12 @@ async def unshutdown(self, ctx: Context) -> None:
role = ctx.guild.default_role
permissions = role.permissions

permissions.update(send_messages=True, add_reactions=True, connect=True)
permissions.update(
send_messages=True,
add_reactions=True,
send_messages_in_threads=True,
connect=True
)
await role.edit(reason="DEFCON unshutdown", permissions=permissions)
await ctx.send(f"{Action.SERVER_OPEN.value.emoji} Server reopened.")

Expand Down
4 changes: 2 additions & 2 deletions bot/exts/moderation/incidents.py
Expand Up @@ -94,7 +94,7 @@ async def make_embed(incident: discord.Message, outcome: Signal, actioned_by: di
timestamp=datetime.utcnow(),
colour=colour,
)
embed.set_footer(text=footer, icon_url=actioned_by.avatar_url)
embed.set_footer(text=footer, icon_url=actioned_by.display_avatar.url)

if incident.attachments:
attachment = incident.attachments[0] # User-sent messages can only contain one attachment
Expand Down Expand Up @@ -253,7 +253,7 @@ async def archive(self, incident: discord.Message, outcome: Signal, actioned_by:
await webhook.send(
embed=embed,
username=sub_clyde(incident.author.name),
avatar_url=incident.author.avatar_url,
avatar_url=incident.author.display_avatar.url,
file=attachment_file,
)
except Exception:
Expand Down
6 changes: 3 additions & 3 deletions bot/exts/moderation/infraction/_scheduler.py
Expand Up @@ -239,7 +239,7 @@ async def apply_infraction(
icon_url=icon,
colour=Colours.soft_red,
title=f"Infraction {log_title}: {' '.join(infr_type.split('_'))}",
thumbnail=user.avatar_url_as(static_format="png"),
thumbnail=user.display_avatar.url,
text=textwrap.dedent(f"""
Member: {messages.format_user(user)}
Actor: {ctx.author.mention}{dm_log_text}{expiry_log_text}
Expand Down Expand Up @@ -333,7 +333,7 @@ async def pardon_infraction(
icon_url=_utils.INFRACTION_ICONS[infr_type][1],
colour=Colours.soft_green,
title=f"Infraction {log_title}: {' '.join(infr_type.split('_'))}",
thumbnail=user.avatar_url_as(static_format="png"),
thumbnail=user.display_avatar.url,
text="\n".join(f"{k}: {v}" for k, v in log_text.items()),
footer=footer,
content=log_content,
Expand Down Expand Up @@ -450,7 +450,7 @@ async def deactivate_infraction(
log_title = "expiration failed" if "Failure" in log_text else "expired"

user = self.bot.get_user(user_id)
avatar = user.avatar_url_as(static_format="png") if user else None
avatar = user.display_avatar.url if user else None

# Move reason to end so when reason is too long, this is not gonna cut out required items.
log_text["Reason"] = log_text.pop("Reason")
Expand Down
2 changes: 1 addition & 1 deletion bot/exts/moderation/infraction/management.py
Expand Up @@ -195,7 +195,7 @@ async def infraction_edit(

if user:
user_text = messages.format_user(user)
thumbnail = user.avatar_url_as(static_format="png")
thumbnail = user.display_avatar.url
else:
user_text = f"<@{user_id}>"
thumbnail = None
Expand Down