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
4.0KB

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