Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.54 KB | None | 0 0
  1. import discord
  2. import time
  3. from discord.ext import commands
  4. from random import choice, randint
  5. import asyncio
  6. import utils
  7. from .utils import check
  8. from .utils import dataIO
  9. from .utils.dataIO import fileIO
  10. from .utils.dataIO import dataIO
  11. import os
  12.  
  13. class Rainbow:
  14.  
  15.     def __init__(self, bot):
  16.         self.bot = bot
  17.         self.settings_file = "data/rainbow/settings.json"
  18.         self.settings = dataIO.load_json(self.settings_file)
  19.  
  20.     @commands.group(pass_context=True, name='rainbow')
  21.     @check.admin_or_permissions(manage_roles=True)
  22.     async def _rainbow(self, ctx):
  23.         """"""
  24.         if ctx.invoked_subcommand is None:
  25.             await self.bot.send_cmd_help(ctx)
  26.  
  27.     @_rainbow.command(pass_context=True, name="interval")
  28.     async def _interval(self, ctx, interval: float):
  29.         if interval < 3 and interval > 500.0:
  30.             await self.bot.say("")
  31.             return
  32.         self.settings["delay"] = interval
  33.         dataIO.save_json(self.settings_file, self.settings)
  34.         await self.bot.say("{}".format(interval))
  35.  
  36.     @_rainbow.command(pass_context=True, name="add")
  37.     async def _addrainbow(self, ctx, *, role: discord.Role):
  38.         server_id = ctx.message.server.id
  39.         if server_id in self.settings["servers"]:
  40.             if role.id in self.settings["servers"][server_id]:
  41.                 await self.bot.say("")
  42.                 return
  43.             self.settings["servers"][server_id].append(role.id)
  44.         else:
  45.             self.settings["servers"][server_id] = [role.id]
  46.         dataIO.save_json(self.settings_file, self.settings)
  47.         await self.bot.say("{}".format(role.mention))
  48.  
  49.     @_rainbow.command(pass_context=True, name="stop")
  50.     async def _stoprainbow(self, ctx):
  51.         server_id = ctx.message.server.id
  52.         if server_id in self.settings["servers"]:
  53.             del self.settings["servers"][server_id]
  54.         dataIO.save_json(self.settings_file, self.settings)
  55.         await self.bot.say("")
  56.  
  57.     async def get_role_obj(self, id_list, server):
  58.         role = []
  59.         for role_id in id_list:
  60.             try:
  61.                 for roles in server.roles:
  62.                     if roles.id == role_id:
  63.                         role.append(roles)
  64.             except AttributeError:
  65.                 print("")
  66.         return role
  67.  
  68.     async def change_colours(self):
  69.         await self.bot.wait_until_ready()
  70.         while self is self.bot.get_cog("Rainbow"):
  71.             for server_id in self.settings["servers"]:
  72.                 server = self.bot.get_server(id=server_id)
  73.                 roles = await self.get_role_obj(self.settings["servers"][server_id], server)
  74.                 for role in roles:
  75.                     colour = ''.join([choice('0123456789ABCDEF') for x in range(6)])
  76.                     colour = int(colour, 16)
  77.                     await self.bot.edit_role(server, role, colour=discord.Colour(value=colour))
  78.             # print("Roles updated!")
  79.             await asyncio.sleep(self.settings["delay"])
  80.  
  81.  
  82. def check_folders():
  83.     if not os.path.exists("data/rainbow"):
  84.         print("Creating data/rainbow folder...")
  85.         os.makedirs("data/rainbow")
  86.  
  87.  
  88. def check_files():
  89.     settings = {"delay": 300, "servers": {}}
  90.     f = "data/rainbow/settings.json"
  91.     if not fileIO(f, "check"):
  92.         print("Creating empty settings.json...")
  93.         dataIO.save_json(f, settings)
  94.  
  95.  
  96. def setup(bot):
  97.     check_folders()
  98.     check_files()
  99.     n = Rainbow(bot)
  100.     loop = asyncio.get_event_loop()
  101.     loop.create_task(n.change_colours())
  102.     bot.add_cog(n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement