This commit is contained in:
26
handlers/invite_admin.py
Normal file
26
handlers/invite_admin.py
Normal file
@@ -0,0 +1,26 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user