diff --git a/cogs/events.py b/cogs/events.py index 9069c3b..b1ff4b6 100644 --- a/cogs/events.py +++ b/cogs/events.py @@ -1,5 +1,5 @@ from data import constants -from data.snipe import Snipe, Action, should_snipe +from data.snipe import Snipe, Action import datetime import discord from discord.ext import commands @@ -276,13 +276,13 @@ class Events(commands.Cog): if not checks.freeGamesCheck(after): return await self.failedChecksCog.freeGames(after) - if should_snipe(before): + if before.guild is not None and not before.author.bot: self.client.snipe[before.channel.id] = Snipe(before.author.id, before.channel.id, before.guild.id, Action.Edit, before.content, after.content) @commands.Cog.listener() async def on_message_delete(self, message: discord.Message): - if should_snipe(message): + if message.guild is not None and not message.author.bot: self.client.snipe[message.channel.id] = Snipe(message.author.id, message.channel.id, message.guild.id, Action.Remove, message.content) diff --git a/data/regexes.py b/data/regexes.py deleted file mode 100644 index e0475af..0000000 --- a/data/regexes.py +++ /dev/null @@ -1,10 +0,0 @@ -import re - -STEAM_CODE = {"pattern": "[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{5}", "flags": re.IGNORECASE} - - -def contains(text: str, pattern: dict) -> bool: - if "flags" in pattern: - return re.search(pattern["pattern"], text, pattern["flags"]) is not None - else: - return re.search(pattern["pattern"], text) is not None diff --git a/data/snipe.py b/data/snipe.py index 0078b60..41b7b22 100644 --- a/data/snipe.py +++ b/data/snipe.py @@ -1,8 +1,7 @@ -from attr import dataclass -from data import regexes -import discord from enum import Enum +from attr import dataclass + class Action(Enum): """ @@ -23,17 +22,3 @@ class Snipe: action: Action old: str new: str = None - - -def should_snipe(message: discord.Message) -> bool: - """ - Check if a message should be sniped or not - This could be a oneliner but that makes it unreadable - """ - if message.guild is None: - return False - - if message.author.bot: - return False - - return not regexes.contains(message.content, regexes.STEAM_CODE) diff --git a/tests/run_tests.py b/tests/run_tests.py deleted file mode 100644 index 4b64cea..0000000 --- a/tests/run_tests.py +++ /dev/null @@ -1,6 +0,0 @@ -import unittest - - -if __name__ == "__main__": - suite = unittest.TestLoader().discover('.', pattern="test_*.py") - unittest.TextTestRunner(verbosity=3).run(suite) diff --git a/tests/test_data/__init__.py b/tests/test_data/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/test_data/test_regexes.py b/tests/test_data/test_regexes.py deleted file mode 100644 index 02bbfd6..0000000 --- a/tests/test_data/test_regexes.py +++ /dev/null @@ -1,32 +0,0 @@ -from data import regexes -import re -import unittest - - -class TestRegexes(unittest.TestCase): - def test_contains(self): - pattern = {"pattern": "ABC123"} - - self.assertTrue(regexes.contains("ABC123TESTSTRING", pattern)) # Beginning - self.assertTrue(regexes.contains("TESTABC123STRING", pattern)) # Middle - self.assertTrue(regexes.contains("TESTSTRINGABC123", pattern)) # End - self.assertTrue(regexes.contains("ABC123", pattern)) # Entire string - - self.assertFalse(regexes.contains("aBC123TESTSTRING", pattern)) # Wrong casing - self.assertFalse(regexes.contains("SOMETHING ELSE", pattern)) # No match - - # Add case insensitive flag - pattern["flags"] = re.IGNORECASE - self.assertTrue(regexes.contains("aBC123TESTSTRING", pattern)) # Incorrect casing should now pass - - def test_steam_codes(self): - self.assertTrue(regexes.contains("AAAAA-BBBBB-CCCCC", regexes.STEAM_CODE)) # Only letters - self.assertTrue(regexes.contains("11111-22222-33333", regexes.STEAM_CODE)) # Only numbers - self.assertTrue(regexes.contains("ABC12-34DEF-GHI56", regexes.STEAM_CODE)) # Both - self.assertTrue(regexes.contains("abcde-fghij-lmnop", regexes.STEAM_CODE)) # Case insensitive flag - self.assertTrue(regexes.contains("AAAAAA-BBBBB-CCCCC", regexes.STEAM_CODE)) # Extra characters can be in front - - self.assertFalse(regexes.contains("A-BBBBB-CCCCC", regexes.STEAM_CODE)) # First group is too small - self.assertFalse(regexes.contains("AAAAA-BBBBBB-CCCCC", regexes.STEAM_CODE)) # Second group is too big - self.assertFalse(regexes.contains("AA??A-#ù$B6-!ÈCMa", regexes.STEAM_CODE)) # Invalid characters - self.assertFalse(regexes.contains("Something something communism", regexes.STEAM_CODE)) # Random string diff --git a/tests/test_data/test_snipe.py b/tests/test_data/test_snipe.py deleted file mode 100644 index 400d044..0000000 --- a/tests/test_data/test_snipe.py +++ /dev/null @@ -1,27 +0,0 @@ -from data.snipe import should_snipe -import unittest -from unittest.mock import Mock - - -class TestSnipe(unittest.TestCase): - def test_should_snipe(self): - mock_message = Mock() - mock_guild = Mock() - mock_author = Mock() - - # Guild is None - mock_message.guild = None - self.assertFalse(should_snipe(mock_message)) - mock_message.guild = mock_guild - - # Author is a bot - mock_message.author = mock_author - mock_author.bot = True - self.assertFalse(should_snipe(mock_message)) - mock_author.bot = False - - mock_message.content = "Some string that contains A123B-CE68S-Z6B34 a Steam code" - self.assertFalse(should_snipe(mock_message)) - - mock_message.content = "Some string that does NOT contain a Steam code" - self.assertTrue(should_snipe(mock_message))