diff --git a/src/run/message_responder.py b/src/run/message_responder.py index ce5a276..5d902e8 100644 --- a/src/run/message_responder.py +++ b/src/run/message_responder.py @@ -100,6 +100,11 @@ async def process_guild_message_text_from_player(self, channel, message): return # By default, SlapChop shouldn't see messages that it doesn't ask for, but it's better safe than sorry. message_text = message.content tokenized_message_text = re.split("[ \t]{1,1000}", message_text) + + if len(tokenized_message_text) < 2: + await self.send_help_response(channel) + return + if equal_inputs(tokenized_message_text[1], "retest"): if message.author not in self.challenges_by_player: await channel.send( diff --git a/src/test/test_message_responder_challenges.py b/src/test/test_message_responder_challenges.py index 7e59f5d..41ad79e 100644 --- a/src/test/test_message_responder_challenges.py +++ b/src/test/test_message_responder_challenges.py @@ -1,6 +1,7 @@ from .framework.test_framework import * from .framework.spoof_factory import * from run.message_responder import MessageResponder +from time import sleep spoof = None responder = None @@ -43,7 +44,24 @@ async def spoof_a_basic_challenge(): expect(beckett not in responder.challenges_by_player, "Beckett remained in the challenge after it was done.") expect(vykos not in responder.challenges_by_player, "Vykos remained in the challenge after it was done.") +@test +async def test_expiration(): + responder.timeout = 1 + beckett = spoof.users[0] + vykos = spoof.users[1] + beckett.channel.message_history = [] + vykos.channel.message_history = [] + channel = spoof.guild_channels[0] + message = Message(beckett, channel, spoof.client.user.mention + " challenge " + vykos.mention, [spoof.client.user, vykos]) + await channel.spoof_send(message, responder) + sleep(1) + empty_at = Message(beckett, channel, spoof.client.user.mention, [spoof.client.user]) + await channel.spoof_send(empty_at, responder) + expect(len(responder.challenges_by_player.keys()) == 0, "Challenge failed to expire.") + expect(len(beckett.channel.message_history) == 2, "Beckett was not alerted that his challenge expired.") + expect(len(vykos.channel.message_history) == 2, "Vykos was not alerted that Beckett's challenge expired.") async def run_tests(): await set_up_spoof() await spoof_a_basic_challenge() + await test_expiration()