27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
from telegram import Update
|
|
from telegram.ext import CommandHandler, ContextTypes
|
|
from db import AsyncSessionLocal, log_action
|
|
from models import Admin
|
|
|
|
async def invite_admin(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
|
args = context.args
|
|
if len(args) < 3:
|
|
await update.message.reply_text("Неверная ссылка.")
|
|
return
|
|
channel_id, inviter_id, token = args
|
|
user_id = update.effective_user.id
|
|
session = AsyncSessionLocal()
|
|
admin = session.query(Admin).filter_by(invite_token=token, channel_id=channel_id).first()
|
|
if not admin:
|
|
await update.message.reply_text("Ссылка недействительна.")
|
|
session.close()
|
|
return
|
|
new_admin = Admin(tg_id=user_id, channel_id=channel_id, inviter_id=inviter_id)
|
|
session.add(new_admin)
|
|
session.commit()
|
|
session.close()
|
|
await update.message.reply_text("Вы добавлены как администратор канала!")
|
|
log_action(user_id, "invite_admin", f"channel_id={channel_id}, inviter_id={inviter_id}")
|
|
|
|
invite_admin_handler = CommandHandler("invite_admin", invite_admin)
|