Rework admin_cmd to work for actual bots
parent
c4de997eb7
commit
475c3aebfd
|
@ -39,8 +39,8 @@ async def await_read(chat, message):
|
|||
await fut
|
||||
|
||||
|
||||
@borg.on(util.admin_cmd(r"^\.(del)(?:ete)?$"))
|
||||
@borg.on(util.admin_cmd(r"^\.(edit)(?:\s+(.*))?$"))
|
||||
@borg.on(events.NewMessage(outgoing=True, pattern=r"^\.(del)(?:ete)?$")
|
||||
@borg.on(events.NewMessage(outgoing=True, pattern=r"^\.(edit)(?:\s+(.*))?$")
|
||||
async def delete(event):
|
||||
await event.delete()
|
||||
command = event.pattern_match.group(1)
|
||||
|
|
|
@ -5,14 +5,13 @@
|
|||
import asyncio
|
||||
import traceback
|
||||
|
||||
from uniborg import util
|
||||
|
||||
DELETE_TIMEOUT = 2
|
||||
|
||||
|
||||
@borg.on(util.admin_cmd(r"^\.(?:re)?load (?P<shortname>\w+)$"))
|
||||
@borg.on(borg.admin_cmd(r"(?:re)?load (?P<shortname>\w+)"))
|
||||
async def load_reload(event):
|
||||
await event.delete()
|
||||
if not borg.me.bot:
|
||||
await event.delete()
|
||||
shortname = event.pattern_match["shortname"]
|
||||
|
||||
try:
|
||||
|
@ -22,8 +21,9 @@ async def load_reload(event):
|
|||
|
||||
msg = await event.respond(
|
||||
f"Successfully (re)loaded plugin {shortname}")
|
||||
await asyncio.sleep(DELETE_TIMEOUT)
|
||||
await borg.delete_messages(msg.to_id, msg)
|
||||
if not borg.me.bot:
|
||||
await asyncio.sleep(DELETE_TIMEOUT)
|
||||
await borg.delete_messages(msg.to_id, msg)
|
||||
|
||||
except Exception as e:
|
||||
tb = traceback.format_exc()
|
||||
|
@ -31,9 +31,10 @@ async def load_reload(event):
|
|||
await event.respond(f"Failed to (re)load plugin {shortname}: {e}")
|
||||
|
||||
|
||||
@borg.on(util.admin_cmd(r"^\.(?:unload|disable|remove) (?P<shortname>\w+)$"))
|
||||
@borg.on(borg.admin_cmd(r"(?:unload|disable|remove) (?P<shortname>\w+)"))
|
||||
async def remove(event):
|
||||
await event.delete()
|
||||
if not borg.me.bot:
|
||||
await event.delete()
|
||||
shortname = event.pattern_match["shortname"]
|
||||
|
||||
if shortname == "_core":
|
||||
|
@ -44,5 +45,6 @@ async def remove(event):
|
|||
else:
|
||||
msg = await event.respond(f"Plugin {shortname} is not loaded")
|
||||
|
||||
await asyncio.sleep(DELETE_TIMEOUT)
|
||||
await borg.delete_messages(msg.to_id, msg)
|
||||
if not borg.me.bot:
|
||||
await asyncio.sleep(DELETE_TIMEOUT)
|
||||
await borg.delete_messages(msg.to_id, msg)
|
||||
|
|
|
@ -17,7 +17,7 @@ from . import hacks
|
|||
|
||||
class Uniborg(TelegramClient):
|
||||
def __init__(
|
||||
self, session, *, plugin_path="plugins", storage=None,
|
||||
self, session, *, plugin_path="plugins", storage=None, admins=[],
|
||||
bot_token=None, **kwargs):
|
||||
# TODO: handle non-string session
|
||||
#
|
||||
|
@ -28,6 +28,7 @@ class Uniborg(TelegramClient):
|
|||
self._logger = logging.getLogger(session)
|
||||
self._plugins = {}
|
||||
self._plugin_path = plugin_path
|
||||
self.admins = admins
|
||||
|
||||
kwargs = {
|
||||
"api_id": 6, "api_hash": "eb06d4abfb49dc3eeb1aeb98ae0f581e",
|
||||
|
@ -108,3 +109,15 @@ class Uniborg(TelegramClient):
|
|||
lambda _: self.remove_event_handler(cb, event_matcher))
|
||||
|
||||
return fut
|
||||
|
||||
def admin_cmd(self, pattern):
|
||||
if not self.me.bot:
|
||||
return telethon.events.NewMessage(
|
||||
outgoing=True,
|
||||
pattern=fr'^\.{pattern}$'
|
||||
)
|
||||
else:
|
||||
return telethon.events.NewMessage(
|
||||
from_users=self.admins,
|
||||
pattern=fr'^\/{pattern}$'
|
||||
)
|
||||
|
|
|
@ -10,10 +10,6 @@ from telethon import events
|
|||
from telethon.tl.functions.messages import GetPeerDialogsRequest
|
||||
|
||||
|
||||
def admin_cmd(pattern):
|
||||
return events.NewMessage(outgoing=True, pattern=re.compile(pattern))
|
||||
|
||||
|
||||
async def is_read(borg, entity, message, is_out=None):
|
||||
"""
|
||||
Returns True if the given message (or id) has been read
|
||||
|
|
Reference in New Issue