feat(bump): add auto thread bumping
This commit is contained in:
+40
-1
@@ -291,6 +291,42 @@ class TelegramStarsBot:
|
||||
logger.exception(f"Критическая ошибка в главном цикле: {e}")
|
||||
await asyncio.sleep(self.config.check_interval)
|
||||
|
||||
async def _bump_loop(self):
|
||||
while True:
|
||||
try:
|
||||
logger.info(
|
||||
f"Проверка статуса поднятия для темы {self.config.lolz_thread_id}..."
|
||||
)
|
||||
|
||||
thread = await self.lolz_api.get_thread(
|
||||
thread_id=self.config.lolz_thread_id
|
||||
)
|
||||
can_bump = await self.lolz_api.can_bump(thread=thread)
|
||||
|
||||
if can_bump:
|
||||
try:
|
||||
await self.lolz_api.bump_thread(
|
||||
thread_id=self.config.lolz_thread_id
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Ошибка поднятия темы {self.config.lolz_thread_id}, пропускаю: {e}"
|
||||
)
|
||||
else:
|
||||
logger.info("Тему нельзя поднять.")
|
||||
|
||||
logger.info(f"Ожидание {self.config.check_interval} секунд...")
|
||||
await asyncio.sleep(self.config.bump_check_interval)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
logger.info("Получен сигнал прерывания (Ctrl+C).")
|
||||
break
|
||||
|
||||
except Exception as e:
|
||||
logger.exception(f"Критическая ошибка в цикле поднятия темы: {e}")
|
||||
await asyncio.sleep(self.config.check_interval)
|
||||
|
||||
async def start(self):
|
||||
is_first_login = not os.path.exists(f"{self.SESSION_NAME}.session")
|
||||
|
||||
@@ -334,7 +370,10 @@ class TelegramStarsBot:
|
||||
|
||||
logger.info(f"Проверка начинается со страницы: {self.start_page}")
|
||||
logger.info("Бот в работе. Для остановки нажмите Ctrl+C.")
|
||||
await self._main_loop()
|
||||
|
||||
# _main_loop - Основной цикл для остлеживания темы
|
||||
# _bump_look - Цикл для авто-поднятия темы
|
||||
await asyncio.gather(await self._main_loop(), await self._bump_loop())
|
||||
|
||||
finally:
|
||||
if self.client and self.client.is_connected:
|
||||
|
||||
Reference in New Issue
Block a user