From b32f930cbd9db0c847dbc433f6c174c3a0b2a08c Mon Sep 17 00:00:00 2001 From: Kseninia Mikhaylova Date: Thu, 18 Jul 2024 13:18:21 +0300 Subject: [PATCH] set webhook --- back/api/settings.py | 2 +- back/api/urls.py | 2 +- back/tgbot/tgbot.py | 3 ++- back/tgbot/views.py | 16 ++++------------ 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/back/api/settings.py b/back/api/settings.py index 6f4c67d..9f6fc10 100644 --- a/back/api/settings.py +++ b/back/api/settings.py @@ -190,5 +190,5 @@ ODATA_AUTH = os.environ.get("ODATA_AUTH") TGBOT = { "TOKEN": os.environ.get("TG_TOKEN"), "BASE_URL": NGROK_TEMP, - "WEBHOOK_URL": f"api/tgbot/webhook/{os.environ.get('TG_TOKEN')}", + "WEBHOOK_URL": f"webhook/{os.environ.get('TG_TOKEN')}", } diff --git a/back/api/urls.py b/back/api/urls.py index 63f1cc1..7731343 100644 --- a/back/api/urls.py +++ b/back/api/urls.py @@ -29,7 +29,7 @@ router.register(r'api/element', views.ElementViewSet) router.register(r'api/inventory', views.InventoryItemViewSet) router.register(r'api/tmc/fields', tmc_views.BaseCustomFieldViewSet) router.register(r'api/tmc/items', tmc_views.CustomTableViewSet) -router.register(settings.TGBOT['WEBHOOK_URL'], tgbot_views.TgItemViewSet) +router.register(r'api/tgbot', tgbot_views.TgItemViewSet) urlpatterns = [ path('', include(router.urls)), diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index 4a2ec5c..b809ec1 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -26,6 +26,7 @@ from telegram.ext import ( from telegram.constants import ParseMode from django.conf import settings +from django.urls import reverse from .apps import TgBotUpdater from .models import TgItem, TmcElement, TmcField @@ -55,7 +56,7 @@ class TgBot: async def set_webhook(self): await TgBot.app.bot.setWebhook( - f"https://{self.baseurl}/{self.webhook}/", drop_pending_updates=True + f"https://{self.baseurl}{reverse('tgitem-send-tg-data')}", drop_pending_updates=True ) async def start_app(self): diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 400a515..968584b 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -1,9 +1,11 @@ +from django.conf import settings import json from telegram import Update from rest_framework import mixins, viewsets from rest_framework.response import Response +from rest_framework.decorators import action from .tgbot import TgBot from .apps import TgBotUpdater @@ -19,19 +21,9 @@ class TgItemViewSet(viewsets.ModelViewSet): queryset = TgItem.objects.all() serializer_class = TgItemSerializer http_method_names = ["post", "get"] - - def list(self, request, *args, **kwargs): - queryset = TgItem.objects.all() - serializer = TgItemSerializer(queryset, many=True) - inv = TgItem.objects.get(id='73e9fc87-a006-4c53-b3ee-39da6c79dbb5') - el = inv.tmc.get(id=58) - f= el.field.filter(text__isnull=True) - logger.info(f[0].field) - # fields = TmcField.objects.filter - return Response(serializer.data) - - def create(self, request, *args, **kwargs): + @action(detail=False, methods=["post"], url_path=settings.TGBOT["WEBHOOK_URL"]) + def send_tg_data(self, request): TgBotUpdater.my_queue.put( Update.de_json(data=json.loads(request.body), bot=TgBot.app.bot) )