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
|
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):
|
async def load_reload(event):
|
||||||
if not borg.me.bot:
|
if not borg.me.bot:
|
||||||
await event.delete()
|
await event.delete()
|
||||||
|
@ -31,7 +31,7 @@ async def load_reload(event):
|
||||||
await event.respond(f"Failed to (re)load plugin {shortname}: {e}")
|
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):
|
async def remove(event):
|
||||||
if not borg.me.bot:
|
if not borg.me.bot:
|
||||||
await event.delete()
|
await event.delete()
|
||||||
|
|
|
@ -110,25 +110,31 @@ class Uniborg(TelegramClient):
|
||||||
|
|
||||||
return fut
|
return fut
|
||||||
|
|
||||||
def cmd(self, pattern):
|
def cmd(self, command, pattern=None, admin_only=False):
|
||||||
if not self.me.bot:
|
if self.me.bot:
|
||||||
return telethon.events.NewMessage(
|
command = fr'{command}(?:@{self.me.username})?'
|
||||||
outgoing=True,
|
|
||||||
pattern=fr'^\.{pattern}$'
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
return telethon.events.NewMessage(
|
|
||||||
pattern=fr'^\/{pattern}$'
|
|
||||||
)
|
|
||||||
|
|
||||||
def admin_cmd(self, pattern):
|
if pattern is not None:
|
||||||
if not self.me.bot:
|
pattern = fr'{command}\s+{pattern}'
|
||||||
return telethon.events.NewMessage(
|
|
||||||
outgoing=True,
|
|
||||||
pattern=fr'^\.{pattern}$'
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
return telethon.events.NewMessage(
|
pattern = command
|
||||||
from_users=self.admins,
|
|
||||||
pattern=fr'^\/{pattern}$'
|
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