2
0
mirror of https://github.com/Nick80835/microbot synced 2025-09-02 23:45:37 +00:00

what the fuck have I done

This commit is contained in:
Nick80835
2020-07-16 13:41:42 -04:00
parent 32110cf291
commit cc1ec39e53
10 changed files with 36 additions and 29 deletions

View File

@@ -12,8 +12,8 @@ from .fixes import inline_photos
class CommandHandler(): class CommandHandler():
def __init__(self, client, logger, settings, loader): def __init__(self, client, logger, settings, loader):
self.username = client.loop.run_until_complete(client.get_me()).username self.username = client.loop.run_until_complete(client.get_me()).username
self.pattern_template = "(?is)^{0}{1}(?: |$|_|@{2}(?: |$|_))(.*)" self.pattern_template = "(?is)^{0}({1})(?: |$|_|@{2}(?: |$|_))(.*)"
self.inline_pattern_template = "(?is)^{0}(?: |$|_)(.*)" self.inline_pattern_template = "(?is)^({0})(?: |$|_)(.*)"
self.raw_pattern_template = "(?is){0}" self.raw_pattern_template = "(?is){0}"
self.incoming_commands = [] self.incoming_commands = []
self.inline_photo_commands = [] self.inline_photo_commands = []
@@ -31,11 +31,11 @@ class CommandHandler():
for value in self.incoming_commands: for value in self.incoming_commands:
if value["simple_pattern"]: if value["simple_pattern"]:
pattern_match = search(self.inline_pattern_template.format(value["pattern"]), event.raw_text) pattern_match = search(self.inline_pattern_template.format(value["pattern"] + value["pattern_extra"]), event.raw_text)
elif value["raw_pattern"]: elif value["raw_pattern"]:
pattern_match = search(self.raw_pattern_template.format(value["pattern"]), event.raw_text) pattern_match = search(self.raw_pattern_template.format(value["pattern"] + value["pattern_extra"]), event.raw_text)
else: else:
pattern_match = search(self.pattern_template.format(f"({prefix})", value["pattern"], self.username), event.raw_text) pattern_match = search(self.pattern_template.format(f"({prefix})", value["pattern"] + value["pattern_extra"], self.username), event.raw_text)
if pattern_match: if pattern_match:
if self.is_blacklisted(event): if self.is_blacklisted(event):
@@ -60,7 +60,8 @@ class CommandHandler():
event.pattern_match = pattern_match event.pattern_match = pattern_match
event.args = pattern_match.groups()[-1].strip() event.args = pattern_match.groups()[-1].strip()
event.other_args = pattern_match.groups()[1:-1] event.other_args = pattern_match.groups()[2:-1]
event.command = pattern_match.groups()[1]
event.extras = value["extras"] event.extras = value["extras"]
try: try:
@@ -137,7 +138,8 @@ class CommandHandler():
builder = event.builder builder = event.builder
event.pattern_match = pattern_match event.pattern_match = pattern_match
event.args = pattern_match.groups()[-1] event.args = pattern_match.groups()[-1]
event.other_args = pattern_match.groups()[:-1] event.other_args = pattern_match.groups()[1:-1]
event.command = pattern_match.groups()[0]
photo_list = await value["function"](event) photo_list = await value["function"](event)

View File

