Skip to content

Commit

Permalink
Fix subcommands, fix #0000, fix ip thing
Browse files Browse the repository at this point in the history
  • Loading branch information
showierdata9978 committed May 12, 2023
1 parent 6e850b4 commit c6924dd
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 21 deletions.
36 changes: 20 additions & 16 deletions MeowerBot/Bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,12 @@ def run_cb(self, cbid, args=(), kwargs=None): # cq: ignore

if not kwargs:
kwargs = {}

if cbid == "error" and isinstance(args[0], KeyboardInterrupt()):
self.logger.error("KeyboardInterrupt")
self.bad_exit = True
self.stop()
return

kwargs["bot"] = self
for callback in self.callbacks[cbid]:
Expand Down Expand Up @@ -134,17 +140,6 @@ def _debug_fix(self, packet):
self.run_cb("error", args=(e, ))

def __handle_on_connect__(self):
self.wss.sendPacket(
{
"cmd": "direct",
"val": {
"cmd": "ip",
"val": requests.get("https://api.meower.org/ip").text,
},
"listener": "__meowerbot__send_ip",
}
)

self.wss.sendPacket(
{
"cmd": "direct",
Expand Down Expand Up @@ -173,7 +168,7 @@ def inner(func):

self.commands.update(info)

return func
return cmd #allow subcommands without a cog

return inner

Expand Down Expand Up @@ -261,6 +256,17 @@ def __handle_close__(self, *args, **kwargs):

self.run_cb("close", args=args, kwargs=kwargs)

def handle_bridges(self, packet):
if packet["val"]["u"] in self.__bridges__ and ": " in packet["val"]["p"]:
split = packet["val"]["p"].split(": ", 1)
packet["val"]["p"] = split[1]
packet["val"]["u"] = split[0]

if packet["val"]["p"].startswith(self.prefix+"#0000"):
packet["val"]["p"] = packet["val"]["p"].replace("#0000", self.prefix)

return packet

def __handle_packet__(self, packet):
if packet["cmd"] == "statuscode":

Expand All @@ -273,10 +279,7 @@ def __handle_packet__(self, packet):
self.run_cb("ulist", self.wss.statedata["ulist"]["usernames"])

elif packet["cmd"] == "direct" and "post_origin" in packet["val"]:
if packet["val"]["u"] in self.__bridges__ and ": " in packet["val"]["p"]:
split = packet["val"]["p"].split(": ", 1)
packet["val"]["p"] = split[1]
packet["val"]["u"] = split[0]
packet = self.handle_bridges(packet)

ctx = CTX(packet["val"], self)
if "message" in self.callbacks:
Expand Down Expand Up @@ -324,6 +327,7 @@ def run_command(self, message):
try:
self.commands[args[0]]["command"].run_cmd(message.ctx, *args[1:])
except KeyError as e:
self.logger.error(traceback.format_exc())
self.run_cb("error", args=(e,))

def send_msg(self, msg, to="home"):
Expand Down
18 changes: 15 additions & 3 deletions MeowerBot/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,36 @@ def __call__(self, *args):
def register_class(self, con):
self.connected = con

for subcommand in self.subcommands.values():
subcommand.register_class(con)

def subcommand(self, name=None, args=0):
def inner(func):

cmd = AppCommand(func, name=name, args=args)
cmd.register_class(self.connected)

self.subcommands[name] = cmd.info()
self.subcommands.update(cmd.info())


return func #dont want mb to register this as a root command

return inner


def run_cmd(self, ctx, *args):
print(
f"Running command {self.name} with args {args} and ctx {ctx} and connected {self.connected}"

)

if self.subcommands and (args[0] if len(args) >= 1 else None) in self.subcommands:
try:
self.subcommands[args[0]]["command"].run_cmd(ctx, *args[1:])
return
except KeyError:
print(f"KeyError: {args}")
print(f"Subcommands: {self.subcommands}")
except IndexError:
print(f"IndexError: {args}")

if not self.args == 0:
args = args[: self.args]
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "MeowerBot"
version = "2.5.2"
version = "2.5.3"
description = "A meower bot lib for py"
authors = ["showierdata9978 <68120127+showierdata9978@users.noreply.github.com>"]
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion tests/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ def sub(ctx, *args):
def reloadtime(ctx):
ctx.send_msg(f"My reload time is {round(bot.autoreload_time)}" )

bot.run(env['username'], env['password'])
bot.run(env['uname'], env['password'])

0 comments on commit c6924dd

Please sign in to comment.