Beispiel #1
0
    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')
Beispiel #2
0
 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)
Beispiel #3
0
 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
Beispiel #4
0
    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.")
Beispiel #5
0
 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
Beispiel #6
0
 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)))
Beispiel #7
0
    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
Beispiel #8
0
    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))
Beispiel #9
0
    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))