Compare commits

..

No commits in common. "557d19ea0dd4b281bc07f67e98d1250955cfcd51" and "cd95928843132c58ffe7f6f18d6417411c249328" have entirely different histories.

5 changed files with 24 additions and 23 deletions

View File

@ -2,18 +2,18 @@ from app.extensions import db
from app.models.task import Task from app.models.task import Task
def success_state(task_id): def success_state(task_id):
task = Task.query.get(task_id) task = Task.query.filter_by(task_id=task_id).one()
task.status = "SUCCESS" task.status = "SUCCESS"
task.status_message = "задача выполнена успешно" task.status_message = "Задача выполнена успешно"
db.session.commit() db.session.commit()
def failure_state(task_id, exception): def failure_state(task_id, exception):
task = Task.query.get(task_id) task = Task.query.filter_by(task_id=task_id).one()
task.status = "FAILURE" task.status = "FAILURE"
task.status_message = f"произошла ошибка {str(exception)}" task.status_message = f"Произошла ошибка: {str(exception)}"
db.session.commit() db.session.commit()
@ -22,6 +22,6 @@ def run_state(task_id, task_record_id):
task.task_id = task_id task.task_id = task_id
task.status = "RUNNING" task.status = "RUNNING"
task.status_message = "задача запущена" task.status_message = "Задача запущена"
db.session.commit() db.session.commit()

View File

@ -31,11 +31,11 @@ def add_to_group_task(self, task_id):
) )
except Exception as e: except Exception as e:
failure_state(task_id, e) failure_state(self.request.id, e)
raise e raise e
else: else:
success_state(task_id) success_state(self.request.id)

View File

@ -23,8 +23,7 @@ from telethon.errors.rpcerrorlist import (
UsersTooMuchError, UsersTooMuchError,
UserChannelsTooMuchError, UserChannelsTooMuchError,
UserIsBlockedError, UserIsBlockedError,
YouBlockedUserError, YouBlockedUserError
UsernameInvalidError,
) )
class PaperClient(TelegramClient): class PaperClient(TelegramClient):
@ -94,13 +93,11 @@ class PaperClient(TelegramClient):
return await super().get_participants(group, *args, **kwargs) return await super().get_participants(group, *args, **kwargs)
async def __cast_to_entity(self, entity: Entity | EntityLike) -> Entity: async def __cast_to_entity(self, entity: Entity | EntityLike) -> Entity:
try: if not isinstance(entity, Entity):
if not isinstance(entity, Entity): if hasattr(entity, "username"):
if hasattr(entity, "username"): entity = await self.get_entity(entity.username)
entity = await self.get_entity(entity.username) else:
else: entity = await self.get_entity(entity)
entity = await self.get_entity(entity)
return entity # type: ignore
return entity # type: ignore
except UsernameInvalidError as e:
raise IgnoreException(e)

View File

@ -18,9 +18,8 @@ class FloodException(Exception):
def __init__(self, error, *args: object): def __init__(self, error, *args: object):
self.error = error self.error = error
self.seconds = self.error.seconds if hasattr(self.error, "seconds") else -1 #type: ignore self.seconds = self.error.seconds if hasattr(self.error, "seconds") else -1 #type: ignore
self.message = f"Flood wait for {self.seconds}" if self.seconds > 0 else "Flood error"
super().__init__(self.message, *args) super().__init__(*args)
class IgnoreException(Exception): class IgnoreException(Exception):
def __init__(self, error, *args): def __init__(self, error, *args):

View File

@ -35,11 +35,15 @@ class PaperParser:
except (UserPrivacyException, IgnoreException) as e: except (UserPrivacyException, IgnoreException) as e:
self.users_to_delete.append(user) self.users_to_delete.append(user)
logger.exception(e)
logger.warning("Exception occurred. Skipping user...") logger.warning("Exception occurred. Skipping user...")
except Exception as e:
logger.exception(e)
finally: finally:
if not task.is_aborted(): if not task.is_aborted():
await asyncio.sleep(70) # FIXME: Change to config value await asyncio.sleep(50) # FIXME: Change to config value
async def send_messages(self, users, message: str, file: str | None = None, task = None): async def send_messages(self, users, message: str, file: str | None = None, task = None):
# TODO: Filter users, that already get this message # TODO: Filter users, that already get this message
@ -57,11 +61,12 @@ class PaperParser:
except (UserPrivacyException, IgnoreException) as e: except (UserPrivacyException, IgnoreException) as e:
self.users_to_delete.append(user) self.users_to_delete.append(user)
logger.exception(e)
logger.warning("Exception occurred. Skipping user...") logger.warning("Exception occurred. Skipping user...")
finally: finally:
if not task.is_aborted(): if not task.is_aborted():
await asyncio.sleep(70) # FIXME: Change to config value await asyncio.sleep(50) # FIXME: Change to config value
async def get_participants(self, group): async def get_participants(self, group):
await self.client.invite_self(group) await self.client.invite_self(group)