diff --git a/config.ini b/config.ini
index 279b0e4..ba875c4 100644
--- a/config.ini
+++ b/config.ini
@@ -46,12 +46,6 @@ token = 12345:blahblah
# username, if it is public
chat = @username
-# Should we show link to post as a link after post content?
-show-post-link = yes
-
-# Should we show link to original author before post content?
-show-boost-from = yes
-
# Should we make posts silent?
# https://core.telegram.org/bots/api#sendmessage `disable_notification`
silent = true
@@ -63,6 +57,15 @@ type = discord
# Webhook URL with the `?wait=true`
webhook = url
+# Jinja2 template string for the post. Works only in Telegram.
+# This is the default template, not specifying that property at all will result
+# in this string (probably)
+# Pay attention to 4 spaces in the empty line, I think it's required
+template = {% if status.reblog %}Boost from {{status.reblog.account.name}}
+ {% endif %}{% if status.reblog_or_status.spoiler_text %}{{status.reblog_or_status.spoiler_text}}
+ {% endif %}{{ status.reblog_or_status.content_flathtml }}{% if status.reblog_or_status.spoiler_text %}{% endif %}
+
+ Link to post
;# Boost filter. Only boosts will be matched by that one
;[filter/boost]
diff --git a/mastoposter/__main__.py b/mastoposter/__main__.py
index 15eb5cb..ea645e5 100644
--- a/mastoposter/__main__.py
+++ b/mastoposter/__main__.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
from asyncio import run
-from configparser import ConfigParser
+from configparser import ConfigParser, ExtendedInterpolation
from mastoposter import execute_integrations, load_integrations_from
from mastoposter.integrations import FilteredIntegration
from mastoposter.sources import websocket_source
@@ -34,7 +34,7 @@ async def listen(
def main(config_path: str):
- conf = ConfigParser()
+ conf = ConfigParser(interpolation=ExtendedInterpolation())
conf.read(config_path)
for section in conf.sections():
diff --git a/mastoposter/integrations/telegram.py b/mastoposter/integrations/telegram.py
index 7e7b879..a916684 100644
--- a/mastoposter/integrations/telegram.py
+++ b/mastoposter/integrations/telegram.py
@@ -45,9 +45,10 @@ DEFAULT_TEMPLATE: str = """\
Boost from \
{{status.reblog.account.name}}\
{% endif %}\
-{% if status.spoiler_text %}{{status.spoiler_text}}
-{% endif %}{{ status.content_flathtml }}\
-{% if status.spoiler_text %}{% endif %}
+{% if status.reblog_or_status.spoiler_text %}\
+{{status.reblog_or_status.spoiler_text}}
+{% endif %}{{ status.reblog_or_status.content_flathtml }}\
+{% if status.reblog_or_status.spoiler_text %}{% endif %}
Link to post"""
@@ -56,10 +57,10 @@ class TelegramIntegration(BaseIntegration):
def __init__(self, sect: SectionProxy):
self.token = sect.get("token", "")
self.chat_id = sect.get("chat", "")
- self.show_post_link = sect.getboolean("show_post_link", True)
- self.show_boost_from = sect.getboolean("show_boost_from", True)
self.silent = sect.getboolean("silent", True)
- self.template = Template(sect.get("template", DEFAULT_TEMPLATE))
+ self.template: Template = Template(
+ sect.get("template", DEFAULT_TEMPLATE)
+ )
async def _tg_request(self, method: str, **kwargs) -> TGResponse:
url = API_URL.format(self.token, method)
@@ -181,12 +182,6 @@ class TelegramIntegration(BaseIntegration):
return (
""
- ).format(
- chat=self.chat_id,
- show_post_link=self.show_post_link,
- show_boost_from=self.show_boost_from,
- silent=self.silent,
- )
+ ).format(chat=self.chat_id, silent=self.silent, template=self.template)
diff --git a/mastoposter/types.py b/mastoposter/types.py
index 8010285..462e08e 100644
--- a/mastoposter/types.py
+++ b/mastoposter/types.py
@@ -312,6 +312,10 @@ class Status:
tags=[Tag.from_dict(m) for m in data.get("tags", [])],
)
+ @property
+ def reblog_or_status(self) -> "Status":
+ return self.reblog or self
+
@property
def link(self) -> str:
return self.account.url + "/" + str(self.id)