diff --git a/miniscord/__init__.py b/miniscord/__init__.py index b8f1ce3..a9c94eb 100644 --- a/miniscord/__init__.py +++ b/miniscord/__init__.py @@ -1,2 +1,2 @@ from ._bot import Bot -from ._discord_utils import delete_message, message_id +from ._discord_utils import delete_message, channel_id, sender_id diff --git a/miniscord/_discord_utils.py b/miniscord/_discord_utils.py index b92dc77..681c213 100644 --- a/miniscord/_discord_utils.py +++ b/miniscord/_discord_utils.py @@ -11,10 +11,16 @@ async def delete_message(message: discord.Message) -> bool: pass return False - -def message_id(message: discord.Message) -> str: +def channel_id(message: discord.Message) -> str: is_direct = message.channel.type == discord.ChannelType.private if not is_direct: - return f'{message.guild.id}/{message.channel.id}/{message.author.id}' + return f'{message.guild.id}/{message.channel.id}' + else: + return message.author.id + +def sender_id(message: discord.Message) -> str: + is_direct = message.channel.type == discord.ChannelType.private + if not is_direct: + return f'{channel_id(message)}/{message.author.id}' else: return message.author.id diff --git a/tests/unit/miniscord/test_bot.py b/tests/unit/miniscord/test_bot.py index 4ee4979..74c9626 100644 --- a/tests/unit/miniscord/test_bot.py +++ b/tests/unit/miniscord/test_bot.py @@ -136,6 +136,18 @@ class TestRegisterCommand(TestCase): self.assertEqual("^test$", cmd.regex) +class TestRegisterFallback(TestCase): + @skip + def test_todo(self): + self.fail("not implemented") + + +class TestRegisterWatcher(TestCase): + @skip + def test_todo(self): + self.fail("not implemented") + + class TestOnMessage(AsyncTestCase): @skip def test_todo(self): diff --git a/tests/unit/miniscord/test_discord_utils.py b/tests/unit/miniscord/test_discord_utils.py index 9a46e55..b03ed86 100644 --- a/tests/unit/miniscord/test_discord_utils.py +++ b/tests/unit/miniscord/test_discord_utils.py @@ -3,7 +3,7 @@ from unittest.mock import Mock, AsyncMock from tests.utils import AsyncTestCase import discord -from miniscord._discord_utils import delete_message, message_id +from miniscord._discord_utils import delete_message, channel_id, sender_id class TestDeleteMessage(AsyncTestCase): @@ -25,12 +25,12 @@ class TestDeleteMessage(AsyncTestCase): message.delete.assert_awaited_once() -class TestMessageId(TestCase): +class TestChannelId(TestCase): def test_direct(self): message = Mock() message.channel.type = discord.ChannelType.private message.author.id = "TEST" - self.assertEqual("TEST", message_id(message)) + self.assertEqual("TEST", channel_id(message)) def test_not_direct(self): message = Mock() @@ -38,4 +38,20 @@ class TestMessageId(TestCase): message.guild.id = "TEST1" message.channel.id = "TEST2" message.author.id = "TEST3" - self.assertEqual("TEST1/TEST2/TEST3", message_id(message)) + self.assertEqual("TEST1/TEST2", channel_id(message)) + + +class TestSenderId(TestCase): + def test_direct(self): + message = Mock() + message.channel.type = discord.ChannelType.private + message.author.id = "TEST" + self.assertEqual("TEST", sender_id(message)) + + def test_not_direct(self): + message = Mock() + message.channel.type = discord.ChannelType.text + message.guild.id = "TEST1" + message.channel.id = "TEST2" + message.author.id = "TEST3" + self.assertEqual("TEST1/TEST2/TEST3", sender_id(message))