diff --git a/kickanddm.py b/kickanddm.py new file mode 100644 index 0000000..aa29002 --- /dev/null +++ b/kickanddm.py @@ -0,0 +1,97 @@ +from pagermaid import bot, log +from pagermaid.listener import listener +from asyncio import sleep +from datetime import timedelta +from telethon.tl.types import ChannelParticipantsAdmins +from pagermaid.utils import alias_command + + +async def removemsg(context, last_name, count): + count_buffer = 0 + target = await context.get_reply_message() + async for message in context.client.iter_messages(context.chat_id, from_user=target.from_id): + if count_buffer == count: + break + await message.delete() + count_buffer += 1 + await log(f'删除【{last_name}】消息完成,共删除{count_buffer}条消息') + await context.edit(f'已删除【{last_name}】这个b最近{count_buffer}条污言秽语') + + +@listener(is_plugin=True, outgoing=True, command=alias_command("kickanddm"), + description="回复你要删除消息和踢的人或者要禁言的人\n指令:\n-k直接删除消息并踢人\n-k 10禁言10秒(tg不支持60秒以下的时间,少于60变成永久)并删除最近999条消息\n⚠️k后面带时间的只是禁言,不带时间的直接踢") +async def kickanddm(context): + # 是否在群组 + if context.is_group: + reply = await context.get_reply_message() + # 是否回复了消息 + if reply: + # 是否是管理员 + try: + chat = await context.get_chat() + admins = await context.client.get_participants(chat, filter=ChannelParticipantsAdmins) + admins_ids = [a.id for a in admins] + if context.sender_id not in admins_ids: + await context.edit('你又不是管理员,玩呢?') + await sleep(5) + await context.delete() + return False + except: + await context.edit('发生错误,无法获取本群名单。') + await sleep(5) + await context.delete() + return False + else: + action = context.parameter + if reply.sender.last_name is None: + if reply.sender.first_name is None: + last_name = '' + else: + last_name = reply.sender.first_name + else: + last_name = reply.sender.last_name + + if len(action) == 1: + try: + await context.client.edit_permissions(context.chat_id, reply.sender.id, + timedelta(seconds=int(action[0].replace(' ', ''))), + send_messages=False, + send_media=False, send_stickers=False, send_gifs=False, + send_games=False, + send_inline=False, send_polls=False, invite_users=False, + change_info=False, + pin_messages=False) + await context.edit(f'已将【{last_name}】这个b的嘴堵住了!\n正在清理污言秽语...') + await removemsg(context, last_name, 999) + except: + await context.edit('🤏🏼给爷等着,迟早ban了你') + await sleep(5) + await context.delete() + return + else: + try: + await context.client.edit_permissions(context.chat_id, reply.sender.id, + timedelta(seconds=60), + send_messages=False, + send_media=False, send_stickers=False, send_gifs=False, + send_games=False, + send_inline=False, send_polls=False, invite_users=False, + change_info=False, + pin_messages=False) + await context.edit(f'已将【{last_name}】这个b的嘴堵住了!\n正在清理存在痕迹...') + await removemsg(context, last_name, 999) + await context.client.edit_permissions(context.chat_id, reply.sender.id, view_messages=False) + await context.edit(f'已将【{last_name}】这个b飞了,江湖不见!') + except: + await context.edit('🤏🏼给爷等着,迟早ban了你') + await sleep(5) + await context.delete() + return + else: + await context.edit('你好蠢诶,都没有回复人,我哪知道你要搞谁……') + await sleep(5) + await context.delete() + else: + await context.edit('你好蠢诶,又不是群组,怎么搞人!') + await sleep(5) + await context.delete() diff --git a/list.json b/list.json index a278316..749de72 100644 --- a/list.json +++ b/list.json @@ -639,6 +639,16 @@ "supported": true, "des-short": "自动复读(无引用)一个人的消息。", "des": "自动复读(无引用)一个人的消息。命令:repeat 。" + }, + { + "name": "kickanddm", + "version": "1.0", + "section": "chat", + "maintainer": "lowking", + "size": "5.6 kb", + "supported": true, + "des-short": "删除某人的消息并踢出/禁言", + "des": "回复你要删除消息和踢的人或者要禁言的人\n指令:\n-kickanddm 直接删除消息并踢人\n-kickanddm 100 禁言100秒(tg不支持60秒以下的时间,少于60变成永久)并删除最近999条消息\n⚠️kickanddm 后面带时间的只是禁言,不带时间的直接踢。" } ] }