unban 解除封禁一位用户

This commit is contained in:
xtaodada 2022-07-23 11:46:17 +08:00
parent d522b509c6
commit 99ad91f62c
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
2 changed files with 82 additions and 0 deletions

View File

@ -449,6 +449,16 @@
"supported": true, "supported": true,
"des-short": "查询天气。", "des-short": "查询天气。",
"des": "查询天气。指令:,weather_lite" "des": "查询天气。指令:,weather_lite"
},
{
"name": "unban",
"version": "1.0",
"section": "chat",
"maintainer": "xtaodada",
"size": "2.5 kb",
"supported": true,
"des-short": "解除封禁一位用户。",
"des": "解除封禁一位用户。指令:,unban"
} }
] ]
} }

72
unban/main.py Normal file
View File

@ -0,0 +1,72 @@
from pyrogram.enums import ChatMemberStatus
from pyrogram.errors import ChatAdminRequired, FloodWait, PeerIdInvalid, UsernameInvalid, UserNotParticipant
from pyrogram.types import Chat
from pagermaid import bot
from pagermaid.listener import listener
from pagermaid.single_utils import Message
from pagermaid.utils import lang
async def check_uid(chat: Chat, uid: str):
member = None
try:
uid = int(uid)
member = await bot.get_chat_member(chat.id, uid)
except ValueError:
try:
chat = await bot.get_chat(uid)
uid = chat.id
except PeerIdInvalid:
member = await bot.get_chat_member(chat.id, uid)
uid = member.user.id
if not member:
member = await bot.get_chat_member(chat.id, uid)
return uid, member
async def get_uid(chat: Chat, message: Message):
uid = None
member = None
if reply := message.reply_to_message:
if sender := reply.from_user:
uid = sender.id
if sender := reply.sender_chat:
uid = sender.id
member = await bot.get_chat_member(chat.id, uid)
elif len(message.parameter) == 1:
uid, member = await check_uid(chat, message.arguments)
return uid, member
@listener(command="unban",
description="解除封禁一位用户",
need_admin=True,
groups_only=True,
parameters="<reply|id|username>")
async def unban(message: Message):
chat = message.chat
try:
uid, member = await get_uid(chat, message)
except (ValueError, PeerIdInvalid, UsernameInvalid, FloodWait):
return await message.edit(lang("arg_error"))
except UserNotParticipant:
return await message.edit("此用户未被限制。")
if not uid:
return await message.edit(lang("arg_error"))
if uid == chat.id:
return await message.edit(lang("arg_error"))
try:
if not member:
member = await bot.get_chat_member(chat.id, uid)
if member.status in [ChatMemberStatus.RESTRICTED, ChatMemberStatus.BANNED]:
await message.bot.unban_chat_member(chat.id, uid)
else:
return await message.edit("此用户未被限制。")
except UserNotParticipant:
return await message.edit("此用户未被限制。")
except ChatAdminRequired:
return await message.edit(lang("sb_no_per"))
except Exception as e:
return await message.edit(f"出现错误:{e}")
await message.edit("已解封此用户。")