announce on telegram

This commit is contained in:
j 2023-08-16 17:21:32 +02:00
parent 06f10fd479
commit a569dde23b
11 changed files with 62 additions and 7 deletions

View file

@ -30,13 +30,22 @@ def announce_items():
f.write(r.content) f.write(r.content)
f.close() f.close()
image = f.name image = f.name
if getattr(settings, "SIGNAL_ANNOUNCE_GROUP"):
r = rpc.send( r = rpc.send(
message, group=settings.SIGNAL_ANNOUNCE_GROUP, message,
group=settings.SIGNAL_ANNOUNCE_GROUP,
preview_url=link, preview_url=link,
preview_title=item.title, preview_title=item.title,
preview_image=image, preview_image=image,
preview_description=description, preview_description=description,
) )
if getattr(settings, "TELEGRAM_ANNOUNCE_CHANNEL"):
message = f'<a href="{link}">{item.title}</a>'
r = telegram_rpc.send(
message,
channel=settings.TELEGRAM_ANNOUNCE_CHANNEL,
preview_image=image,
)
item.save() item.save()
if image: if image:
os.unlink(f.name) os.unlink(f.name)

View file

@ -60,6 +60,7 @@ INSTALLED_APPS = [
"app.user", "app.user",
"app.item", "app.item",
"app.signalbot", "app.signalbot",
"app.telegrambot",
"app.page", "app.page",
] ]

View file

3
app/telegrambot/admin.py Normal file
View file

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
app/telegrambot/apps.py Normal file
View file

@ -0,0 +1,6 @@
from django.apps import AppConfig
class TelegrambotConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "app.telegrambot"

View file

View file

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

26
app/telegrambot/rpc.py Normal file
View file

@ -0,0 +1,26 @@
import asyncio
import telegram
from django.conf import settings
def send(msg, to=None, channel=None, preview_url=None, preview_title=None, preview_description=None, preview_image=None):
bot = telegram.Bot(token=settings.TELEGRAM_TOKEN)
if preview_image:
asyncio.run(bot.send_photo(
chat_id=channel,
caption=msg,
photo=preview_image,
parse_mode='html'
))
else:
asyncio.run(bot.send_message(
chat_id=channel,
text=msg,
parse_mode='html'
))
def send_reaction(target_address, target_ts, emoji, to=None, group=None, remove=False):
pass

3
app/telegrambot/tests.py Normal file
View file

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
app/telegrambot/views.py Normal file
View file

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View file

@ -13,3 +13,4 @@ django-celery-results
django-celery-beat django-celery-beat
redis redis
django-brake django-brake
python-telegram-bot