async def reload(self, ctx, *args): ctx = Context(ctx) _kwargs, _args = utils.parse_args(args) data = {} if ('time' in _kwargs): time = int(_kwargs['time']) else: time = 0 import json for cog in self.cogs: data[cog] = 'on' with open('cogs.json', 'w') as outfile: json.dump({**data, **_kwargs}, outfile) if (time > 0): await ctx.send(embed=utils.formatEmbed( "Reload in {} seconds".format(time), ctx.author.name, **{ **data, **_kwargs })) await asyncio.sleep(time) self.isShutingdown = True sys.tracebacklimit = 0 raise SystemExit('Restarting The-Reverse')
async def debugloop(self, ctx, *args): _kwargs, _args = utils.parse_args(args) data = { "index": 0, "loop": 5, "seconds": 0, "minutes": 0, "hours": 0, "message": "" } try: for index, value in _kwargs.items(): data[index] = value except: pass print(data) _loop = self.task.createLoop(self.loop_for_debug, seconds=float(data["seconds"]), minutes=float(data["minutes"]), hours=float(data["hours"]), count=int(data["loop"]), ctx=Context(ctx), data=data) self._debugloop = _loop _loop.start(ctx=_loop.ctx, data=_loop.data)
async def testargs(self, ctx, *args): _kwargs, _args = utils.parse_args(args) embed = Embed(title="Debugger args parser", color=0xe80005) embed.set_author(name="The reverse") embed.add_field(name="command", value=args, inline=False) embed.add_field(name="args", value=_args, inline=False) embed.add_field(name="kwargs", value=_kwargs, inline=False) embed.set_footer(text="Asked by {}".format(ctx.author.name)) message = await ctx.send(embed=embed) self.lastEmbed = message
async def members(self, ctx, *args): ctx = Context(ctx) guild = ctx.guild _kwargs, _args = utils.parse_args(args) if ("role" in _kwargs.keys()): r_id = _kwargs["role"][3:-1] _m = utils.getAllMembers(guild, int(r_id)) if (len(_m) >= 1): for v in _m: await ctx.send("User: {}".format(v)) else: await ctx.send("This role is unused.")
async def debugRole(self, ctx, *args): ctx = Context(ctx) guild = ctx.guild _kwargs, _args = utils.parse_args(args) if ("role" in _kwargs.keys()): try: r_id = int(_kwargs["role"][3:-1]) except: await ctx.send("404 - Role not found") return if ((r := Role(r_id, guild)) != None): await ctx.send( "Find role with id={} and name={} ({} - {})".format( r.id, r.name, r, r.role)) else: await ctx.send("404 - Role not found") return
async def debugNextCall(self, ctx, *args): """Generate 10 datetime from generate_next_call, by default, addition is off, day = 1""" _kwargs, _args = utils.parse_args(args) _t = utils.now() _adding = "adding" in _args await ctx.send("0: {}".format(_t)) for i in range(1, 10): _tminus = _t _t = utils.generate_next_call(startDate=_t, days=int(_kwargs.get('day', 1)), hours=int(_kwargs.get('hour', 0)), minutes=int(_kwargs.get('minute', 0)), seconds=int(_kwargs.get('second', 0)), adding=_adding) await ctx.send("{}: {} - {}s".format( i, _t, utils.time_until(_t, startDate=_tminus)))
async def md(self, ctx, *args): channel = ctx.message.channel author = ctx.author guild = ctx.guild msg = None _kwargs, _args = utils.parse_args(args) obligatory_keys = ["start"] print(_kwargs) print(_args) n = _kwargs.get("start", None) for arg in obligatory_keys: n = _kwargs.get(arg, None) if ((n := _kwargs.get(arg, None)) == None): print("Argument \"{}\" missing.".format(arg)) return
async def betarestart(self, ctx, *args): ctx = Context(ctx) _loops = self.task.taskList() _kwargs, _args = utils.parse_args(args) _found = _kwargs.get('task', "release_today") _kwargs.pop('task', None) for e in _loops: if (e.getName() == _found): if ("stop" in args): if ("force" in args): e.cancel() self.task.remove(e) await ctx.send( "{} cold shutdown successfully.".format(_found)) return e.stop() await ctx.send( "{} warm shutdown. This will allows the task to finish its current iteration." .format(_found)) return e.restart(**_kwargs) await ctx.send("{} restart successfully.".format(_found))
async def betastart(self, ctx, *args): """Create task that trigger worker at definied date Parameters ---------- ctx : :class:`reverse.core._models.Context` Context """ ctx = Context(ctx) _kwargs, _args = utils.parse_args(args) DEFAULT_CALL = self.release_today # Coroutine next call Datetime adding = "adding" in _args or False print(adding) next_call = utils.generate_next_call( days=int(_kwargs.get('day', 1)), hours=int(_kwargs.get('hour', 7)), minutes=int(_kwargs.get('minute', 0)), seconds=int(_kwargs.get('second', 0)), adding=adding) print(next_call) # Get delta from now until next_call delta = utils.time_until(next_call) data = { "Day": _kwargs.get('day', 1), "Hour": _kwargs.get('hour', 7), "Minute": _kwargs.get('minute', 0), "Second": _kwargs.get('second', 0), "Adding": _kwargs.get("adding", adding), "Timer": delta, "Date": next_call } # Store method.__name__ _task = _kwargs.get("task", DEFAULT_CALL.__name__) # Check if task is registered if (not any(e.__name__ == _task for e in self.worker)): await ctx.send("This worker is not compatible.") return try: # Test method callable(getattr(Series, _task)) # Try to find if task already running if ((_loop := self.task.findTaskByName(_task)) != None): _loop.stop() self.task.remove(_loop) await ctx.send("Overwrite betaseries task.") # Store method _task = getattr(self, _task) # Create loop with TaskService _loop = self.task.createLoop(_task, seconds=delta, ctx=ctx, data=data) # Start task self.task.start(_loop, load=_task, ctx=_loop.ctx, data=_loop.data) print("Betaseries task started. Delta : {} - Date : {}".format( delta, next_call))