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.

91 lines
2.7KB

  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. },
  33. "nsfw": {
  34. "enabled": 0
  35. },
  36. "perm_roles": {
  37. "admin": [],
  38. "mod":[]
  39. },
  40. "custom_commands":{
  41. "0": {},
  42. "1": {}
  43. },
  44. "gss":{
  45. "log_channel": "",
  46. "required_days": "",
  47. "required_score": "",
  48. }
  49. }
  50. }
  51. self.servers = self.load_config()
  52. # TODO: Move this to Checks
  53. self.no_perms_reponse = ":no_entry_sign: You do not have permission to use this command."
  54. self.delete_after = 20
  55. def load_config(self):
  56. with open('config/servers.json', 'r') as config_file:
  57. return json.load(config_file)
  58. def update_config(self, config):
  59. with open('config/servers.json', 'w') as conf_file:
  60. json.dump(config, conf_file)
  61. def error_check(self, servers):
  62. for server in servers:
  63. if server.id not in self.servers:
  64. self.servers[server.id] = self.servers_template["example"]
  65. self.update_config(self.servers)
  66. print(
  67. "WARNING: The config file for {} was not found. A template has been loaded and saved. All cogs are turned off by default.".format(
  68. server.name.upper()))
  69. else:
  70. for cog_setting in self.servers_template["example"]:
  71. if cog_setting not in self.servers[server.id]:
  72. self.servers[server.id][cog_setting] = self.servers_template["example"][
  73. cog_setting]
  74. self.update_config(self.servers)
  75. print(
  76. "WARNING: The config file for {} was missing the {} cog. This has been fixed with the template version. It is disabled by default.".format(
  77. server.name.upper(), cog_setting.upper()))
  78. for setting in self.servers_template["example"][cog_setting]:
  79. if setting not in self.servers[server.id][cog_setting]:
  80. self.servers[server.id][cog_setting][setting] = self.servers_template["example"][
  81. cog_setting][setting]
  82. self.update_config(self.servers)
  83. print(
  84. "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(
  85. server.name.upper(), setting.upper(), cog_setting.upper()))
  86. print("")