2
0
mirror of https://github.com/Nick80835/microbot synced 2025-09-04 00:15:34 +00:00

allow simplifying command registry to just a string arg for the pattern

This commit is contained in:
Nick80835
2020-05-02 17:04:27 -04:00
parent 917aedebe9
commit de2fd1f841
13 changed files with 49 additions and 47 deletions

View File

@@ -42,9 +42,11 @@ class Loader():
return errors or None return errors or None
def add(self, **args): def add(self, pattern=None, **args):
pattern = args.get("pattern", pattern)
def decorator(func): def decorator(func):
self.command_handler.incoming_commands[args['pattern']] = { self.command_handler.incoming_commands[pattern] = {
"function": func, "function": func,
"noprefix": args.get('noprefix', False), "noprefix": args.get('noprefix', False),
"sudo": args.get('sudo', False) "sudo": args.get('sudo', False)

View File

@@ -14,7 +14,7 @@ CONTENT_URL = "https://i.4cdn.org/{0}/{1}{2}"
VALID_ENDS = (".mp4", ".jpg", ".jpeg", ".png", ".gif") VALID_ENDS = (".mp4", ".jpg", ".jpeg", ".png", ".gif")
@ldr.add(pattern="4c(f|)") @ldr.add("4c(f|)")
async def fourchan(event): async def fourchan(event):
if event.pattern_match.group(1): if event.pattern_match.group(1):
as_file = True as_file = True

View File

@@ -70,7 +70,7 @@ async def tori_atsume():
return tori return tori
@ldr.add(pattern="shibe") @ldr.add("shibe")
async def shibe(event): async def shibe(event):
shibe_inu = await shibe_inu_atsume() shibe_inu = await shibe_inu_atsume()
@@ -81,7 +81,7 @@ async def shibe(event):
await event.reply(file=shibe_inu[0]) await event.reply(file=shibe_inu[0])
@ldr.add(pattern="bird") @ldr.add("bird")
async def bird(event): async def bird(event):
tori = await tori_atsume() tori = await tori_atsume()
@@ -92,7 +92,7 @@ async def bird(event):
await event.reply(file=tori[0]) await event.reply(file=tori[0])
@ldr.add(pattern="(cat|pussy)") @ldr.add("(cat|pussy)")
async def cat(event): async def cat(event):
neko = await neko_atsume(IMGPARAM) neko = await neko_atsume(IMGPARAM)
@@ -103,7 +103,7 @@ async def cat(event):
await event.reply(file=neko[0]["url"]) await event.reply(file=neko[0]["url"])
@ldr.add(pattern="(cathd|pussyhd)") @ldr.add("(cathd|pussyhd)")
async def cathd(event): async def cathd(event):
neko = await neko_atsume(IMGPARAM) neko = await neko_atsume(IMGPARAM)
@@ -114,7 +114,7 @@ async def cathd(event):
await event.reply(file=neko[0]["url"], force_document=True) await event.reply(file=neko[0]["url"], force_document=True)
@ldr.add(pattern="(catgif|pussygif)") @ldr.add("(catgif|pussygif)")
async def catgif(event): async def catgif(event):
neko = await neko_atsume(GIFPARAM) neko = await neko_atsume(GIFPARAM)
@@ -125,7 +125,7 @@ async def catgif(event):
await event.reply(file=neko[0]["url"]) await event.reply(file=neko[0]["url"])
@ldr.add(pattern="(dog|bitch)") @ldr.add("(dog|bitch)")
async def dog(event): async def dog(event):
inu = await inu_atsume(IMGPARAM) inu = await inu_atsume(IMGPARAM)
@@ -136,7 +136,7 @@ async def dog(event):
await event.reply(file=inu[0]["url"]) await event.reply(file=inu[0]["url"])
@ldr.add(pattern="(doghd|bitchhd)") @ldr.add("(doghd|bitchhd)")
async def doghd(event): async def doghd(event):
inu = await inu_atsume(IMGPARAM) inu = await inu_atsume(IMGPARAM)
@@ -147,7 +147,7 @@ async def doghd(event):
await event.reply(file=inu[0]["url"], force_document=True).delete() await event.reply(file=inu[0]["url"], force_document=True).delete()
@ldr.add(pattern="(doggif|bitchgif)") @ldr.add("(doggif|bitchgif)")
async def doggif(event): async def doggif(event):
inu = await inu_atsume(GIFPARAM) inu = await inu_atsume(GIFPARAM)

View File

@@ -7,7 +7,7 @@ from ubot.micro_bot import micro_bot
ldr = micro_bot.loader ldr = micro_bot.loader
@ldr.add(pattern="corona") @ldr.add("corona")
async def corona(event): async def corona(event):
if event.args: if event.args:
with get(f"https://corona.lmao.ninja/v2/countries/{event.args}") as response: with get(f"https://corona.lmao.ninja/v2/countries/{event.args}") as response:

View File

@@ -9,7 +9,7 @@ ldr = micro_bot.loader
DAN_URL = "http://danbooru.donmai.us/posts.json" DAN_URL = "http://danbooru.donmai.us/posts.json"
@ldr.add(pattern="dan(s|x|q|)(f|)") @ldr.add("dan(s|x|q|)(f|)")
async def danbooru(event): async def danbooru(event):
if "x" in event.pattern_match.group(0): if "x" in event.pattern_match.group(0):
rating = "Rating:explicit" rating = "Rating:explicit"

View File

@@ -35,7 +35,7 @@ from ubot.micro_bot import micro_bot
ldr = micro_bot.loader ldr = micro_bot.loader
@ldr.add(pattern="deepfry") @ldr.add("deepfry")
async def deepfryer(event): async def deepfryer(event):
try: try:
frycount = int(event.args) frycount = int(event.args)

View File

@@ -14,7 +14,7 @@ from ubot.micro_bot import micro_bot
ldr = micro_bot.loader ldr = micro_bot.loader
@ldr.add(pattern="speed", sudo=True) @ldr.add("speed", sudo=True)
async def iamspeed(event): async def iamspeed(event):
speed_message = await event.reply("`Running speed test…`") speed_message = await event.reply("`Running speed test…`")
test = Speedtest() test = Speedtest()
@@ -44,7 +44,7 @@ def speed_convert(size):
return f"{round(size, 2)} {units[zero]}" return f"{round(size, 2)} {units[zero]}"
@ldr.add(pattern="tts") @ldr.add("tts")
async def text_to_speech(event): async def text_to_speech(event):
message, reply = await get_text_arg(event) message, reply = await get_text_arg(event)
@@ -71,7 +71,7 @@ async def text_to_speech(event):
await event.client.send_file(event.chat_id, tts_bytesio, voice_note=True, reply_to=reply or event) await event.client.send_file(event.chat_id, tts_bytesio, voice_note=True, reply_to=reply or event)
@ldr.add(pattern="ip") @ldr.add("ip")
async def ip_lookup(event): async def ip_lookup(event):
ip, _ = await get_text_arg(event) ip, _ = await get_text_arg(event)
@@ -104,7 +104,7 @@ async def ip_lookup(event):
await event.reply(text) await event.reply(text)
@ldr.add(pattern="chatid") @ldr.add("chatid")
async def chatidgetter(event): async def chatidgetter(event):
if event.is_reply: if event.is_reply:
reply = await event.get_reply_message() reply = await event.get_reply_message()
@@ -118,7 +118,7 @@ async def chatidgetter(event):
await event.reply(f"**Chat ID:**` {chat_id}`") await event.reply(f"**Chat ID:**` {chat_id}`")
@ldr.add(pattern="userid") @ldr.add("userid")
async def useridgetter(event): async def useridgetter(event):
if event.is_reply: if event.is_reply:
reply = await event.get_reply_message() reply = await event.get_reply_message()
@@ -129,7 +129,7 @@ async def useridgetter(event):
await event.reply(f"**User ID:**` {user_id}`") await event.reply(f"**User ID:**` {user_id}`")
@ldr.add(pattern="profile") @ldr.add("profile")
async def userprofilegetter(event): async def userprofilegetter(event):
if event.args: if event.args:
try: try:
@@ -160,7 +160,7 @@ async def userprofilegetter(event):
await event.reply(f"**Full Name:** {userfullname}\n**Username:** @{username}\n**User ID:** {userid}") await event.reply(f"**Full Name:** {userfullname}\n**Username:** @{username}\n**User ID:** {userid}")
@ldr.add(pattern="stickpng") @ldr.add("stickpng")
async def stickertopng(event): async def stickertopng(event):
reply = await event.get_reply_message() reply = await event.get_reply_message()

View File

@@ -11,7 +11,7 @@ ldr = micro_bot.loader
GEL_URL = "https://gelbooru.com/index.php" GEL_URL = "https://gelbooru.com/index.php"
@ldr.add(pattern="gel(s|x|q|)(f|)") @ldr.add("gel(s|x|q|)(f|)")
async def gelbooru(event): async def gelbooru(event):
if "x" in event.pattern_match.group(0): if "x" in event.pattern_match.group(0):
rating = "Rating:explicit" rating = "Rating:explicit"

View File

@@ -18,7 +18,7 @@ owo_faces = "owo uwu owu uwo u-u o-o OwO UwU @-@ ;-; ;_; ._. (._.) (o-o) ('._.)
zal_chars = " ̷̡̛̮͇̝͉̫̭͈͗͂̎͌̒̉̋́͜ ̵̠͕͍̩̟͚͍̞̳̌́̀̑̐̇̎̚͝ ̸̻̠̮̬̻͇͈̮̯̋̄͛̊͋̐̇͝͠ ̵̧̟͎͈̪̜̫̪͖̎͛̀͋͗́̍̊͠ ̵͍͉̟͕͇͎̖̹̔͌̊̏̌̽́̈́͊ͅ ̷̥͚̼̬̦͓͇̗͕͊̏͂͆̈̀̚͘̚ ̵̢̨̗̝̳͉̱̦͖̔̾͒͊͒̎̂̎͝ ̵̞̜̭̦̖̺͉̞̃͂͋̒̋͂̈́͘̕͜ ̶̢̢͇̲̥̗̟̏͛̇̏̊̑̌̔̚ͅͅ ̷̮͖͚̦̦̞̱̠̰̍̆̐͆͆͆̈̌́ ̶̲͚̪̪̪͍̹̜̬͊̆͋̄͒̾͆͝͝ ̴̨̛͍͖͎̞͍̞͕̟͑͊̉͗͑͆͘̕ ̶͕̪̞̲̘̬͖̙̞̽͌͗̽̒͋̾̍̀ ̵̨̧̡̧̖͔̞̠̝̌̂̐̉̊̈́́̑̓ ̶̛̱̼̗̱̙͖̳̬͇̽̈̀̀̎̋͌͝ ̷̧̺͈̫̖̖͈̱͎͋͌̆̈̃̐́̀̈".replace(" ", "") zal_chars = " ̷̡̛̮͇̝͉̫̭͈͗͂̎͌̒̉̋́͜ ̵̠͕͍̩̟͚͍̞̳̌́̀̑̐̇̎̚͝ ̸̻̠̮̬̻͇͈̮̯̋̄͛̊͋̐̇͝͠ ̵̧̟͎͈̪̜̫̪͖̎͛̀͋͗́̍̊͠ ̵͍͉̟͕͇͎̖̹̔͌̊̏̌̽́̈́͊ͅ ̷̥͚̼̬̦͓͇̗͕͊̏͂͆̈̀̚͘̚ ̵̢̨̗̝̳͉̱̦͖̔̾͒͊͒̎̂̎͝ ̵̞̜̭̦̖̺͉̞̃͂͋̒̋͂̈́͘̕͜ ̶̢̢͇̲̥̗̟̏͛̇̏̊̑̌̔̚ͅͅ ̷̮͖͚̦̦̞̱̠̰̍̆̐͆͆͆̈̌́ ̶̲͚̪̪̪͍̹̜̬͊̆͋̄͒̾͆͝͝ ̴̨̛͍͖͎̞͍̞͕̟͑͊̉͗͑͆͘̕ ̶͕̪̞̲̘̬͖̙̞̽͌͗̽̒͋̾̍̀ ̵̨̧̡̧̖͔̞̠̝̌̂̐̉̊̈́́̑̓ ̶̛̱̼̗̱̙͖̳̬͇̽̈̀̀̎̋͌͝ ̷̧̺͈̫̖̖͈̱͎͋͌̆̈̃̐́̀̈".replace(" ", "")
@ldr.add(pattern="cp") @ldr.add("cp")
async def copypasta(event): async def copypasta(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -33,7 +33,7 @@ async def copypasta(event):
await event.reply(cp_text) await event.reply(cp_text)
@ldr.add(pattern="mock") @ldr.add("mock")
async def mock(event): async def mock(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -45,7 +45,7 @@ async def mock(event):
await event.reply(mock_text) await event.reply(mock_text)
@ldr.add(pattern="vap") @ldr.add("vap")
async def vapor(event): async def vapor(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -57,7 +57,7 @@ async def vapor(event):
await event.reply(vapor_text) await event.reply(vapor_text)
@ldr.add(pattern="pop") @ldr.add("pop")
async def popifycmd(event): async def popifycmd(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -69,7 +69,7 @@ async def popifycmd(event):
await event.reply(pop_text) await event.reply(pop_text)
@ldr.add(pattern="cheem") @ldr.add("cheem")
async def cheemifycmd(event): async def cheemifycmd(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -81,7 +81,7 @@ async def cheemifycmd(event):
await event.reply(cheems_text) await event.reply(cheems_text)
@ldr.add(pattern="zal") @ldr.add("zal")
async def zalgo(event): async def zalgo(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)
@@ -93,7 +93,7 @@ async def zalgo(event):
await event.reply(zalgo_text) await event.reply(zalgo_text)
@ldr.add(pattern="owo") @ldr.add("owo")
async def owo(event): async def owo(event):
text_arg, reply = await get_text_arg(event) text_arg, reply = await get_text_arg(event)

View File

@@ -110,7 +110,7 @@ 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(pattern="redi") @ldr.add("redi")
async def redimg(event): async def redimg(event):
sub = event.args.replace(" ", "_") sub = event.args.replace(" ", "_")
@@ -120,7 +120,7 @@ async def redimg(event):
await event.reply("Syntax: .redi <subreddit name>") await event.reply("Syntax: .redi <subreddit name>")
@ldr.add(pattern="redt") @ldr.add("redt")
async def redtit(event): async def redtit(event):
sub = event.args.replace(" ", "_") sub = event.args.replace(" ", "_")
@@ -130,7 +130,7 @@ async def redtit(event):
await event.reply("Syntax: .redt <subreddit name>") await event.reply("Syntax: .redt <subreddit name>")
@ldr.add(pattern="redb") @ldr.add("redb")
async def redbod(event): async def redbod(event):
sub = event.args.replace(" ", "_") sub = event.args.replace(" ", "_")
@@ -140,22 +140,22 @@ async def redbod(event):
await event.reply("Syntax: .redb <subreddit name>") await event.reply("Syntax: .redb <subreddit name>")
@ldr.add(pattern="suffer") @ldr.add("suffer")
async def makemesuffer(event): async def makemesuffer(event):
await imagefetcher(event, "MakeMeSuffer") await imagefetcher(event, "MakeMeSuffer")
@ldr.add(pattern="snafu") @ldr.add("snafu")
async def coaxedintoasnafu(event): async def coaxedintoasnafu(event):
await imagefetcher(event, "CoaxedIntoASnafu") await imagefetcher(event, "CoaxedIntoASnafu")
@ldr.add(pattern="aita") @ldr.add("aita")
async def amitheasshole(event): async def amitheasshole(event):
await titlefetcher(event, "AmITheAsshole") await titlefetcher(event, "AmITheAsshole")
@ldr.add(pattern="jon(x|)") @ldr.add("jon(x|)")
async def imsorryjon(event): async def imsorryjon(event):
if "x" in event.pattern_match.group(0): if "x" in event.pattern_match.group(0):
sub = "ImReallySorryJon" sub = "ImReallySorryJon"
@@ -165,11 +165,11 @@ async def imsorryjon(event):
await imagefetcher(event, sub) await imagefetcher(event, sub)
@ldr.add(pattern="tihi") @ldr.add("tihi")
async def thanksihateit(event): async def thanksihateit(event):
await imagefetcher(event, "TIHI") await imagefetcher(event, "TIHI")
@ldr.add(pattern="gab") @ldr.add("gab")
async def tenma(event): async def tenma(event):
await imagefetcher(event, "tenma") await imagefetcher(event, "tenma")

View File

@@ -10,7 +10,7 @@ from ubot.micro_bot import micro_bot
ldr = micro_bot.loader ldr = micro_bot.loader
@ldr.add(pattern="reload", sudo=True) @ldr.add("reload", sudo=True)
async def reload_modules(event): async def reload_modules(event):
reload_msg = await event.reply("`Reloading modules…`") reload_msg = await event.reply("`Reloading modules…`")
@@ -25,14 +25,14 @@ async def reload_modules(event):
pass pass
@ldr.add(pattern="del") @ldr.add("del")
async def delete_message(event): async def delete_message(event):
message_to_delete = await event.get_reply_message() message_to_delete = await event.get_reply_message()
if message_to_delete.from_id == (await event.client.get_me()).id: if message_to_delete.from_id == (await event.client.get_me()).id:
await message_to_delete.delete() await message_to_delete.delete()
@ldr.add(pattern="alive", sudo=True) @ldr.add("alive", sudo=True)
async def alive(event): async def alive(event):
alive_format = "`μBot is running under {0}.\n\n" \ alive_format = "`μBot is running under {0}.\n\n" \
"Version: {1}\n" \ "Version: {1}\n" \
@@ -42,13 +42,13 @@ async def alive(event):
await event.reply(alive_format.format(uname().node, ldr.botversion, version.__version__, python_version())) await event.reply(alive_format.format(uname().node, ldr.botversion, version.__version__, python_version()))
@ldr.add(pattern="shutdown", sudo=True) @ldr.add("shutdown", sudo=True)
async def shutdown(event): async def shutdown(event):
await event.reply("`Goodbye…`") await event.reply("`Goodbye…`")
await micro_bot.stop_client() await micro_bot.stop_client()
@ldr.add(pattern="ping") @ldr.add("ping")
async def ping(event): async def ping(event):
start = time_ns() start = time_ns()
ping_msg = await event.reply("`Ping…`") ping_msg = await event.reply("`Ping…`")
@@ -56,6 +56,6 @@ async def ping(event):
await ping_msg.edit(f"`Ping… Pong! -> `**{time_taken_ms}**`ms`") await ping_msg.edit(f"`Ping… Pong! -> `**{time_taken_ms}**`ms`")
@ldr.add(pattern="repo") @ldr.add("repo")
async def bot_repo(event): async def bot_repo(event):
await event.reply("https://github.com/Nick80835/microbot") await event.reply("https://github.com/Nick80835/microbot")

View File

@@ -12,7 +12,7 @@ UD_QUERY_URL = 'http://api.urbandictionary.com/v0/define'
UD_RANDOM_URL = 'http://api.urbandictionary.com/v0/random' UD_RANDOM_URL = 'http://api.urbandictionary.com/v0/random'
@ldr.add(pattern="ud") @ldr.add("ud")
async def urban_dict(event): async def urban_dict(event):
udquery = event.args udquery = event.args

View File

@@ -7,7 +7,7 @@ from ubot.micro_bot import micro_bot
ldr = micro_bot.loader ldr = micro_bot.loader
@ldr.add(pattern="yt") @ldr.add("yt")
async def youtube_cmd(event): async def youtube_cmd(event):
video = pafy.new(event.args) video = pafy.new(event.args)
video_stream = video.getbest() video_stream = video.getbest()
@@ -17,7 +17,7 @@ async def youtube_cmd(event):
await event.reply(f"`Download failed: `[URL]({video_stream.url})") await event.reply(f"`Download failed: `[URL]({video_stream.url})")
@ldr.add(pattern="yta") @ldr.add("yta")
async def youtube_audio_cmd(event): async def youtube_audio_cmd(event):
video = pafy.new(event.args) video = pafy.new(event.args)
video_stream = video.getbestaudio() video_stream = video.getbestaudio()