from couchpotato.core.helpers.variable import getIdentifier
from couchpotato.core.logger import CPLog
from couchpotato.core.notifications.base import Notification
import requests
import six
log = CPLog(__name__)
autoload = 'TelegramBot'
class TelegramBot(Notification):
TELEGRAM_API = "https://api.telegram.org/bot%s/%s"
def notify(self, message = '', data = None, listener = None):
if not data: data = {}
# Get configuration data
token = self.conf('bot_token')
usr_id = self.conf('receiver_user_id')
# Add IMDB url to message:
if data:
imdb_id = getIdentifier(data)
if imdb_id:
url = 'http://www.imdb.com/title/{0}/'.format(imdb_id)
message = '{0}\n{1}'.format(message, url)
# Cosntruct message
payload = {'chat_id': usr_id, 'text': message, 'parse_mode': 'Markdown'}
# Send message user Telegram's Bot API
response = requests.post(self.TELEGRAM_API % (token, "sendMessage"), data=payload)
# Error logging
sent_successfuly = True
if not response.status_code == 200:
log.error('Could not send notification to TelegramBot (token=%s). Response: [%s]', (token, response.text))
sent_successfuly = False
return sent_successfuly
config = [{
'name': 'telegrambot',
'groups': [
{
'tab': 'notifications',
'list': 'notification_providers',
'name': 'telegrambot',
'label': 'Telegram Bot',
'description': 'Notification provider which utilizes the bot API of the famous Telegram IM.',
'options': [
{
'name': 'enabled',
'default': 0,
'type': 'enabler',
},
{
'name': 'bot_token',
'description': 'Your bot token. Contact @BotFather on Telegram to get one.'
},
{
'name': 'receiver_user_id',
'label': 'Recieving User/Group ID',
'description': 'Receiving user/group - notifications will be sent to this user or group. Contact @myidbot on Telegram to get an ID.'
},
{
'name': 'on_snatch',
'default': 0,
'type': 'bool',
'advanced': True,
'description': 'Also send message when movie is snatched.',
},
],
}
],
}]