From 65118025546e86d23e7a7ca1b8b1984af02661c4 Mon Sep 17 00:00:00 2001 From: zephyrkul Date: Wed, 12 Aug 2020 14:21:20 -0600 Subject: [PATCH] [rndstatus] resolve potential heartbeat issues (#140) Certain edge cases, e.g. two duplicate statuses, would cause random_status (which never yields) to loop either forever or for a long time. This removes the while loop entirely. --- rndstatus/rndstatus.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/rndstatus/rndstatus.py b/rndstatus/rndstatus.py index 6b21e96..d9d353a 100644 --- a/rndstatus/rndstatus.py +++ b/rndstatus/rndstatus.py @@ -192,15 +192,9 @@ class RndStatus(commands.Cog): current = str(guild.me.activity.name) except AttributeError: current = None - try: - new = str(guild.me.activity.name) - except AttributeError: - new = None - if len(statuses) > 1: - while current == new: - new = rndchoice(statuses) - elif len(statuses) == 1: - new = statuses[0] - else: - new = None - return new + new_statuses = [s for s in statuses if s != current] + if len(new_statuses) > 1: + return rndchoice(new_statuses) + elif len(new_statuses) == 1: + return new_statuses[0] + return current