66`_.
77"""
88
9+ import asyncio
910import json
1011import logging
1112from dataclasses import dataclass
1213from datetime import datetime
1314from socket import gethostname
15+ from threading import Thread
1416from time import time
1517
1618from aiohttp import ClientSession
@@ -58,10 +60,10 @@ def __post_init__(
5860 }
5961 self .datetime = datetime .now ().astimezone ()
6062 if self .timeout is None :
61- self .timeout = ClientTimeout (1 )
63+ self .timeout = ClientTimeout (10 )
6264 self .session = None
6365
64- async def __call__ (self , xp : int = 1 ) -> None :
66+ def __call__ (self , xp : int = 1 ) -> None :
6567 """Add xp.
6668
6769 Sem sections are super small so this should be quick if it blocks.
@@ -71,20 +73,18 @@ async def __call__(self, xp: int = 1) -> None:
7173 :rtype: None
7274 """
7375 self .data ["xps" ][0 ]["xp" ] += xp
74- if time () - self .datetime .timestamp () > self .interval :
75- await self .send_xp ()
76-
77- async def __del__ (self ) -> None :
78- await self .send_xp ()
76+ if (
77+ time () - self .datetime .timestamp () > self .interval
78+ and self .data ["xps" ][0 ]["xp" ] > 0
79+ ):
80+ co = self .send_xp ()
81+ Thread (target = asyncio .run , args = (co ,)).run ()
7982
8083 async def send_xp (self ) -> str :
8184 """Send xp.
8285
8386 :rtype: str
8487 """
85- if self .data ["xps" ][0 ]["xp" ] == 0 :
86- return ""
87-
8888 self .datetime = datetime .now ().astimezone ()
8989 self .data ["coded_at" ] = self .datetime .isoformat ()
9090 data = json .dumps (self .data ).encode ("utf-8" )
0 commit comments