diff --git a/flanabot/bots/ubereats_bot.py b/flanabot/bots/ubereats_bot.py
index 971fb5c..3a36230 100644
--- a/flanabot/bots/ubereats_bot.py
+++ b/flanabot/bots/ubereats_bot.py
@@ -47,7 +47,7 @@ class UberEatsBot(MultiBot, ABC):
if playwright_ := self.task_contexts[chat.id]['playwright']:
await playwright_.stop()
- async def _scrape_codes(self, chat: Chat) -> list[str]:
+ async def _scrape_codes(self, chat: Chat) -> list[str | None]:
async def get_code() -> str:
if code_input := await page.query_selector("input[class='code toCopy']"):
return await code_input.input_value()
@@ -58,7 +58,7 @@ class UberEatsBot(MultiBot, ABC):
await page.click("'Copiar'")
return pyperclip.paste()
- codes = []
+ codes: list[str | None] = [None] * len(chat.ubereats['cookies'])
async with playwright.async_api.async_playwright() as playwright_:
self.task_contexts[chat.id]['playwright'] = playwright_
@@ -97,7 +97,7 @@ class UberEatsBot(MultiBot, ABC):
code = new_code
break
await asyncio.sleep(0.5)
- codes.append(code)
+ codes[i] = code
chat.ubereats['cookies'][i] = await context.cookies('https://www.myunidays.com')
except playwright.async_api.Error:
@@ -139,19 +139,24 @@ class UberEatsBot(MultiBot, ABC):
async def send_ubereats_code(self, chat: Chat, update_next_execution=True):
chat.pull_from_database(overwrite_fields=('ubereats',))
- new_codes = []
- for code in await self._scrape_codes(chat):
- new_codes.append(code)
-
- if code in chat.ubereats['last_codes']:
- warning_text = 'Código ya enviado anteriormente: '
+ codes = await self._scrape_codes(chat)
+ for i, code in enumerate(codes):
+ if code:
+ if code in chat.ubereats['last_codes']:
+ warning_text = 'Código ya enviado anteriormente: '
+ else:
+ warning_text = ''
+ await self.send(f'{warning_text}{code}', chat, silent=True)
else:
- warning_text = ''
- await self.send(f'{warning_text}{code}', chat, silent=True)
- chat.ubereats['last_codes'] = new_codes
+ try:
+ codes[i] = chat.ubereats['last_codes'][i]
+ except IndexError:
+ codes[i] = None
+ chat.ubereats['last_codes'] = codes
if update_next_execution:
chat.ubereats['next_execution'] = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(seconds=chat.ubereats['seconds'])
+
chat.save()
async def start_ubereats(self, chat: Chat, send_code_now=True):