Fix tg posting problem

This commit is contained in:
Jan Tuomi
2017-10-16 14:42:06 +03:00
parent f461c57b66
commit e9185b0a03
5 changed files with 63 additions and 3 deletions
+3
View File
@@ -5,6 +5,7 @@ from webapp.models import Official, Role
from webapp.models import Feed, Tag, BaseFeed, Event, Registration
from webapp.models import KaehmyForm, KaehmyMessage
from webapp.models import CustomKaehmyRole, PresetKaehmyRole
from webapp.models import TelegramChannel, TelegramMessage
from modeltranslation.admin import TranslationAdmin
from django.contrib.auth.models import Permission
# this is needed so that the models get registered for translation
@@ -22,3 +23,5 @@ admin.site.register(KaehmyForm)
admin.site.register(KaehmyMessage)
admin.site.register(CustomKaehmyRole)
admin.site.register(PresetKaehmyRole)
admin.site.register(TelegramChannel)
admin.site.register(TelegramMessage)
+24
View File
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2017-10-16 11:32
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('webapp', '0029_baserole_category'),
]
operations = [
migrations.CreateModel(
name='TelegramMessage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('message_id', models.CharField(max_length=255, unique=True)),
('channel_id', models.CharField(max_length=255)),
('text', models.CharField(max_length=255)),
],
),
]
+8
View File
@@ -267,6 +267,14 @@ class TelegramChannel(models.Model):
channel_id = models.CharField(max_length=255)
class TelegramMessage(models.Model):
"""Single Telegram message"""
message_id = models.CharField(max_length=255, unique=True)
channel_id = models.CharField(max_length=255)
text = models.CharField(max_length=255)
auditlog.register(Tag)
auditlog.register(Feed)
auditlog.register(Event)
+19 -3
View File
@@ -5,7 +5,10 @@ import logging
import telepot
from django.conf import settings
from webapp.models import TelegramChannel
from django.dispatch import receiver
from django.db.models.signals import post_save, post_delete, pre_save
from webapp.models import TelegramChannel, TelegramMessage
TOKEN = settings.TELEGRAM_BOT_TOKEN
bot = telepot.Bot(TOKEN)
@@ -22,14 +25,21 @@ class KaehmyHandler:
if flavor == 'chat':
text = msg['text']
id = msg['chat']['id']
msg_id = msg['message_id']
if text == '/start':
TelegramChannel.objects.create(channel_id=id)
bot.sendMessage(id, 'Moro! Uudet kaehmyt postataan tälle kanavalle.')
try:
TelegramMessage.objects.create(message_id=msg_id, channel_id=id, text='Moro! Uudet kaehmyt postataan tälle kanavalle.')
except:
pass
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.')
try:
TelegramMessage.objects.create(message_id=msg_id, channel_id=id, text='Lopetetaan kaehmyjen postailu.')
except:
pass
def announce(self, url, name):
channels_started = [channel.channel_id for channel in TelegramChannel.objects.all()]
@@ -49,3 +59,9 @@ try:
main()
except Exception as ex:
logging.exception('Failed to create Telegram bot with token "{}"'.format(TOKEN))
@receiver(post_save, sender=TelegramMessage, dispatch_uid="save_tg_message")
def save_message(sender, instance, **kwargs):
bot.sendMessage(instance.channel_id, instance.text)
instance.save()
+9
View File
@@ -12,6 +12,15 @@
<h3 style="padding-top: 1rem">{% trans "Kaehmy" %}</h3>
<div id="input_form">
<p>
Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.
Listassa on vastuualueittain sekä hallitus- että toimihenkilövirkoja.
Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan uutta toimenkuvaa.
Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida <a href="http://sik.ayy.fi/files/official/ka%CC%88hmyopas_final_web.pdf">kaehmyopasta</a> tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan henkilöön.
</p>
<p>
Muista, että kaehmyn lähettäminen on kiinnostuksen ilmaus eikä siis missään nimessä sitova ilmoittautumien mihinkään tehtävään!
</p>
<form name="kaehmyForm" action="/kaehmy/submit/" method="post" class="form">{% csrf_token %}
{% bootstrap_field form.name %}
{% bootstrap_field form.email %}