Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bf9bda8b03 | |||
| 489d09a0f6 | |||
| d96356a310 | |||
| d3c3912645 | |||
| 92830c3a64 | |||
| 00faab2213 | |||
| d6294ebb45 | |||
| 87aa0b6659 | |||
| bb167b14ef |
@@ -0,0 +1,38 @@
|
|||||||
|
image: docker:stable
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- build
|
||||||
|
- push
|
||||||
|
|
||||||
|
default:
|
||||||
|
before_script:
|
||||||
|
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
|
||||||
|
|
||||||
|
build:
|
||||||
|
stage: build
|
||||||
|
script:
|
||||||
|
- docker pull $CI_REGISTRY_IMAGE:latest || true
|
||||||
|
- docker build --pull --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
|
||||||
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
||||||
|
|
||||||
|
push latest:
|
||||||
|
stage: push
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
variables:
|
||||||
|
GIT_STRATEGY: none
|
||||||
|
script:
|
||||||
|
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
||||||
|
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
|
||||||
|
- docker push $CI_REGISTRY_IMAGE:latest
|
||||||
|
|
||||||
|
push tag:
|
||||||
|
stage: push
|
||||||
|
variables:
|
||||||
|
GIT_STRATEGY: none
|
||||||
|
except:
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
|
||||||
|
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
|
||||||
|
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
__version__ = "0.6.0"
|
__version__ = "0.6.1"
|
||||||
__author__ = "Tulir Asokan <tulir@maunium.net>"
|
__author__ = "Tulir Asokan <tulir@maunium.net>"
|
||||||
|
|||||||
@@ -170,7 +170,9 @@ class MatrixParser:
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def node_to_tmessage(cls, node: HTMLNode, ctx: RecursionContext) -> TelegramMessage:
|
def node_to_tmessage(cls, node: HTMLNode, ctx: RecursionContext) -> TelegramMessage:
|
||||||
if node.tag == "ol":
|
if node.tag == "mx-reply":
|
||||||
|
return TelegramMessage("")
|
||||||
|
elif node.tag == "ol":
|
||||||
return cls.list_to_tmessage(node, ctx)
|
return cls.list_to_tmessage(node, ctx)
|
||||||
elif node.tag == "ul":
|
elif node.tag == "ul":
|
||||||
return cls.list_to_tmessage(node, ctx.enter_list())
|
return cls.list_to_tmessage(node, ctx.enter_list())
|
||||||
|
|||||||
@@ -346,7 +346,10 @@ class Portal:
|
|||||||
await self.invite_to_matrix(invites or [])
|
await self.invite_to_matrix(invites or [])
|
||||||
return self.mxid
|
return self.mxid
|
||||||
async with self._room_create_lock:
|
async with self._room_create_lock:
|
||||||
return await self._create_matrix_room(user, entity, invites)
|
try:
|
||||||
|
return await self._create_matrix_room(user, entity, invites)
|
||||||
|
except Exception:
|
||||||
|
self.log.exception("Fatal error creating Matrix room")
|
||||||
|
|
||||||
async def _create_matrix_room(self, user: 'AbstractUser', entity: TypeChat, invites: InviteList
|
async def _create_matrix_room(self, user: 'AbstractUser', entity: TypeChat, invites: InviteList
|
||||||
) -> Optional[MatrixRoomID]:
|
) -> Optional[MatrixRoomID]:
|
||||||
@@ -996,9 +999,10 @@ class Portal:
|
|||||||
relates_to = message.get("m.relates_to", None) or {}
|
relates_to = message.get("m.relates_to", None) or {}
|
||||||
if relates_to.get("rel_type", None) == "m.replace":
|
if relates_to.get("rel_type", None) == "m.replace":
|
||||||
orig_msg = DBMessage.get_by_mxid(relates_to.get("event_id", ""), self.mxid, space)
|
orig_msg = DBMessage.get_by_mxid(relates_to.get("event_id", ""), self.mxid, space)
|
||||||
if orig_msg:
|
if orig_msg and "m.new_content" in message:
|
||||||
response = await client.edit_message(self.peer, orig_msg.tgid,
|
message = message["m.new_content"]
|
||||||
message.get("m.new_content", message),
|
formatter.matrix_reply_to_telegram(message, space, room_id=self.mxid)
|
||||||
|
response = await client.edit_message(self.peer, orig_msg.tgid, message,
|
||||||
parse_mode=self._matrix_event_to_entities,
|
parse_mode=self._matrix_event_to_entities,
|
||||||
link_preview=lp)
|
link_preview=lp)
|
||||||
self._add_telegram_message_to_db(event_id, space, -1, response)
|
self._add_telegram_message_to_db(event_id, space, -1, response)
|
||||||
|
|||||||
@@ -379,7 +379,7 @@ class Puppet:
|
|||||||
self.displayname = displayname
|
self.displayname = displayname
|
||||||
self.displayname_source = source.tgid
|
self.displayname_source = source.tgid
|
||||||
try:
|
try:
|
||||||
await self.default_mxid_intent.set_display_name(displayname)
|
await self.default_mxid_intent.set_display_name(displayname[:100])
|
||||||
except MatrixRequestError:
|
except MatrixRequestError:
|
||||||
self.log.exception("Failed to set displayname")
|
self.log.exception("Failed to set displayname")
|
||||||
self.displayname = ""
|
self.displayname = ""
|
||||||
|
|||||||
@@ -161,6 +161,12 @@ class User(AbstractUser):
|
|||||||
# endregion
|
# endregion
|
||||||
# region Telegram connection management
|
# region Telegram connection management
|
||||||
|
|
||||||
|
async def try_ensure_started(self) -> None:
|
||||||
|
try:
|
||||||
|
await self.ensure_started()
|
||||||
|
except Exception:
|
||||||
|
self.log.exception("Exception in ensure_started")
|
||||||
|
|
||||||
def ensure_started(self, even_if_no_session=False) -> Awaitable['User']:
|
def ensure_started(self, even_if_no_session=False) -> Awaitable['User']:
|
||||||
return super().ensure_started(even_if_no_session)
|
return super().ensure_started(even_if_no_session)
|
||||||
|
|
||||||
@@ -400,9 +406,9 @@ class User(AbstractUser):
|
|||||||
# endregion
|
# endregion
|
||||||
|
|
||||||
|
|
||||||
def init(context: 'Context') -> List[Awaitable['User']]:
|
def init(context: 'Context') -> List[Awaitable[None]]:
|
||||||
global config
|
global config
|
||||||
config = context.config
|
config = context.config
|
||||||
|
|
||||||
users = [User.from_db(user) for user in DBUser.all()]
|
users = [User.from_db(user) for user in DBUser.all()]
|
||||||
return [user.ensure_started() for user in users if user.tgid]
|
return [user.try_ensure_started() for user in users if user.tgid]
|
||||||
|
|||||||
Reference in New Issue
Block a user