@@ -56,6 +56,7 @@ class Loader():
def add(self, pattern=None, **args): def add(self, pattern=None, **args):
pattern = args.get("pattern", pattern) pattern = args.get("pattern", pattern)
pattern_extra = args.get("pattern_extra", "")
def decorator(func): def decorator(func):
if args.get("hide_help", False): if args.get("hide_help", False):
@@ -71,6 +72,7 @@ class Loader():
self.command_handler.incoming_commands.append({ self.command_handler.incoming_commands.append({
"pattern": pattern, "pattern": pattern,
"pattern_extra": pattern_extra,
"function": func, "function": func,
"simple_pattern": args.get('simple_pattern', False), "simple_pattern": args.get('simple_pattern', False),
"raw_pattern": args.get('raw_pattern', False), "raw_pattern": args.get('raw_pattern', False),
@@ -109,7 +111,8 @@ class Loader():
self.help_dict[func.__module__.split(".")[-1]] = [pattern] self.help_dict[func.__module__.split(".")[-1]] = [pattern]
self.command_handler.incoming_commands.append({ self.command_handler.incoming_commands.append({
"pattern": pattern + pattern_extra, "pattern": pattern,
"pattern_extra": pattern_extra,
"function": func, "function": func,
"simple_pattern": args.get('simple_pattern', False), "simple_pattern": args.get('simple_pattern', False),
"raw_pattern": args.get('raw_pattern', False), "raw_pattern": args.get('raw_pattern', False),

View File

@@ -23,10 +23,11 @@ async def danbooru_ping(event):
await event.reply(f"Danbooru response time -> **{time_taken_ms}**ms") await event.reply(f"Danbooru response time -> **{time_taken_ms}**ms")
@ldr.add("dan(s|x|q|)(f|)", nsfw=True, userlocking=True) @ldr.add_list(["dan", "danx", "danq"], pattern_extra="(f|)", nsfw=True, userlocking=True)
@ldr.add("dans", pattern_extra="(f|)", userlocking=True)
async def danbooru(event): async def danbooru(event):
safety_arg = event.other_args[0] safety_arg = event.command[-1]
as_file = bool(event.other_args[1]) as_file = bool(event.other_args[0])
rating = "" rating = ""
if safety_arg == "x": if safety_arg == "x":

View File

@@ -33,7 +33,7 @@ from PIL import Image, ImageEnhance
from ubot.micro_bot import ldr from ubot.micro_bot import ldr
@ldr.add("deepfry(f|)", userlocking=True) @ldr.add("deepfry", pattern_extra="(f|)", userlocking=True)
async def deepfryer(event): async def deepfryer(event):
as_file = bool(event.other_args[0]) as_file = bool(event.other_args[0])

View File

@@ -11,7 +11,7 @@ VALID_ENDS = (".mp4", ".jpg", ".jpeg", ".png", ".gif")
NSFW_BOARDS = ['aco', 'b', 'bant', 'd', 'e', 'f', 'gif', 'h', 'hc', 'hm', 'hr', 'i', 'ic', 'pol', 'r', 'r9k', 's', 's4s', 'soc', 't', 'trash', 'u', 'wg', 'y'] NSFW_BOARDS = ['aco', 'b', 'bant', 'd', 'e', 'f', 'gif', 'h', 'hc', 'hm', 'hr', 'i', 'ic', 'pol', 'r', 'r9k', 's', 's4s', 'soc', 't', 'trash', 'u', 'wg', 'y']
@ldr.add("4c(f|)", userlocking=True, pass_nsfw=True) @ldr.add("4c", pattern_extra="(f|)", userlocking=True, pass_nsfw=True)
async def fourchan(event): async def fourchan(event):
if not event.args: if not event.args:
await event.reply(f"Syntax: {ldr.prefix()}4c(f|) <board name>") await event.reply(f"Syntax: {ldr.prefix()}4c(f|) <board name>")

View File

@@ -27,10 +27,11 @@ async def danbooru_ping(event):
await event.reply(f"Gelbooru response time -> **{time_taken_ms}**ms") await event.reply(f"Gelbooru response time -> **{time_taken_ms}**ms")
@ldr.add("gel(s|x|q|)(f|)", nsfw=True, userlocking=True) @ldr.add_list(["gel", "gelx", "gelq"], pattern_extra="(f|)", nsfw=True, userlocking=True)
@ldr.add("gels", pattern_extra="(f|)", userlocking=True)
async def gelbooru(event): async def gelbooru(event):
safety_arg = event.other_args[0] safety_arg = event.command[-1]
as_file = bool(event.other_args[1]) as_file = bool(event.other_args[0])
rating = "" rating = ""
if safety_arg == "x": if safety_arg == "x":

View File

@@ -114,10 +114,10 @@ async def bodyfetcher(event, sub):
await event.reply(f"Failed to find any valid content on **r/{sub}**!") await event.reply(f"Failed to find any valid content on **r/{sub}**!")
@ldr.add("red(i|t|b)", userlocking=True, pass_nsfw=True) @ldr.add_list(["redi", "redb", "redt"], userlocking=True, pass_nsfw=True)
async def redimg(event): async def redimg(event):
sub = event.args.replace(" ", "_") sub = event.args.replace(" ", "_")
fetch_type = event.other_args[0] fetch_type = event.command[-1]
if not sub: if not sub:
await event.reply(f"Syntax: {ldr.prefix()}red(i|t|b) <subreddit name>") await event.reply(f"Syntax: {ldr.prefix()}red(i|t|b) <subreddit name>")
@@ -151,14 +151,12 @@ async def todayifuckedup(event):
await bodyfetcher(event, "TIFU") await bodyfetcher(event, "TIFU")
@ldr.add("jon(x|)", userlocking=True, pass_nsfw=True) @ldr.add_list(["jon", "jonx"], userlocking=True, pass_nsfw=True)
async def imsorryjon(event): async def imsorryjon(event):
if "x" in event.other_args[0]: if event.command[-1] == "x":
sub = "ImReallySorryJon" await imagefetcher(event, "ImReallySorryJon")
else: else:
sub = "ImSorryJon" await imagefetcher(event, "ImSorryJon")
await imagefetcher(event, sub)
@ldr.add("tihi", userlocking=True, pass_nsfw=True) @ldr.add("tihi", userlocking=True, pass_nsfw=True)

View File

@@ -24,10 +24,11 @@ async def sankaku_ping(event):
await event.reply(f"Sankaku response time -> **{time_taken_ms}**ms") await event.reply(f"Sankaku response time -> **{time_taken_ms}**ms")
@ldr.add("san(s|x|q|)(f|)", nsfw=True, userlocking=True) @ldr.add_list(["san", "sanx", "sanq"], pattern_extra="(f|)", nsfw=True, userlocking=True)
@ldr.add("sans", pattern_extra="(f|)", userlocking=True)
async def sankaku(event): async def sankaku(event):
safety_arg = event.other_args[0] safety_arg = event.command[-1]
as_file = bool(event.other_args[1]) as_file = bool(event.other_args[0])
rating = "" rating = ""
if safety_arg == "x": if safety_arg == "x":

View File

@@ -66,7 +66,7 @@ async def image_generator(event):
return return
@ldr.add("pokemon(s|)") @ldr.add("pokemon", pattern_extra="(s|)")
async def pokemon_image(event): async def pokemon_image(event):
if not event.args: if not event.args:
await event.reply("Specify a Pokémon name!") await event.reply("Specify a Pokémon name!")

View File

@@ -15,12 +15,13 @@ async def delete_message(event):
@ldr.add("help") @ldr.add("help")
async def help_cmd(event): async def help_cmd(event):
prefix = ldr.prefix()
help_string = "" help_string = ""
for key, value in ldr.help_dict.items(): for key, value in ldr.help_dict.items():
help_string += f"\n**{key}**: " help_string += f"\n**{key}**: "
for info in value: for info in value:
help_string += f"`{info}`, " help_string += f"{prefix}{info}, "
help_string = help_string.rstrip(", ") help_string = help_string.rstrip(", ")
await event.reply(f"**Available commands:**\n{help_string}") await event.reply(f"**Available commands:**\n{help_string}")