import sys import asyncio import logging import telepot from django.conf import settings from webapp.models import TelegramChannel TOKEN = settings.TELEGRAM_BOT_TOKEN bot = telepot.Bot(TOKEN) logging.getLogger('urllib3.connectionpool').setLevel(logging.WARNING) logging.getLogger('urllib3.util.retry').setLevel(logging.WARNING) class KaehmyHandler: def handle(self, msg): flavor = telepot.flavor(msg) if flavor == 'chat': text = msg['text'] id = msg['chat']['id'] if text == '/start': TelegramChannel.objects.create(channel_id=id) bot.sendMessage(id, 'Moro! Uudet kaehmyt postataan tälle kanavalle.') elif text == '/stop': channels_started = [int(channel.channel_id) for channel in TelegramChannel.objects.all()] if id in channels_started: TelegramChannel.objects.get(channel_id=id).delete() bot.sendMessage(id, 'Lopetetaan kaehmyjen postailu.') def announce(self, url, name): channels_started = [channel.channel_id for channel in TelegramChannel.objects.all()] logging.debug('Announcing to {} Telegram channels.'.format(len(channels_started))) for id in channels_started: bot.sendMessage(id, 'Uusi kaehmy/New kaehmy! {} -> {}'.format(name, url)) kaehmy_handler = KaehmyHandler() def main(): bot.message_loop(kaehmy_handler.handle) logging.debug('Telepot listening...') try: bot.getMe() main() except Exception as ex: logging.exception('Failed to create Telegram bot with token "{}"'.format(TOKEN))