Skip to content

Commit b04ac78

Browse files
committed
Hotfix v4.0.1 for thread cooldown
1 parent 8130566 commit b04ac78

12 files changed

+111
-41
lines changed

CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
66
This project mostly adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html);
77
however, insignificant breaking changes do not guarantee a major version bump, see the reasoning [here](https://github.com/kyb3r/modmail/issues/319). If you're a plugin developer, note the "BREAKING" section.
88

9+
# v4.0.1
10+
11+
This is a hotfix release.
12+
13+
### Improved
14+
15+
- Error Messages
16+
17+
### Fixed
18+
19+
- Thread cooldown
20+
21+
922
# v4.0.0
1023

1124
### Breaking

Pipfile

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ python-dateutil = "~=2.8.1"
2323
python-dotenv = "==0.20.0"
2424
uvloop = {version = ">=0.15.2", markers = "sys_platform != 'win32'"}
2525
lottie = {version = "==0.6.11", extras = ["pdf"]}
26+
requests = "==2.28.1"
2627

2728
[scripts]
2829
bot = "python bot.py"

Pipfile.lock

+73-25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<br>
77

88
<a href="#">
9-
<img src="https://img.shields.io/badge/Latest%20Version-v4.0.0-7289da?style=for-the-badge&logo=data:image/gif;base64,R0lGODlhGAAYAPcAAAAAADQ+Yj5MdThCaEFOekNQfWt5e1lqfEdVhVpriVx1iVtsnFZpll1xlF1znFx5mGNtjGR7hWNzjGd5iWJunGNslmN0lGl1lGN5lWt7lWR0nGp1nWR5nGt8nHJ9l3J9jFxto1xtqlZqqF5zpF15pV10rVx5q1Z2ql1us150s114sV50uVd1smJupGNurGN0pGp1pGR6o2t7o2F0rml0rGR5rGt8q3J9pGNus2Fvu2Bzs2p2smR5s2t7tGF0u2N6vGp7u2l1uXJ+uGJ1wWV7w2l+xWl+yl5zwHWDiWyCmHODnHiGmHSLkW2CpGuEqnSCpHqMo3ODrHWKrXyMq3iHp3yTqGyEtWqFunKDs3uLtHSGvXSMvHuMu3eItnyTs3yTu3iUuW+RsV+ApmuCxG2Dy22LxnSMxHuMxHGGzXSLzXqLzXWFxXyTw3uSy3WSx26E0W+N2m+L1XKG03SL1XmL1HOL2HmL23WF2XiS1m+QyHOK4XmL4XaH4nGM5ImXm4WOlJSjnoOOq4OOpYSUrImXqJOcqYONt4OUtIybtIOUu4ycvImYt5OcuIyiqZekqYyiupOjvJurvJimtp+yvqKruae2ua23trLCucPHvIOMxoOUxIuaw4eYyJKbyISW1YiW0o2kyJWlxJqpxZWkzJury5aoxp6xxZ2zyZio1Jyy2Yuk0aOsyKOyxKOzzKy8zKq2yLO7xqOr1KSz1Ku706W026y73Ki21bK716u75LS95KSu4Zyx6bPDzLjGx63B2LPD1LTE3LvL3brI17/S2bbKzrTE47rF47zM5L3M67bH577R5L7R67zK8rjM8MLM3MPK1sTT3crU3MjW2dLZ2srUy8PN5MTO68nP68jL48TS5MnT5cbR68jS7M3b7Mva5dTb6MTO8srO8szF8MXR8snS8c3a8cnY+NXb9tDL7dnm6dzk8tro99Pq9uTp6+r17fr77eTr/efr+Oz09OXz/Ov0/e37/uj39fX19fX89fz+9vP1/fX9/f7//vr2/ODl4sK75yH5BAEAAAAALAAAAAAYABgAAAj/AAEAmFOnoMGDCAvGmRNHYMKHEOdIhEgRIcGKGDMeTJVO00WNBj194/frFik5IOvgqdaP371N26xpefORYq57/HI+s7Vtmy0eKCmmapcz575FPXt+SfHmociiRae1SroNWIoVTQ2uxAk15yJg1awl7ZSCaUE82uRxhTpt1TNXq0Ip2pSobIqCc0iVoqsI0ipXr1bhywfVXxYdiA3Sourz2dqc8lbNQJz4bDWqix73E7ZjhgrKOjYmvfWLbZcZqCdTPjjHGLdtibi2U5Q6NWiEqqq64ifvVe3at1nX2tTuWQ/QyIMfxHOGi+rkyeMklPMDuvWaBqlbj469IPUU2ykPCOw+53t4AAEBADs=">
9+
<img src="https://img.shields.io/badge/Latest%20Version-v4.0.1-7289da?style=for-the-badge&logo=data:image/gif;base64,R0lGODlhGAAYAPcAAAAAADQ+Yj5MdThCaEFOekNQfWt5e1lqfEdVhVpriVx1iVtsnFZpll1xlF1znFx5mGNtjGR7hWNzjGd5iWJunGNslmN0lGl1lGN5lWt7lWR0nGp1nWR5nGt8nHJ9l3J9jFxto1xtqlZqqF5zpF15pV10rVx5q1Z2ql1us150s114sV50uVd1smJupGNurGN0pGp1pGR6o2t7o2F0rml0rGR5rGt8q3J9pGNus2Fvu2Bzs2p2smR5s2t7tGF0u2N6vGp7u2l1uXJ+uGJ1wWV7w2l+xWl+yl5zwHWDiWyCmHODnHiGmHSLkW2CpGuEqnSCpHqMo3ODrHWKrXyMq3iHp3yTqGyEtWqFunKDs3uLtHSGvXSMvHuMu3eItnyTs3yTu3iUuW+RsV+ApmuCxG2Dy22LxnSMxHuMxHGGzXSLzXqLzXWFxXyTw3uSy3WSx26E0W+N2m+L1XKG03SL1XmL1HOL2HmL23WF2XiS1m+QyHOK4XmL4XaH4nGM5ImXm4WOlJSjnoOOq4OOpYSUrImXqJOcqYONt4OUtIybtIOUu4ycvImYt5OcuIyiqZekqYyiupOjvJurvJimtp+yvqKruae2ua23trLCucPHvIOMxoOUxIuaw4eYyJKbyISW1YiW0o2kyJWlxJqpxZWkzJury5aoxp6xxZ2zyZio1Jyy2Yuk0aOsyKOyxKOzzKy8zKq2yLO7xqOr1KSz1Ku706W026y73Ki21bK716u75LS95KSu4Zyx6bPDzLjGx63B2LPD1LTE3LvL3brI17/S2bbKzrTE47rF47zM5L3M67bH577R5L7R67zK8rjM8MLM3MPK1sTT3crU3MjW2dLZ2srUy8PN5MTO68nP68jL48TS5MnT5cbR68jS7M3b7Mva5dTb6MTO8srO8szF8MXR8snS8c3a8cnY+NXb9tDL7dnm6dzk8tro99Pq9uTp6+r17fr77eTr/efr+Oz09OXz/Ov0/e37/uj39fX19fX89fz+9vP1/fX9/f7//vr2/ODl4sK75yH5BAEAAAAALAAAAAAYABgAAAj/AAEAmFOnoMGDCAvGmRNHYMKHEOdIhEgRIcGKGDMeTJVO00WNBj194/frFik5IOvgqdaP371N26xpefORYq57/HI+s7Vtmy0eKCmmapcz575FPXt+SfHmociiRae1SroNWIoVTQ2uxAk15yJg1awl7ZSCaUE82uRxhTpt1TNXq0Ip2pSobIqCc0iVoqsI0ipXr1bhywfVXxYdiA3Sourz2dqc8lbNQJz4bDWqix73E7ZjhgrKOjYmvfWLbZcZqCdTPjjHGLdtibi2U5Q6NWiEqqq64ifvVe3at1nX2tTuWQ/QyIMfxHOGi+rkyeMklPMDuvWaBqlbj469IPUU2ykPCOw+53t4AAEBADs=">
1010
</a>
1111

1212
<br>

bot.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "4.0.0"
1+
__version__ = "4.0.1"
22

33

44
import asyncio
@@ -10,6 +10,7 @@
1010
import string
1111
import struct
1212
import sys
13+
import platform
1314
import typing
1415
from datetime import datetime, timezone
1516
from subprocess import PIPE
@@ -857,10 +858,12 @@ async def get_thread_cooldown(self, author: discord.Member):
857858
return
858859

859860
try:
860-
cooldown = datetime.fromisoformat(last_log_closed_at) + thread_cooldown
861+
cooldown = datetime.fromisoformat(last_log_closed_at).astimezone(timezone.utc) + thread_cooldown
861862
except ValueError:
862863
logger.warning("Error with 'thread_cooldown'.", exc_info=True)
863-
cooldown = datetime.fromisoformat(last_log_closed_at) + self.config.remove("thread_cooldown")
864+
cooldown = datetime.fromisoformat(last_log_closed_at).astimezone(
865+
timezone.utc
866+
) + self.config.remove("thread_cooldown")
864867

865868
if cooldown > now:
866869
# User messaged before thread cooldown ended
@@ -1774,9 +1777,14 @@ def main():
17741777
"Unable to import cairosvg, install GTK Installer for Windows and restart your system (https://github.com/tschoonj/GTK-for-Windows-Runtime-Environment-Installer/releases/latest)"
17751778
)
17761779
else:
1777-
logger.error(
1778-
"Unable to import cairosvg, report on our support server with your OS details: https://discord.gg/etJNHCQ"
1779-
)
1780+
if "ubuntu" in platform.version().lower() or "debian" in platform.version().lower():
1781+
logger.error(
1782+
"Unable to import cairosvg, try running `sudo apt-get install libpangocairo-1.0-0` or report on our support server with your OS details: https://discord.gg/etJNHCQ"
1783+
)
1784+
else:
1785+
logger.error(
1786+
"Unable to import cairosvg, report on our support server with your OS details: https://discord.gg/etJNHCQ"
1787+
)
17801788
sys.exit(0)
17811789

