add name inv
This commit is contained in:
parent
1fea37ec76
commit
3922bd3454
|
@ -27,11 +27,7 @@ SECRET_KEY = "django-insecure-ruo!wst&sb8(f9)j5u4rda-w!673lj_-c0a%gx_t@)ff*q*2ze
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
<<<<<<< HEAD
|
NGROK_TEMP = "da22-193-228-134-167.ngrok-free.app"
|
||||||
NGROK_TEMP = "357e-193-228-134-167.ngrok-free.app"
|
|
||||||
=======
|
|
||||||
NGROK_TEMP = "5f4c-193-228-134-167.ngrok-free.app"
|
|
||||||
>>>>>>> bx-581-startproject
|
|
||||||
ALLOWED_HOSTS = [
|
ALLOWED_HOSTS = [
|
||||||
"localhost",
|
"localhost",
|
||||||
NGROK_TEMP,
|
NGROK_TEMP,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import Item
|
# from .models import Item
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
admin.site.register(Item)
|
# admin.site.register(Item)
|
|
@ -26,17 +26,12 @@ class TgBotClass(AppConfig):
|
||||||
return app
|
return app
|
||||||
|
|
||||||
async def some_function(self=None):
|
async def some_function(self=None):
|
||||||
# await TgBotClass.app.bot.get_me()
|
|
||||||
while True:
|
while True:
|
||||||
if not TgBotClass.my_queue.empty():
|
if not TgBotClass.my_queue.empty():
|
||||||
item = TgBotClass.my_queue.get()
|
item = TgBotClass.my_queue.get()
|
||||||
try:
|
await TgBotClass.app.process_update(item)
|
||||||
await TgBotClass.app.process_update(item)
|
|
||||||
except Exception as e:
|
|
||||||
print('err')
|
|
||||||
await TgBotClass.app.process_update(item)
|
|
||||||
TgBotClass.my_queue.task_done()
|
TgBotClass.my_queue.task_done()
|
||||||
time.sleep(3)
|
time.sleep(1)
|
||||||
|
|
||||||
async def some_callback():
|
async def some_callback():
|
||||||
await TgBotClass.some_function()
|
await TgBotClass.some_function()
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
|
import uuid
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
class Item(models.Model):
|
class Item(models.Model):
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||||
|
user_id = models.BigIntegerField()
|
||||||
name = models.CharField(max_length=255)
|
name = models.CharField(max_length=255)
|
||||||
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
|
updated_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"Tg item {self.id}"
|
return f"Tg item {self.id}"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from asgiref.sync import sync_to_async
|
||||||
from telegram import (
|
from telegram import (
|
||||||
ForceReply,
|
ForceReply,
|
||||||
Update,
|
Update,
|
||||||
|
@ -11,7 +12,10 @@ from telegram.ext import (
|
||||||
filters,
|
filters,
|
||||||
CallbackContext,
|
CallbackContext,
|
||||||
)
|
)
|
||||||
from telegram.constants import ParseMode, ChatType
|
from telegram.constants import ParseMode, ChatType, MessageEntityType
|
||||||
|
|
||||||
|
from .apps import TgBotClass
|
||||||
|
from .models import Item
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
@ -22,14 +26,49 @@ class TgBotApp:
|
||||||
_app = None
|
_app = None
|
||||||
|
|
||||||
async def start(self, update: Update, context: CallbackContext):
|
async def start(self, update: Update, context: CallbackContext):
|
||||||
user = update.effective_user
|
await update.message.reply_markdown_v2(
|
||||||
# logger.info(update)
|
(
|
||||||
await update.message.reply_html(
|
"Это бот для проведения инвентаризации\n"
|
||||||
rf"Hi {user.mention_html()}!",
|
"/inv - начать новую инвентаризацию"
|
||||||
|
),
|
||||||
# reply_markup=ForceReply(selective=True),
|
# reply_markup=ForceReply(selective=True),
|
||||||
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def inv(self, update: Update, context: CallbackContext):
|
||||||
|
user = update.effective_user
|
||||||
|
current_step = context.chat_data.get("step", None)
|
||||||
|
logger.info(f"Step {current_step} from user {user.full_name}")
|
||||||
|
if not current_step and update.message.text == "/inv":
|
||||||
|
inv = await sync_to_async(Item.objects.create)(user_id=user.id)
|
||||||
|
await update.message.reply_markdown_v2(
|
||||||
|
(
|
||||||
|
f"Специалист {user.name or user.full_name}, ID {user.id}\n"
|
||||||
|
f"Начинаем инвентаризацию `#{inv.id}`\n"
|
||||||
|
f"Введите название объекта"
|
||||||
|
),
|
||||||
|
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||||
|
)
|
||||||
|
context.chat_data["step"] = "name"
|
||||||
|
context.chat_data["inv"] = inv.id
|
||||||
|
elif current_step is "name":
|
||||||
|
inv = await sync_to_async(Item.objects.get)(id=context.chat_data["inv"])
|
||||||
|
inv.name = update.message.text
|
||||||
|
await sync_to_async(inv.save)()
|
||||||
|
await update.message.reply_markdown_v2(
|
||||||
|
(
|
||||||
|
f"Инвентаризация `#{inv.id}`\n"
|
||||||
|
f"Название объекта `{inv.name}`"
|
||||||
|
),
|
||||||
|
reply_parameters=ReplyParameters(message_id=update.message.message_id),
|
||||||
|
)
|
||||||
|
# context.chat_data["step"] = "add"
|
||||||
|
context.chat_data["step"] = None
|
||||||
|
|
||||||
|
async def error(self, update: Update, context: CallbackContext):
|
||||||
|
logger.info(f"error in tgbot {context.error}\nReply update")
|
||||||
|
TgBotClass.my_queue.put(update)
|
||||||
|
|
||||||
async def set_webhook(self, url):
|
async def set_webhook(self, url):
|
||||||
if not self._app:
|
if not self._app:
|
||||||
logger.error("no app")
|
logger.error("no app")
|
||||||
|
@ -45,8 +84,12 @@ class TgBotApp:
|
||||||
.updater(None)
|
.updater(None)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
self._app.add_handler(CommandHandler("start", self.start))
|
self._app.add_handler(
|
||||||
self._app.add_handler(MessageHandler(filters.ChatType.PRIVATE, self.start))
|
CommandHandler("start", self.start, filters.ChatType.PRIVATE)
|
||||||
|
)
|
||||||
|
self._app.add_handler(CommandHandler("inv", self.inv, filters.ChatType.PRIVATE))
|
||||||
|
self._app.add_handler(MessageHandler(filters.ChatType.PRIVATE, self.inv))
|
||||||
|
self._app.add_error_handler(self.error)
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,6 @@ from asgiref.sync import async_to_sync
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
|
||||||
import time
|
|
||||||
from .apps import TgBotClass
|
from .apps import TgBotClass
|
||||||
from .models import Item
|
from .models import Item
|
||||||
from .serializers import ItemSerializer
|
from .serializers import ItemSerializer
|
||||||
|
|
Loading…
Reference in New Issue