mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-05 18:58:53 -05:00
[Alias] Aliased commands retain newlines (#4656)
Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
This commit is contained in:
parent
a393a10ceb
commit
569840e9e6
@ -150,6 +150,15 @@ class Alias(commands.Cog):
|
|||||||
raise ValueError("No prefix found.")
|
raise ValueError("No prefix found.")
|
||||||
|
|
||||||
async def call_alias(self, message: discord.Message, prefix: str, alias: AliasEntry):
|
async def call_alias(self, message: discord.Message, prefix: str, alias: AliasEntry):
|
||||||
|
new_message = self.translate_alias_message(message, prefix, alias)
|
||||||
|
await self.bot.process_commands(new_message)
|
||||||
|
|
||||||
|
def translate_alias_message(self, message: discord.Message, prefix: str, alias: AliasEntry):
|
||||||
|
"""
|
||||||
|
Translates a discord message using an alias
|
||||||
|
for a command to a discord message using the
|
||||||
|
alias' base command.
|
||||||
|
"""
|
||||||
new_message = copy(message)
|
new_message = copy(message)
|
||||||
try:
|
try:
|
||||||
args = alias.get_extra_args_from_alias(message, prefix)
|
args = alias.get_extra_args_from_alias(message, prefix)
|
||||||
@ -163,7 +172,8 @@ class Alias(commands.Cog):
|
|||||||
new_message.content = "{}{} {}".format(
|
new_message.content = "{}{} {}".format(
|
||||||
prefix, command, " ".join(args[trackform.max + 1 :])
|
prefix, command, " ".join(args[trackform.max + 1 :])
|
||||||
).strip()
|
).strip()
|
||||||
await self.bot.process_commands(new_message)
|
|
||||||
|
return new_message
|
||||||
|
|
||||||
async def paginate_alias_list(
|
async def paginate_alias_list(
|
||||||
self, ctx: commands.Context, alias_list: List[AliasEntry]
|
self, ctx: commands.Context, alias_list: List[AliasEntry]
|
||||||
|
|||||||
@ -62,8 +62,7 @@ class AliasEntry:
|
|||||||
word = view.get_quoted_word()
|
word = view.get_quoted_word()
|
||||||
if len(word) < view.index - prev:
|
if len(word) < view.index - prev:
|
||||||
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
|
word = "".join((view.buffer[prev], word, view.buffer[view.index - 1]))
|
||||||
extra.append(word)
|
extra.append(word.strip(" "))
|
||||||
view.skip_ws()
|
|
||||||
return extra
|
return extra
|
||||||
|
|
||||||
def to_json(self) -> dict:
|
def to_json(self) -> dict:
|
||||||
|
|||||||
@ -23,7 +23,9 @@ __all__ = [
|
|||||||
"empty_role",
|
"empty_role",
|
||||||
"empty_user",
|
"empty_user",
|
||||||
"member_factory",
|
"member_factory",
|
||||||
|
"newline_message",
|
||||||
"user_factory",
|
"user_factory",
|
||||||
|
"prefix",
|
||||||
"ctx",
|
"ctx",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -142,6 +144,18 @@ def empty_message():
|
|||||||
return mock_msg("No content.")
|
return mock_msg("No content.")
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def newline_message():
|
||||||
|
mock_msg = type("", (), {})()
|
||||||
|
mock_msg.content = "!test a\nb\nc"
|
||||||
|
return mock_msg
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope="module")
|
||||||
|
def prefix():
|
||||||
|
return "!"
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def ctx(empty_member, empty_channel, red):
|
def ctx(empty_member, empty_channel, red):
|
||||||
mock_ctx = namedtuple("Context", "author guild channel message bot")
|
mock_ctx = namedtuple("Context", "author guild channel message bot")
|
||||||
|
|||||||
@ -30,6 +30,20 @@ async def test_add_guild_alias(alias, ctx):
|
|||||||
assert alias_obj.name == "test"
|
assert alias_obj.name == "test"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_translate_alias_message(alias, ctx, newline_message, prefix):
|
||||||
|
await create_test_guild_alias(alias, ctx)
|
||||||
|
alias_obj = await alias._aliases.get_alias(ctx.guild, "test")
|
||||||
|
|
||||||
|
translated_message = alias.translate_alias_message(newline_message, prefix, alias_obj)
|
||||||
|
|
||||||
|
original_content = newline_message.content.split(" ", 1)[1]
|
||||||
|
original_content = original_content.replace(" ", "")
|
||||||
|
new_content = translated_message.content.split(" ", 1)[1]
|
||||||
|
new_content = new_content.replace(" ", "")
|
||||||
|
|
||||||
|
assert new_content == original_content
|
||||||
|
|
||||||
|
|
||||||
async def test_delete_guild_alias(alias, ctx):
|
async def test_delete_guild_alias(alias, ctx):
|
||||||
await create_test_guild_alias(alias, ctx)
|
await create_test_guild_alias(alias, ctx)
|
||||||
alias_obj = await alias._aliases.get_alias(ctx.guild, "test")
|
alias_obj = await alias._aliases.get_alias(ctx.guild, "test")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user