add_group, add_Channel process modification
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-09-05 15:40:28 +09:00
parent 443799d480
commit e7a40b4718
4 changed files with 127 additions and 29 deletions

View File

@@ -1,19 +1,62 @@
from telegram import Update
from telegram.ext import ContextTypes
from telegram.ext import ContextTypes, ConversationHandler, CommandHandler, MessageHandler, filters
from db import AsyncSessionLocal
from models import Group
async def add_group(update: Update, context: ContextTypes.DEFAULT_TYPE):
args = context.args or []
if update.message is None:
return
if len(args) < 2:
await update.message.reply_text('Используйте: /add_group <название> <ссылка>')
return
name, link = args[0], args[1]
session = AsyncSessionLocal()
group = Group(name=name, link=link)
session.add(group)
session.commit()
session.close()
await update.message.reply_text(f'Группа "{name}" добавлена.')
INPUT_NAME, INPUT_LINK = range(2)
async def add_group_start(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data is None:
context.user_data = {}
if update.message:
await update.message.reply_text('Введите название группы (или "название ссылка" через пробел):')
return INPUT_NAME
async def input_group_name(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data is None:
context.user_data = {}
text = update.message.text.strip() if update.message and update.message.text else ''
if ' ' in text:
name, link = text.split(' ', 1)
context.user_data['group_name'] = name
context.user_data['group_link'] = link
return await save_group(update, context)
else:
context.user_data['group_name'] = text
if update.message:
await update.message.reply_text('Теперь отправьте ссылку на группу:')
return INPUT_LINK
async def input_group_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data is None:
context.user_data = {}
link = update.message.text.strip() if update.message and update.message.text else ''
context.user_data['group_link'] = link
return await save_group(update, context)
async def save_group(update: Update, context: ContextTypes.DEFAULT_TYPE):
if context.user_data is None:
context.user_data = {}
name = context.user_data.get('group_name')
link = context.user_data.get('group_link')
if not name or not link:
if update.message:
await update.message.reply_text('Ошибка: не указано название или ссылка.')
return ConversationHandler.END
async with AsyncSessionLocal() as session:
group = Group(name=name, link=link)
session.add(group)
await session.commit()
if update.message:
await update.message.reply_text(f'Группа "{name}" добавлена.')
return ConversationHandler.END
add_group_conv = ConversationHandler(
entry_points=[CommandHandler('add_group', add_group_start)],
states={
INPUT_NAME: [MessageHandler(filters.TEXT & ~filters.COMMAND, input_group_name)],
INPUT_LINK: [MessageHandler(filters.TEXT & ~filters.COMMAND, input_group_link)],
},
fallbacks=[]
)