add files
This commit is contained in:
1 parent
4b06cd8a77
commit
8f2efee524
8 files changed
+291
-92
No files matched your search
@@ -5,6 +5,8 @@ from sqlalchemy import and_
|
||||
|
||||
from app.core.logger import make_log
|
||||
from app.core.models.messages import KnownTelegramMessage
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select
|
||||
from app.core._config import TELEGRAM_API_KEY, CLIENT_TELEGRAM_API_KEY
|
||||
|
||||
from app.core.models._telegram.templates.player import PlayerTemplates
|
||||
@@ -56,25 +58,36 @@ class Wrapped_CBotChat(T, PlayerTemplates):
|
||||
if self.db_session:
|
||||
if message_type == 'common':
|
||||
ci = 0
|
||||
for oc_msg in self.db_session.query(KnownTelegramMessage).filter(
|
||||
and_(
|
||||
KnownTelegramMessage.type == 'common',
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.deleted == False
|
||||
)
|
||||
).all():
|
||||
if isinstance(self.db_session, AsyncSession):
|
||||
res = await self.db_session.execute(select(KnownTelegramMessage).where(
|
||||
and_(
|
||||
KnownTelegramMessage.type == 'common',
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.deleted == False
|
||||
)
|
||||
))
|
||||
old = res.scalars().all()
|
||||
else:
|
||||
old = self.db_session.query(KnownTelegramMessage).filter(
|
||||
and_(
|
||||
KnownTelegramMessage.type == 'common',
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.deleted == False
|
||||
)
|
||||
).all()
|
||||
for oc_msg in old:
|
||||
make_log(self, f"Delete old message {oc_msg.message_id} {oc_msg.type} {oc_msg.bot_id} {oc_msg.chat_id}")
|
||||
await self.delete_message(oc_msg.message_id)
|
||||
ci += 1
|
||||
|
||||
make_log(self, f"Deleted {ci} old messages", level='debug')
|
||||
|
||||
if isinstance(result, types.Message):
|
||||
message_id = getattr(result, 'message_id', None)
|
||||
assert message_id, "No message_id"
|
||||
self.db_session.add(
|
||||
KnownTelegramMessage(
|
||||
if isinstance(self.db_session, AsyncSession):
|
||||
self.db_session.add(KnownTelegramMessage(
|
||||
type=message_type,
|
||||
bot_id=self.bot_id,
|
||||
chat_id=self._chat_id,
|
||||
@@ -83,9 +96,20 @@ class Wrapped_CBotChat(T, PlayerTemplates):
|
||||
created=datetime.now(),
|
||||
meta=message_meta or {},
|
||||
content_id=content_id
|
||||
)
|
||||
)
|
||||
self.db_session.commit()
|
||||
))
|
||||
await self.db_session.commit()
|
||||
else:
|
||||
self.db_session.add(KnownTelegramMessage(
|
||||
type=message_type,
|
||||
bot_id=self.bot_id,
|
||||
chat_id=self._chat_id,
|
||||
message_id=message_id,
|
||||
from_user=False,
|
||||
created=datetime.now(),
|
||||
meta=message_meta or {},
|
||||
content_id=content_id
|
||||
))
|
||||
self.db_session.commit()
|
||||
else:
|
||||
make_log(self, f"Unknown result type: {type(result)}", level='warning')
|
||||
|
||||
@@ -137,14 +161,28 @@ class Wrapped_CBotChat(T, PlayerTemplates):
|
||||
message_id
|
||||
)):
|
||||
if self.db_session:
|
||||
known_message = self.db_session.query(KnownTelegramMessage).filter(
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.message_id == message_id
|
||||
).first()
|
||||
known_message = None
|
||||
if isinstance(self.db_session, AsyncSession):
|
||||
res = await self.db_session.execute(select(KnownTelegramMessage).where(
|
||||
and_(
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.message_id == message_id
|
||||
)
|
||||
))
|
||||
known_message = res.scalars().first()
|
||||
else:
|
||||
known_message = self.db_session.query(KnownTelegramMessage).filter(
|
||||
KnownTelegramMessage.bot_id == self.bot_id,
|
||||
KnownTelegramMessage.chat_id == self._chat_id,
|
||||
KnownTelegramMessage.message_id == message_id
|
||||
).first()
|
||||
if known_message:
|
||||
known_message.deleted = True
|
||||
self.db_session.commit()
|
||||
if isinstance(self.db_session, AsyncSession):
|
||||
await self.db_session.commit()
|
||||
else:
|
||||
self.db_session.commit()
|
||||
except Exception as e:
|
||||
make_log(self, f"Error deleting message {self._chat_id}/{message_id}. Error: {e}", level='warning')
|
||||
return None
|
||||
|
||||
Reference in new issue
Block a user