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