initial commit
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
commit
c22dade3d5
21 files changed
+564
No files matched your search
@@ -0,0 +1,28 @@
|
||||
import asyncio,time,aiohttp
|
||||
from core.text import split
|
||||
class Hook:
|
||||
def __init__(s,url):
|
||||
s.url=url;s.q=asyncio.Queue();s.task=None;s.http=None
|
||||
async def start(s):
|
||||
s.http=aiohttp.ClientSession();s.task=asyncio.create_task(s.run())
|
||||
def put(s,text):
|
||||
line=f"`{time.strftime('%d/%m %H:%M:%S')}` {text}"
|
||||
print(line)
|
||||
if s.url:
|
||||
for c in split(line,1900):s.q.put_nowait(c)
|
||||
async def run(s):
|
||||
while True:
|
||||
item=await s.q.get()
|
||||
for i in range(6):
|
||||
try:
|
||||
async with s.http.post(s.url,json={"content":item,"allowed_mentions":{"parse":[]}}) as r:
|
||||
if r.status==429:
|
||||
await asyncio.sleep(float((await r.json()).get("retry_after",1))+.1);continue
|
||||
if r.status<500:break
|
||||
await asyncio.sleep(1+i)
|
||||
except Exception:await asyncio.sleep(1+i)
|
||||
s.q.task_done();await asyncio.sleep(.25)
|
||||
async def close(s):
|
||||
try:await asyncio.wait_for(s.q.join(),15)
|
||||
except asyncio.TimeoutError:pass
|
||||
s.task.cancel();await s.http.close()
|
||||
Reference in new issue
Block a user