Skip to content

Commit 9464c5d

Browse files
committed
Fixed compat with MissingRequiredArgument requiring additional param
1 parent 27a16fe commit 9464c5d

File tree

5 files changed

+24
-14
lines changed

5 files changed

+24
-14
lines changed

bot.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -1746,9 +1746,10 @@ def format_channel_name(self, author, exclude_channel=None, force_null=False):
17461746
if force_null:
17471747
name = "null"
17481748

1749-
name = new_name = (
1750-
"".join(l for l in name if l not in string.punctuation and l.isprintable()) or "null"
1751-
) + f"-{author.discriminator}"
1749+
name = "".join(l for l in name if l not in string.punctuation and l.isprintable()) or "null"
1750+
if author.discriminator != "0":
1751+
name += f"-{author.discriminator}"
1752+
new_name = name
17521753

17531754
counter = 1
17541755
existed = set(c.name for c in guild.text_channels if c != exclude_channel)

cogs/modmail.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from datetime import datetime, timezone
44
from itertools import zip_longest
55
from typing import Optional, Union, List, Tuple, Literal
6-
from types import SimpleNamespace
76

87
import discord
98
from discord.ext import commands
@@ -1164,7 +1163,7 @@ async def logs(self, ctx, *, user: User = None):
11641163
if not user:
11651164
thread = ctx.thread
11661165
if not thread:
1167-
raise commands.MissingRequiredArgument(SimpleNamespace(name="member"))
1166+
raise commands.MissingRequiredArgument(DummyParam("user"))
11681167
user = thread.recipient or await self.bot.get_or_fetch_user(thread.id)
11691168

11701169
default_avatar = "https://cdn.discordapp.com/embed/avatars/0.png"
@@ -1839,7 +1838,7 @@ async def block(
18391838
if thread:
18401839
user_or_role = thread.recipient
18411840
elif after is None:
1842-
raise commands.MissingRequiredArgument(SimpleNamespace(name="user or role"))
1841+
raise commands.MissingRequiredArgument(DummyParam("user or role"))
18431842
else:
18441843
raise commands.BadArgument(f'User or role "{after.arg}" not found.')
18451844

@@ -1919,7 +1918,7 @@ async def unblock(self, ctx, *, user_or_role: Union[User, Role] = None):
19191918
if thread:
19201919
user_or_role = thread.recipient
19211920
else:
1922-
raise commands.MissingRequiredArgument(SimpleNamespace(name="user"))
1921+
raise commands.MissingRequiredArgument(DummyParam("user or role"))
19231922

19241923
mention = getattr(user_or_role, "mention", f"`{user_or_role.id}`")
19251924
name = getattr(user_or_role, "name", f"`{user_or_role.id}`")

cogs/utility.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from json import JSONDecodeError, loads
1212
from subprocess import PIPE
1313
from textwrap import indent
14-
from types import SimpleNamespace
1514
from typing import Union
1615

1716
import discord
@@ -30,7 +29,7 @@
3029
UnseenFormatter,
3130
getLogger,
3231
)
33-
from core.utils import trigger_typing, truncate
32+
from core.utils import trigger_typing, truncate, DummyParam
3433
from core.paginator import EmbedPaginatorSession, MessagePaginatorSession
3534

3635

@@ -522,12 +521,12 @@ async def activity(self, ctx, activity_type: str.lower, *, message: str = ""):
522521
return await ctx.send(embed=embed)
523522

524523
if not message:
525-
raise commands.MissingRequiredArgument(SimpleNamespace(name="message"))
524+
raise commands.MissingRequiredArgument(DummyParam("message"))
526525

527526
try:
528527
activity_type = ActivityType[activity_type]
529528
except KeyError:
530-
raise commands.MissingRequiredArgument(SimpleNamespace(name="activity"))
529+
raise commands.MissingRequiredArgument(DummyParam("activity"))
531530

532531
activity, _ = await self.set_presence(activity_type=activity_type, activity_message=message)
533532

@@ -572,7 +571,7 @@ async def status(self, ctx, *, status_type: str.lower):
572571
try:
573572
status = Status[status_type]
574573
except KeyError:
575-
raise commands.MissingRequiredArgument(SimpleNamespace(name="status"))
574+
raise commands.MissingRequiredArgument(DummyParam("status"))
576575

577576
_, status = await self.set_presence(status=status)
578577

core/thread.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
AcceptButton,
3333
DenyButton,
3434
ConfirmThreadCreationView,
35+
DummyParam,
3536
)
3637

3738
logger = getLogger(__name__)
@@ -800,7 +801,7 @@ async def note(
800801
self, message: discord.Message, persistent=False, thread_creation=False
801802
) -> discord.Message:
802803
if not message.content and not message.attachments:
803-
raise MissingRequiredArgument(SimpleNamespace(name="msg"))
804+
raise MissingRequiredArgument(DummyParam("msg"))
804805

805806
msg = await self.send(
806807
message,
@@ -821,7 +822,7 @@ async def reply(
821822
) -> typing.Tuple[typing.List[discord.Message], discord.Message]:
822823
"""Returns List[user_dm_msg] and thread_channel_msg"""
823824
if not message.content and not message.attachments:
824-
raise MissingRequiredArgument(SimpleNamespace(name="msg"))
825+
raise MissingRequiredArgument(DummyParam("msg"))
825826
if not any(g.get_member(self.id) for g in self.bot.guilds):
826827
return await message.channel.send(
827828
embed=discord.Embed(

core/utils.py

+10
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"AcceptButton",
4343
"DenyButton",
4444
"ConfirmThreadCreationView",
45+
"DummyParam",
4546
]
4647

4748

@@ -588,3 +589,12 @@ class ConfirmThreadCreationView(discord.ui.View):
588589
def __init__(self):
589590
super().__init__(timeout=20)
590591
self.value = None
592+
593+
594+
class DummyParam:
595+
"""
596+
A dummy parameter that can be used for MissingRequiredArgument.
597+
"""
598+
def __init__(self, name):
599+
self.name = name
600+
self.displayed_name = name

0 commit comments

Comments
 (0)