ignore-channels: fnmatch patterns + silent before classifier gate (beh-09) — no emoji leak into ignored channels
This commit is contained in:
@@ -65,6 +65,55 @@ class TestClassifierGate(ClassifierGateBase):
|
||||
self.bot.respond.assert_not_awaited()
|
||||
|
||||
|
||||
class TestIgnoredChannels(ClassifierGateBase):
|
||||
def ignored_msg(self, channel_name):
|
||||
message = self.public_msg("hello there")
|
||||
message.channel.name = channel_name
|
||||
message.add_reaction = AsyncMock()
|
||||
return message
|
||||
|
||||
async def test_pattern_match_suppresses_reaction_and_reply(self):
|
||||
"""BEH-09: fnmatch pattern hit -> no classifier call, no emoji, no reply."""
|
||||
self.gate_setup({"reply": False, "factual": False, "emoji": "👍"})
|
||||
self.bot.config["ignore-channels"] = ["todo*"]
|
||||
message = self.ignored_msg("todo-lists")
|
||||
await self.bot.on_message(message)
|
||||
self.bot.airesponder.classify.assert_not_awaited()
|
||||
message.add_reaction.assert_not_awaited()
|
||||
self.bot.respond.assert_not_awaited()
|
||||
|
||||
async def test_exact_name_still_matches(self):
|
||||
"""BEH-09: plain names keep working as exact matches."""
|
||||
self.gate_setup({"reply": True, "factual": False, "emoji": None})
|
||||
self.bot.config["ignore-channels"] = ["blengon"]
|
||||
await self.bot.on_message(self.ignored_msg("blengon"))
|
||||
self.bot.respond.assert_not_awaited()
|
||||
|
||||
async def test_non_matching_channel_passes(self):
|
||||
"""BEH-09: unmatched channels reach the responder as before."""
|
||||
self.gate_setup({"reply": True, "factual": False, "emoji": None})
|
||||
self.bot.config["ignore-channels"] = ["todo*"]
|
||||
await self.bot.on_message(self.ignored_msg("chat"))
|
||||
self.bot.respond.assert_awaited_once()
|
||||
|
||||
async def test_dm_never_ignored(self):
|
||||
"""BEH-09: a DM whose recipient name matches a pattern is still answered."""
|
||||
self.gate_setup({"reply": True, "factual": False, "emoji": None})
|
||||
self.bot.config["ignore-channels"] = ["todo*"]
|
||||
message = self.public_msg("hei bot")
|
||||
message.channel = MagicMock(spec=DMChannel)
|
||||
message.channel.recipient = MagicMock()
|
||||
message.channel.recipient.name = "todo-fan"
|
||||
await self.bot.on_message(message)
|
||||
self.bot.respond.assert_awaited_once()
|
||||
|
||||
def test_channel_by_name_honors_patterns(self):
|
||||
"""BEH-09: channel_by_name resolution skips pattern-ignored channels."""
|
||||
self.bot.config["ignore-channels"] = ["todo*"]
|
||||
fallback = MagicMock(spec=TextChannel)
|
||||
self.assertIs(self.bot.channel_by_name("todo-lists", fallback), fallback)
|
||||
|
||||
|
||||
class TestTypingPacing(OpsBase):
|
||||
async def send_with(self, answer, factual, cps=30):
|
||||
if cps is not None:
|
||||
|
||||
Reference in New Issue
Block a user