diff --git a/back/tgbot/views.py b/back/tgbot/views.py index 99a5015..872330f 100644 --- a/back/tgbot/views.py +++ b/back/tgbot/views.py @@ -2,7 +2,8 @@ import json from django.conf import settings from telegram import Update -from telegram.ext import Application, CommandHandler +from telegram.ext import Application, CommandHandler, MessageHandler, filters +from telegram.constants import ParseMode, ChatType from asgiref.sync import async_to_sync @@ -17,10 +18,51 @@ import logging logger = logging.getLogger("root") -@async_to_sync +async def start(update, context): + logger.info(update) + await update.message.reply_html(text="123") + + +class ItemViewSet(viewsets.ViewSet): + queryset = Item.objects.all() + serializer_class = ItemSerializer + + @async_to_sync + async def create(self, request): + req = json.loads(request.body) + + logger.info(f"que len before put {ptb_application.update_queue.qsize()}") + update_item = Update.de_json(data=req, bot=ptb_application.bot) + await ptb_application.update_queue.put(update_item) + logger.info(f"que len after put {ptb_application.update_queue.qsize()}") + + # await self.ptb_application.bot.send_message( + # chat_id=req["message"]["from"]["id"], + # text=f'Вы прислали текст `{req["message"]["text"]}`', + # parse_mode=ParseMode.MARKDOWN_V2, + # reply_to_message_id=req["message"]["message_id"], + # ) + # if req["message"]["chat"]["type"] != ChatType.PRIVATE: + # return Response() + + # if req["message"]["text"] == "/add": + # await self.ptb_application.bot.send_message( + # chat_id=req["message"]["from"]["id"], + # text=f'Вы хотите создать новую инвентаризацию?', + # parse_mode=ParseMode.MARKDOWN_V2, + # reply_to_message_id=req["message"]["message_id"], + # ) + + return Response({"test": "create"}) + + async def init_tg(): ptb_application = ( - Application.builder().token(settings.TGBOT["token"]).updater(None).build() + Application.builder().token(settings.TGBOT["token"]).concurrent_updates(True).updater(None).build() + ) + ptb_application.add_handler(CommandHandler("start", start)) + ptb_application.add_handler( + MessageHandler(filters.ChatType.PRIVATE, callback=start) ) logger.info( { @@ -29,19 +71,8 @@ async def init_tg(): "handlers": ptb_application.handlers, } ) + await ptb_application.initialize() + await ptb_application.start() return ptb_application - -class ItemViewSet(viewsets.ViewSet): - queryset = Item.objects.all() - serializer_class = ItemSerializer - - def __init__(self, **kwargs) -> None: - self.ptb_application = init_tg() - super().__init__(**kwargs) - - @async_to_sync - async def create(self, request): - req = json.loads(request.body) - await self.ptb_application.bot.send_message(chat_id=req["message"]["from"]["id"], text='123') - return Response({"test": "create"}) +ptb_application = async_to_sync(init_tg)()