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