bot/core/promote.py

48 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from aiogram.exceptions import TelegramBadRequest
from aiogram.types import Message
from config import config
async def handle_promote_command(message: Message) -> None:
title = message.text.replace('/t', '').strip()
if not config.is_feature_enabled('promote', message.chat.id):
return
if message.chat.type not in ['group', 'supergroup']:
return
try:
if not message.reply_to_message:
await message.reply('咱不知道给谁头衔呢')
return
if not title:
await message.reply('咱不知道给什么头衔呢')
return
else:
member = await message.chat.get_member(message.reply_to_message.from_user.id)
if len(title) > 16:
await message.reply('头衔太长了,咱设置不了')
return
if member.status == 'creator':
await message.reply('咱不能给群主设置头衔')
return
if not member.status in ['administrator','creator']:
await message.chat.promote(message.reply_to_message.from_user.id,can_manage_chat=True)
await message.chat.set_administrator_custom_title(message.reply_to_message.from_user.id,title)
await message.reply(
f'{message.from_user.mention_html()}{message.reply_to_message.from_user.mention_html()} 变成了 <b>{title}</b>',
parse_mode='HTML')
elif member.status == 'administrator' and member.can_be_edited:
await message.chat.set_administrator_custom_title(message.reply_to_message.from_user.id,title)
await message.reply(
f'{message.from_user.mention_html()}{message.reply_to_message.from_user.mention_html()} 变成了 <b>{title}</b>',
parse_mode='HTML')
else:
await message.reply('咱不能给这个人设置头衔可能是因为ta已经被其它管理员设置了头衔')
return
except TelegramBadRequest as e:
await message.reply(f'因为咱没有添加新的管理员的权限,咱没办法设置头衔')
return
except Exception as e:
await message.reply(f'发生了错误: {str(e)}')
return