mirror of
https://github.com/Nick80835/microbot
synced 2025-08-22 10:09:40 +00:00
improve/fix moderation mentions
This commit is contained in:
parent
4aae840a8c
commit
0119698e81
@ -6,7 +6,8 @@ from telethon.events.inlinequery import InlineQuery
|
||||
from telethon.events.newmessage import NewMessage
|
||||
from telethon.tl.types import (DocumentAttributeFilename,
|
||||
DocumentAttributeImageSize,
|
||||
DocumentAttributeSticker)
|
||||
DocumentAttributeSticker,
|
||||
MessageEntityMentionName)
|
||||
|
||||
from ubot.command import (CallbackQueryCommand, Command, InlineArticleCommand,
|
||||
InlinePhotoCommand)
|
||||
@ -24,6 +25,10 @@ class ExtendedNewMessage(NewMessage.Event):
|
||||
other_args: tuple # any groups between the args group and the command itself
|
||||
nsfw_disabled: bool # only set if pass_nsfw is True; this value is the opposite of nsfw_enabled in chat_db
|
||||
|
||||
@property
|
||||
def has_user_entities(self) -> bool:
|
||||
return any([i for i in self.entities if isinstance(i, MessageEntityMentionName)]) if self.entities else False
|
||||
|
||||
async def get_text(self, return_msg=False, default=""):
|
||||
if self.args:
|
||||
if return_msg:
|
||||
|
@ -4,7 +4,7 @@ from telethon.tl.types import Channel, Chat, MessageEntityMentionName
|
||||
|
||||
|
||||
async def get_user(event, allow_channel=False):
|
||||
if mention_entities := [i for i in event.get_entities_text() if isinstance(i, MessageEntityMentionName)]:
|
||||
if mention_entities := [i for i in event.entities if isinstance(i, MessageEntityMentionName)] if event.entities else False:
|
||||
if len(mention_entities) > 1:
|
||||
await event.reply("You provided too many arguments!")
|
||||
return
|
||||
|
@ -18,7 +18,7 @@ async def kick_user(event):
|
||||
await event.reply("I can't kick users in this chat.")
|
||||
return
|
||||
|
||||
if time_regex.sub("", event.args).strip().lower() == "me":
|
||||
if time_regex.sub("", event.args).strip().lower() == "me" and not event.has_user_entities:
|
||||
self_harm = True
|
||||
user_to_kick = await event.get_sender()
|
||||
else:
|
||||
@ -63,7 +63,7 @@ async def ban_user(event):
|
||||
if time_match := time_regex.search(event.args):
|
||||
event.args = time_regex.sub("", event.args).strip()
|
||||
|
||||
if time_regex.sub("", event.args).strip().lower() == "me":
|
||||
if time_regex.sub("", event.args).strip().lower() == "me" and not event.has_user_entities:
|
||||
await event.reply("I don't think I should do that…")
|
||||
return
|
||||
|
||||
@ -105,6 +105,10 @@ async def ban_user(event):
|
||||
@ldr.add("unban", moderation=True, help="Unban a user.")
|
||||
@ldr.add(f"{bot_name}(,|) unban", moderation=True, simple_pattern=True, hide_help=True)
|
||||
async def unban_user(event):
|
||||
if event.args.lower() == "me" and not event.has_user_entities:
|
||||
await event.reply("You probably aren't banned.")
|
||||
return
|
||||
|
||||
if not (await event.client.get_permissions(event.chat, "me")).ban_users:
|
||||
await event.reply("I can't unban users in this chat.")
|
||||
return
|
||||
@ -135,7 +139,7 @@ async def mute_user(event):
|
||||
if time_match := time_regex.search(event.args):
|
||||
event.args = time_regex.sub("", event.args).strip()
|
||||
|
||||
if time_regex.sub("", event.args).strip().lower() == "me":
|
||||
if time_regex.sub("", event.args).strip().lower() == "me" and not event.has_user_entities:
|
||||
self_harm = True
|
||||
user_to_mute = await event.get_sender()
|
||||
else:
|
||||
@ -186,7 +190,7 @@ async def mute_user(event):
|
||||
@ldr.add("unmute", moderation=True, help="Unmute a user.")
|
||||
@ldr.add(f"{bot_name}(,|) unmute", moderation=True, simple_pattern=True, hide_help=True)
|
||||
async def unmute_user(event):
|
||||
if event.args.lower() == "me":
|
||||
if event.args.lower() == "me" and not event.has_user_entities:
|
||||
await event.reply("You probably aren't muted.")
|
||||
return
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user