Exemple #1
0
 async def check_expiry(self):
     await self.bot.wait_for_setup()
     while not self.bot.is_closed():
         try:
             async with self.bot.engine.acquire() as conn:
                 now_datetime = datetime.utcnow()
                 query = restrictions_tbl.select().where(restrictions_tbl.c.expiry <= now_datetime).order_by(
                     restrictions_tbl.c.expiry.desc(), restrictions_tbl.c.user.desc()
                 )
                 async for row in conn.execute(query):
                     member = self.bot.main_server.get_member(row.user)
                     if member is not None:
                         await member.remove_roles(getattr(self.bot, "{}_role".format(row.type), None))
                     embed = discord.Embed(color=discord.Color.dark_orange(), timestamp=now_datetime)
                     embed.title = "🕛 Restriction expired"
                     if member is not None:
                         embed.add_field(name="Member", value=member.mention)
                     embed.add_field(name="Member ID", value=row.user)
                     embed.add_field(name="Role", value=getattr(self.bot, "{}_role".format(row.type), None).name)
                     await self.bot.modlog_channel.send(embed=embed)
                     delete_stmt = restrictions_tbl.delete().where(restrictions_tbl.c.id == row.id)
                     await conn.execute(delete_stmt)
         except Exception:  # pylint: disable=broad-except
             self.logger.exception("Something went wrong:")
         finally:
             await asyncio.sleep(1)
Exemple #2
0
 async def remove_restriction(self, member, r_type):
     async with self.bot.engine.acquire() as conn:
         delete_stmt = restrictions_tbl.delete().where(
             (restrictions_tbl.c.user == member.id)
             & (restrictions_tbl.c.type == r_type))
         await conn.execute(delete_stmt)