kumify/msgio/gateways/telegram.py

36 lines
1 KiB
Python

from django.views.generic import View
from django.dispatch import receiver
import json
import telegram
from dbsettings.functions import dbsettings
from ..signals import send_message
from ..models import GatewayUser
from ..helpers import run_filters
class TelegramWebhookView(View):
def post(self, *args, **kwargs):
pass # TODO: Implement webhook receiver and management tool
class TelegramDispatcher:
def __init__(self, token=None):
token = token or dbsettings.TELEGRAM_TOKEN
self.bot = telegram.Bot(token=token)
def send(self, message, chat_id):
self.bot.sendMessage(chat_id=chat_id, text=message)
@receiver(send_message)
def telegram_sender(sender, **kwargs):
if kwargs["dispatcher"] == "telegram":
notification = kwargs["notification"]
settings = GatewayUser.objects.get(user=notification.recipient, gateway="telegram")
chat_id = settings.gatewayusersetting_set.get(key="chat_id").value
text = run_filters(notification)
TelegramDispatcher().send(text, chat_id)