set webhook

This commit is contained in:
Kseninia Mikhaylova 2024-07-18 13:18:21 +03:00
parent 2f725bbfc7
commit b32f930cbd
4 changed files with 8 additions and 15 deletions

View File

@ -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')}",
}

View File

@ -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)),

View File

@ -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):

View File

@ -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
@ -20,18 +22,8 @@ class TgItemViewSet(viewsets.ModelViewSet):
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)
)