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.

89 lines
3.7KB

  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. return await self.bot.say("You already had {}. It has now been removed.".format(self.selfie_role.name))
  40. time = datetime.datetime.now() - ctx.message.author.joined_at
  41. if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score:
  42. await self.bot.add_roles(member, self.selfie_role)
  43. await self.bot.say("You have now have the {} role".format(self.selfie_role.name))
  44. if logging:
  45. return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, self.selfie_role.name))
  46. else:
  47. return await self.bot.say(
  48. "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)
  49. )
  50. @is_not_nsfw_disabled()
  51. @is_gss()
  52. @bot.command(pass_context=True)
  53. async def nsfwperms(self, ctx):
  54. """Requests the NSFW Image Perm role."""
  55. member = ctx.message.author
  56. required_score = int(self.servers[self.guild.id]["gss"]["required_score"])
  57. days = int(self.servers[self.guild.id]["gss"]["required_days"])
  58. logging = self.servers[self.guild.id]["gss"]["log_channel"]
  59. data = self.tatsumaki_api_call(member)
  60. if self.nsfw_image_role in member.roles:
  61. await self.bot.remove_roles(member, self.nsfw_image_role)
  62. return await self.bot.say("You already had {}. It has now been removed.".format(self.nsfw_image_role.name))
  63. time = datetime.datetime.now() - ctx.message.author.joined_at
  64. if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score:
  65. await self.bot.add_roles(member, self.nsfw_image_role)
  66. await self.bot.say("You have now have the {} role".format(self.nsfw_image_role.name))
  67. if logging:
  68. return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, self.nsfw_image_role.name))
  69. else:
  70. return await self.bot.say(
  71. "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)
  72. )
  73. def setup(Bot):
  74. Bot.add_cog(GaySoundsShitposting(Bot))