17821790
# check discord version

cogs/modmail.py

-1
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,6 @@ async def blocked(self, ctx):
16831683
continue
16841684

16851685
if end_time is not None:
1686-
after = (datetime.fromisoformat(end_time.group(1)) - now).total_seconds()
16871686
if after <= 0:
16881687
# No longer blocked
16891688
self.bot.blocked_roles.pop(str(id_))

cogs/utility.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@ async def config_set(self, ctx, key: str.lower, *, value: str):
810810

811811
if key in keys:
812812
try:
813-
self.bot.config.set(key, value)
813+
await self.bot.config.set(key, value)
814814
await self.bot.config.update()
815815
embed = discord.Embed(
816816
title="Success",

core/config.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ def get(self, key: str, convert=True) -> typing.Any:
366366

367367
return value
368368

369-
def set(self, key: str, item: typing.Any, convert=True) -> None:
369+
async def set(self, key: str, item: typing.Any, convert=True) -> None:
370370
if not convert:
371371
return self.__setitem__(key, item)
372372

@@ -401,7 +401,7 @@ def set(self, key: str, item: typing.Any, convert=True) -> None:
401401
except isodate.ISO8601Error:
402402
try:
403403
converter = UserFriendlyTime()
404-
time = converter.convert(None, item)
404+
time = await converter.convert(None, item, now=discord.utils.utcnow())
405405
if time.arg:
406406
raise ValueError
407407
except BadArgument as exc:

core/thread.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ async def _restart_close_timer(self):
568568
seconds = timeout.total_seconds()
569569
# seconds = 20 # Uncomment to debug with just 20 seconds
570570
reset_time = discord.utils.utcnow() + timedelta(seconds=seconds)
571-
human_time = human_timedelta(dt=reset_time, spec="manual")
571+
human_time = discord.utils.format_dt(reset_time)
572572

573573
if self.bot.config.get("thread_auto_close_silently"):
574574
return await self.close(closer=self.bot.user, silent=True, after=int(seconds), auto_close=True)

0 commit comments

Comments
 (0)