예제 #1
0
    async def deletejob(self, ctx, timestamp: str, job_type: str, job_name: str):
        """Removes a timed robocronp job, staff only.

        You'll need to supply:
        - timestamp (like 1545981602)
        - job type (like "unban")
        - job name (userid, like 420332322307571713)

        You can get all 3 from listjobs command."""
        delete_job(timestamp, job_type, job_name)
        await ctx.send(f"{ctx.author.mention}: Deleted!")
예제 #2
0
 async def do_jobs(self, ctab, jobtype, timestamp):
     log_channel = self.bot.get_channel(config.botlog_channel)
     for job_name in ctab[jobtype][timestamp]:
         try:
             job_details = ctab[jobtype][timestamp][job_name]
             if jobtype == "unban":
                 target_user = await self.bot.fetch_user(job_name)
                 target_guild = self.bot.get_guild(job_details["guild"])
                 delete_job(timestamp, jobtype, job_name)
                 await target_guild.unban(target_user,
                                          reason="Robocronp: Timed "
                                                 "ban expired.")
             elif jobtype == "unmute":
                 remove_restriction(job_name, config.mute_role)
                 target_guild = self.bot.get_guild(job_details["guild"])
                 target_member = target_guild.get_member(int(job_name))
                 target_role = target_guild.get_role(config.mute_role)
                 await target_member.remove_roles(target_role,
                                                  reason="Robocronp: Timed "
                                                         "mute expired.")
                 delete_job(timestamp, jobtype, job_name)
             elif jobtype == "remind":
                 text = job_details["text"]
                 added_on = job_details["added"]
                 target = await self.bot.fetch_user(int(job_name))
                 if target:
                     await target.send("You asked to be reminded about"
                                       f" `{text}` on {added_on}.")
                 delete_job(timestamp, jobtype, job_name)
         except:
             # Don't kill cronjobs if something goes wrong.
             delete_job(timestamp, jobtype, job_name)
             await log_channel.send("Crondo has errored, job deleted: ```"
                                    f"{traceback.format_exc()}```")
예제 #3
0
 async def do_jobs(self, ctab, jobtype, timestamp):
     for job_name in ctab[jobtype][timestamp]:
         job_details = ctab[jobtype][timestamp][job_name]
         if jobtype == "unban":
             target_user = await self.bot.get_user_info(job_name)
             target_guild = self.bot.get_guild(job_details["guild"])
             await target_guild.unban(
                 target_user, reason="Robocronp: Timed ban expired.")
             delete_job(timestamp, jobtype, job_name)
         elif jobtype == "unmute":
             remove_restriction(job_name, config.mute_role)
             target_guild = self.bot.get_guild(job_details["guild"])
             target_member = target_guild.get_member(int(job_name))
             target_role = target_guild.get_role(config.mute_role)
             await target_member.remove_roles(target_role,
                                              reason="Robocronp: Timed "
                                              "mute expired.")
             delete_job(timestamp, jobtype, job_name)