This commit is contained in:
retoor 2025-08-30 15:39:27 +02:00
parent edeaceba25
commit e0f9aca6ab

View File

@ -33,6 +33,7 @@ class Bot:
self.rpc = None self.rpc = None
self.ws = None self.ws = None
self.joined = set() self.joined = set()
self.semaphore = asyncio.Semaphore(1)
async def on_init(self): async def on_init(self):
logger.debug("Bot initialized.") logger.debug("Bot initialized.")
@ -115,36 +116,38 @@ class Bot:
await self.on_idle() await self.on_idle()
message = None message = None
data = None
while True: while True:
data = await rpc.receive() async iwth self.semaphore:
if not data: data = await rpc.receive()
return if not data:
return
event = "?"
try: event = "?"
event = data.event try:
except AttributeError: event = data.event
pass except AttributeError:
pass
try:
message = data.message.strip()
event = "message"
except AttributeError:
pass
if event == "?": try:
continue message = data.message.strip()
elif event == "message": event = "message"
if not data.is_final: except AttributeError:
continue pass
break
if event == "?":
continue
elif event == "message":
if not data.is_final:
continue
break
try: try:
await getattr(self, "on_" + data.event)(**data.data) await getattr(self, "on_" + data.event)(**data.data)
except AttributeError: except AttributeError:
logger.debug("Not implemented event: " + event) logger.debug("Not implemented event: " + event)
if data.username == self.user["username"]: if data.username == self.user["username"]:
await self.on_own_message(data.channel_uid, message) await self.on_own_message(data.channel_uid, message)
elif message.startswith("ping"): elif message.startswith("ping"):