You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.2KB

  1. import checks
  2. import datetime
  3. import requests
  4. import load_config
  5. from discord.ext.commands import bot
  6. from config.server_config import ServerConfig
  7. class GaySoundsShitposting():
  8. def __init__(self, Bot):
  9. self.bot = Bot
  10. self.con = ServerConfig()
  11. self.servers = self.con.servers
  12. @checks.is_gss()
  13. @bot.command(pass_context=True)
  14. async def selfieperms(self, ctx):
  15. """Requests the selfie perm role."""
  16. member = ctx.message.author
  17. server = ctx.message.server
  18. set_role = "394939389823811584"
  19. role_obj = None
  20. required_score = int(self.servers[server.id]["gss"]["required_score"])
  21. days = int(self.servers[server.id]["gss"]["required_days"])
  22. logging = self.servers[server.id]["gss"]["log_channel"]
  23. for role in server.roles:
  24. if role.id == set_role:
  25. role_obj = role
  26. if role_obj in member.roles:
  27. return await self.bot.say("You already have the {} role.".format(role_obj.name))
  28. base = "https://api.tatsumaki.xyz/"
  29. url = base + "guilds/" + server.id + "/members/" + member.id + "/stats"
  30. r = requests.get(url,headers={"Authorization":load_config.tat_token})
  31. data = r.json()
  32. time = datetime.datetime.now() - ctx.message.author.joined_at
  33. if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score:
  34. await self.bot.add_roles(member, role_obj)
  35. await self.bot.say("You have now got the {} role".format(role_obj.name))
  36. if logging:
  37. return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, role_obj.name))
  38. else:
  39. return await self.bot.say(
  40. "You do not meet the requirements for this role. You need at least {} score with <@!172002275412279296> and to have been in the server for {} days.".format(required_score, days)
  41. )
  42. @checks.is_gss()
  43. @bot.command(pass_context=True)
  44. async def nsfwperms(self, ctx):
  45. """Requests the NSFW Image Perm role."""
  46. member = ctx.message.author
  47. server = ctx.message.server
  48. set_role = "394941004043649036"
  49. role_obj = None
  50. required_score = int(self.servers[server.id]["gss"]["required_score"])
  51. days = int(self.servers[server.id]["gss"]["required_days"])
  52. logging = self.servers[server.id]["gss"]["log_channel"]
  53. for role in server.roles:
  54. if role.id == set_role:
  55. role_obj = role
  56. if role_obj in member.roles:
  57. return await self.bot.say("You already have the {} role.".format(role_obj.name))
  58. base = "https://api.tatsumaki.xyz/"
  59. url = base + "guilds/" + server.id + "/members/" + member.id + "/stats"
  60. r = requests.get(url,headers={"Authorization":load_config.tat_token})
  61. data = r.json()
  62. time = datetime.datetime.now() - ctx.message.author.joined_at
  63. if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score:
  64. await self.bot.add_roles(member, role_obj)
  65. await self.bot.say("You have now got the {} role".format(role_obj.name))
  66. if logging:
  67. return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, role_obj.name))
  68. else:
  69. return await self.bot.say(
  70. "You do not meet the requirements for this role. You need at least {} score with <@!172002275412279296> and to have been in the server for {} days.".format(required_score, days)
  71. )
  72. def setup(Bot):
  73. Bot.add_cog(GaySoundsShitposting(Bot))