Compare commits
3 Commits
3813ed60e8
...
cc98721120
Author | SHA1 | Date |
---|---|---|
Dan Elkouby | cc98721120 | |
Dan Elkouby | b97d1649a4 | |
Dan Elkouby | dd49e13fbf |
|
@ -0,0 +1 @@
|
|||
../stdplugins/tl.py
|
|
@ -1,17 +0,0 @@
|
|||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
"""
|
||||
Show all loaded .plugins
|
||||
"""
|
||||
from telethon import events
|
||||
|
||||
|
||||
@borg.on(events.NewMessage(pattern=r"\.plugins", outgoing=True))
|
||||
async def _(event):
|
||||
result = f'{len(borg._plugins)} plugins loaded:'
|
||||
for name, mod in sorted(borg._plugins.items(), key=lambda t: t[0]):
|
||||
desc = (mod.__doc__ or '__no description__').replace('\n', ' ').strip()
|
||||
result += f'\n**{name}**: {desc}'
|
||||
|
||||
await event.edit(result)
|
|
@ -12,7 +12,7 @@ import mimetypes
|
|||
import re
|
||||
import time
|
||||
|
||||
from telethon import events, helpers, types
|
||||
from telethon import helpers, types
|
||||
|
||||
|
||||
mimetypes.add_type('audio/mpeg', '.borg+tts')
|
||||
|
@ -308,11 +308,11 @@ class Translator:
|
|||
translator = Translator()
|
||||
|
||||
|
||||
@borg.on(events.NewMessage(pattern=r"\.tl", outgoing=True))
|
||||
@borg.on(borg.cmd(r"tl"))
|
||||
async def _(event):
|
||||
if event.is_reply:
|
||||
text = (await event.get_reply_message()).raw_text
|
||||
else:
|
||||
elif not borg.me.bot:
|
||||
text = ''
|
||||
started = False
|
||||
async for m in borg.iter_messages(event.chat_id):
|
||||
|
@ -326,14 +326,18 @@ async def _(event):
|
|||
text = m.raw_text + '\n' + text
|
||||
else:
|
||||
text = m.raw_text + ' ' + text
|
||||
else:
|
||||
return
|
||||
|
||||
translated = await translator.translate(text.strip())
|
||||
await event.edit('translation: ' + translated, parse_mode=None)
|
||||
action = event.edit if not borg.me.bot else event.respond
|
||||
await action('translation: ' + translated, parse_mode=None)
|
||||
|
||||
|
||||
@borg.on(events.NewMessage(pattern=r"\.tts", outgoing=True))
|
||||
@borg.on(borg.cmd(r"tts"))
|
||||
async def _(event):
|
||||
await event.delete()
|
||||
if not borg.me.bot:
|
||||
await event.delete()
|
||||
|
||||
ts = event.raw_text.split(maxsplit=1)
|
||||
text = None if len(ts) < 2 else ts[1]
|
||||
|
@ -349,7 +353,7 @@ async def _(event):
|
|||
await borg.send_file(
|
||||
event.chat_id,
|
||||
file,
|
||||
reply_to=event.reply_to_msg_id,
|
||||
reply_to=event.reply_to_msg_id if not borg.me.bot else None,
|
||||
attributes=[types.DocumentAttributeAudio(
|
||||
duration=0,
|
||||
voice=True
|
||||
|
|
|
@ -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()
|
||||
|
@ -48,3 +48,16 @@ async def remove(event):
|
|||
if not borg.me.bot:
|
||||
await asyncio.sleep(DELETE_TIMEOUT)
|
||||
await borg.delete_messages(msg.to_id, msg)
|
||||
|
||||
|
||||
@borg.on(borg.admin_cmd(r"plugins"))
|
||||
async def list_plugins(event):
|
||||
result = f'{len(borg._plugins)} plugins loaded:'
|
||||
for name, mod in sorted(borg._plugins.items(), key=lambda t: t[0]):
|
||||
desc = (mod.__doc__ or '__no description__').replace('\n', ' ').strip()
|
||||
result += f'\n**{name}**: {desc}'
|
||||
|
||||
if not borg.me.bot:
|
||||
await event.edit(result)
|
||||
else:
|
||||
await event.respond(result)
|
||||
|
|
|
@ -110,14 +110,31 @@ class Uniborg(TelegramClient):
|
|||
|
||||
return fut
|
||||
|
||||
def admin_cmd(self, pattern):
|
||||
if not self.me.bot:
|
||||
return telethon.events.NewMessage(
|
||||
outgoing=True,
|
||||
pattern=fr'^\.{pattern}$'
|
||||
)
|
||||
def cmd(self, command, pattern=None, admin_only=False):
|
||||
if self.me.bot:
|
||||
command = fr'{command}(?:@{self.me.username})?'
|
||||
|
||||
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