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.

81 lines
2.5KB

  1. import json
  2. class ServerConfig():
  3. def __init__(self):
  4. # Admin role is how it is because of how I print out settings. Touch it and it will break that command.
  5. self.servers_template = {
  6. "example": {
  7. "greets": {
  8. "enabled": 0,
  9. "welcome-channel": "",
  10. "member-role": "",
  11. "custom-message": "",
  12. "default-message": "Be sure to read the rules."
  13. },
  14. "goodbyes": {
  15. "enabled": 0,
  16. "goodbye-channel": "",
  17. },
  18. "self_assign": {
  19. "enabled": 0,
  20. "roles": []
  21. },
  22. "twitch": {
  23. "enabled": 0,
  24. "twitch-channel": "",
  25. "whitelist": {
  26. "enabled": 0,
  27. "list": []
  28. },
  29. },
  30. "mute": {
  31. "role": "",
  32. "admin-role": []
  33. },
  34. "nsfw": {
  35. "enabled": 0
  36. },
  37. "admin_role": {
  38. "role": ""
  39. }
  40. }
  41. }
  42. self.servers = self.load_config()
  43. # TODO: Move this to Checks
  44. self.no_perms_reponse = ":no_entry_sign: You do not have permission to use this command."
  45. self.delete_after = 20
  46. def load_config(self):
  47. with open('config/servers.json', 'r') as config_file:
  48. return json.load(config_file)
  49. def update_config(self, config):
  50. with open('config/servers.json', 'w') as conf_file:
  51. json.dump(config, conf_file)
  52. def error_check(self, servers):
  53. for server in servers:
  54. if server.id not in self.servers:
  55. self.servers[server.id] = self.servers_template["example"]
  56. self.update_config(self.servers)
  57. print(
  58. "WARNING: The config file for {} was not found. A template has been loaded and saved. All cogs are turned off by default.".format(
  59. server.name.upper()))
  60. else:
  61. for cog_setting in self.servers_template["example"]:
  62. for setting in self.servers_template["example"][cog_setting]:
  63. if setting not in self.servers[server.id][cog_setting]:
  64. self.servers[server.id][cog_setting][setting] = self.servers_template["example"][
  65. cog_setting][setting]
  66. self.update_config(self.servers)
  67. print(
  68. "WARNING: The config file for {} was missing the {} setting in the {} cog. This has been fixed with the template version. It is disabled by default.".format(
  69. server.name.upper(), setting.upper(), cog_setting.upper()))
  70. if cog_setting not in self.servers[server.id]:
  71. self.servers[server.id][cog_setting] = self.servers_template["example"][
  72. cog_setting]
  73. self.update_config(self.servers)
  74. print(
  75. "WARNING: The config file for {} was missing the {} cog. This has been fixed with the template version. It is disabled by default.".format(
  76. server.name.upper(), cog_setting.upper()))
  77. print("")