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.

86 lines
2.6KB

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