Improve command support
- Support commands with the bot's username - Make matching case-insensitive by default - Merge cmd and admin_cmd for better maintainabilitymaster
parent
b97d1649a4
commit
cc98721120
|
@ -8,7 +8,7 @@ import traceback
|
|||
DELETE_TIMEOUT = 2
|
||||
|
||||
|
||||
@borg.on(borg.admin_cmd(r"(?:re)?load (?P<shortname>\w+)"))
|
||||
@borg.on(borg.admin_cmd(r"(?:re)?load", r"(?P<shortname>\w+)"))
|
||||
async def load_reload(event):
|
||||
if not borg.me.bot:
|
||||
await event.delete()
|
||||
|
@ -31,7 +31,7 @@ async def load_reload(event):
|
|||
await event.respond(f"Failed to (re)load plugin {shortname}: {e}")
|
||||
|
||||
|
||||
@borg.on(borg.admin_cmd(r"(?:unload|disable|remove) (?P<shortname>\w+)"))
|
||||
@borg.on(borg.admin_cmd(r"(?:unload|disable|remove)", r"(?P<shortname>\w+)"))
|
||||
async def remove(event):
|
||||
if not borg.me.bot:
|
||||
await event.delete()
|
||||
|
|
|
@ -110,25 +110,31 @@ class Uniborg(TelegramClient):
|
|||
|
||||
return fut
|
||||
|
||||
def cmd(self, pattern):
|
||||
if not self.me.bot:
|
||||
return telethon.events.NewMessage(
|
||||
outgoing=True,
|
||||
pattern=fr'^\.{pattern}$'
|
||||
)
|
||||
else:
|
||||
return telethon.events.NewMessage(
|
||||
pattern=fr'^\/{pattern}$'
|
||||
)
|
||||
def cmd(self, command, pattern=None, admin_only=False):
|
||||
if self.me.bot:
|
||||
command = fr'{command}(?:@{self.me.username})?'
|
||||
|
||||
def admin_cmd(self, pattern):
|
||||
if not self.me.bot:
|
||||
return telethon.events.NewMessage(
|
||||
outgoing=True,
|
||||
pattern=fr'^\.{pattern}$'
|
||||
)
|
||||
if pattern is not None:
|
||||
pattern = fr'{command}\s+{pattern}'
|
||||
else:
|
||||
return telethon.events.NewMessage(
|
||||
from_users=self.admins,
|
||||
pattern=fr'^\/{pattern}$'
|
||||
)
|
||||
pattern = command
|
||||
|
||||
if not self.me.bot:
|
||||
pattern=fr'^\.{pattern}'
|
||||
else:
|
||||
pattern=fr'^\/{pattern}'
|
||||
pattern=fr'(?i){pattern}$'
|
||||
|
||||
if self.me.bot and admin_only:
|
||||
allowed_users = self.admins
|
||||
else:
|
||||
allowed_users = None
|
||||
|
||||
return telethon.events.NewMessage(
|
||||
outgoing=not self.me.bot,
|
||||
from_users=allowed_users,
|
||||
pattern=pattern
|
||||
)
|
||||
|
||||
def admin_cmd(self, command, pattern=None):
|
||||
return self.cmd(command, pattern, admin_only=True)
|
||||
|
|
Reference in New Issue