Skip to content

Commit 72b76ca

Browse files
Dolly132Rushaway
andauthored
fix(Commands): chat and triggers individual cooldown (#100)
Co-authored-by: Rushaway <11679883+Rushaway@users.noreply.github.com>
1 parent 763838f commit 72b76ca

3 files changed

Lines changed: 30 additions & 9 deletions

File tree

src/torchlight/Commands.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,9 @@ async def _func(self, message: list[str], player: Player) -> int:
608608
if self.check_disabled(player):
609609
return -1
610610

611+
if self.check_chat_cooldown(player):
612+
return -1
613+
611614
voice_trigger = message[0].lower()
612615
trigger_number = message[1].lower()
613616

@@ -633,6 +636,7 @@ async def _func(self, message: list[str], player: Player) -> int:
633636
if self.random_trigger_name:
634637
self.torchlight.SayChat(f"Now playing {{olive}}{self.random_trigger_name}")
635638

639+
self.torchlight.SetPlayerCooldown(player, self.torchlight.config["AntiSpam"]["ChatCooldown"])
636640
return audio_clip.Play()
637641

638642
def get_sound_path(self, player: Player, voice_trigger: str, trigger_number: str) -> str | None:
@@ -709,6 +713,9 @@ def get_sound_path(self, player: Player, voice_trigger: str, trigger_number: str
709713

710714

711715
class Random(VoiceTrigger):
716+
def _setup(self) -> None:
717+
self.logger.debug(sys._getframe().f_code.co_name)
718+
712719
def get_sound_path(self, player: Player, voice_trigger: str, trigger_number: str) -> str | None:
713720
trigger_name, trigger = secrets.choice(list(self.trigger_manager.voice_triggers.items()))
714721

@@ -909,6 +916,9 @@ async def _func(self, message: list[str], player: Player) -> int:
909916
if self.check_disabled(player):
910917
return -1
911918

919+
if self.check_chat_cooldown(player):
920+
return -1
921+
912922
if not message[1]:
913923
return 1
914924

@@ -930,6 +940,7 @@ async def _func(self, message: list[str], player: Player) -> int:
930940
return 1
931941

932942
asyncio.ensure_future(self.Say(player, language, tld, message[1]))
943+
self.torchlight.SetPlayerCooldown(player, self.torchlight.config["AntiSpam"]["ChatCooldown"])
933944
return 0
934945

935946

@@ -973,10 +984,14 @@ async def _func(self, message: list[str], player: Player) -> int:
973984
if self.check_disabled(player):
974985
return -1
975986

987+
if self.check_chat_cooldown(player):
988+
return -1
989+
976990
if not message[1]:
977991
return 1
978992

979993
asyncio.ensure_future(self.Say(player, message[1]))
994+
self.torchlight.SetPlayerCooldown(player, self.torchlight.config["AntiSpam"]["ChatCooldown"])
980995
return 0
981996

982997

src/torchlight/Torchlight.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,7 @@ def SayChat(self, message: str, player: Player | None = None) -> None:
7272
asyncio.ensure_future(self.sourcemod_api.CPrintToChatAll(line))
7373

7474
if player:
75-
level = player.admin.level
76-
77-
if level < self.config["AntiSpam"]["ImmunityLevel"]:
78-
cooldown = len(lines) * self.config["AntiSpam"]["ChatCooldown"]
79-
if player.chat_cooldown > self.loop.time():
80-
player.chat_cooldown += cooldown
81-
else:
82-
player.chat_cooldown = self.loop.time() + cooldown
75+
self.SetPlayerCooldown(player, len(lines) * self.config["AntiSpam"]["ChatCooldown"])
8376

8477
# @profile
8578
def SayPrivate(self, player: Player, message: str) -> None:
@@ -93,5 +86,18 @@ def SayPrivate(self, player: Player, message: str) -> None:
9386
for line in lines:
9487
asyncio.ensure_future(self.sourcemod_api.CPrintToChat(player.index, line))
9588

89+
def SetPlayerCooldown(self, player: Player, cooldown: Any) -> None:
90+
if player.index == 0:
91+
return
92+
93+
level = player.admin.level
94+
if level >= self.config["AntiSpam"]["ImmunityLevel"]:
95+
return
96+
97+
if player.chat_cooldown > self.loop.time():
98+
player.chat_cooldown += cooldown
99+
else:
100+
player.chat_cooldown = self.loop.time() + cooldown
101+
96102
def __del__(self) -> None:
97103
self.logger.debug("~Torchlight()")

src/torchlight/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "1.2.3"
1+
__version__ = "1.2.4"

0 commit comments

Comments
 (0)