Browse Source

Telegram Silent Notification and Web Page Preview Controls Added (#466)

pull/470/head
Chris Caron 3 years ago committed by GitHub
parent
commit
ac7eb86185
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 38
      apprise/plugins/NotifyTelegram.py
  2. 14
      test/test_rest_plugins.py

38
apprise/plugins/NotifyTelegram.py

@ -205,13 +205,23 @@ class NotifyTelegram(NotifyBase):
'default': True, 'default': True,
'map_to': 'detect_owner', 'map_to': 'detect_owner',
}, },
'silent': {
'name': _('Silent Notification'),
'type': 'bool',
'default': False,
},
'preview': {
'name': _('Web Page Preview'),
'type': 'bool',
'default': False,
},
'to': { 'to': {
'alias_of': 'targets', 'alias_of': 'targets',
}, },
}) })
def __init__(self, bot_token, targets, detect_owner=True, def __init__(self, bot_token, targets, detect_owner=True,
include_image=False, **kwargs): include_image=False, silent=None, preview=None, **kwargs):
""" """
Initialize Telegram Object Initialize Telegram Object
""" """
@ -229,6 +239,14 @@ class NotifyTelegram(NotifyBase):
# Parse our list # Parse our list
self.targets = parse_list(targets) self.targets = parse_list(targets)
# Define whether or not we should make audible alarms
self.silent = self.template_args['silent']['default'] \
if silent is None else bool(silent)
# Define whether or not we should display a web page preview
self.preview = self.template_args['preview']['default'] \
if preview is None else bool(preview)
# if detect_owner is set to True, we will attempt to determine who # if detect_owner is set to True, we will attempt to determine who
# the bot owner is based on the first person who messaged it. This # the bot owner is based on the first person who messaged it. This
# is not a fool proof way of doing things as over time Telegram removes # is not a fool proof way of doing things as over time Telegram removes
@ -513,7 +531,12 @@ class NotifyTelegram(NotifyBase):
'sendMessage' 'sendMessage'
) )
payload = {} payload = {
# Notification Audible Control
'disable_notification': self.silent,
# Display Web Page Preview (if possible)
'disable_web_page_preview': not self.preview,
}
# Prepare Email Message # Prepare Email Message
if self.notify_format == NotifyFormat.MARKDOWN: if self.notify_format == NotifyFormat.MARKDOWN:
@ -717,6 +740,8 @@ class NotifyTelegram(NotifyBase):
params = { params = {
'image': self.include_image, 'image': self.include_image,
'detect': 'yes' if self.detect_owner else 'no', 'detect': 'yes' if self.detect_owner else 'no',
'silent': 'yes' if self.silent else 'no',
'preview': 'yes' if self.preview else 'no',
} }
# Extend our parameters # Extend our parameters
@ -800,6 +825,15 @@ class NotifyTelegram(NotifyBase):
# Store our bot token # Store our bot token
results['bot_token'] = bot_token results['bot_token'] = bot_token
# Silent (Sends the message Silently); users will receive
# notification with no sound.
results['silent'] = \
parse_bool(results['qsd'].get('silent', False))
# Show Web Page Preview
results['preview'] = \
parse_bool(results['qsd'].get('preview', False))
# Include images with our message # Include images with our message
results['include_image'] = \ results['include_image'] = \
parse_bool(results['qsd'].get('image', False)) parse_bool(results['qsd'].get('image', False))

14
test/test_rest_plugins.py

@ -5039,6 +5039,20 @@ TEST_URLS = (
('tgram://123456789:abcdefg_hijklmnop/lead2gold/?format=text', { ('tgram://123456789:abcdefg_hijklmnop/lead2gold/?format=text', {
'instance': plugins.NotifyTelegram, 'instance': plugins.NotifyTelegram,
}), }),
# Test Silent Settings
('tgram://123456789:abcdefg_hijklmnop/lead2gold/?silent=yes', {
'instance': plugins.NotifyTelegram,
}),
('tgram://123456789:abcdefg_hijklmnop/lead2gold/?silent=no', {
'instance': plugins.NotifyTelegram,
}),
# Test Web Page Preview Settings
('tgram://123456789:abcdefg_hijklmnop/lead2gold/?preview=yes', {
'instance': plugins.NotifyTelegram,
}),
('tgram://123456789:abcdefg_hijklmnop/lead2gold/?preview=no', {
'instance': plugins.NotifyTelegram,
}),
# Simple Message without image # Simple Message without image
('tgram://123456789:abcdefg_hijklmnop/lead2gold/', { ('tgram://123456789:abcdefg_hijklmnop/lead2gold/', {
'instance': plugins.NotifyTelegram, 'instance': plugins.NotifyTelegram,

Loading…
Cancel
Save