cogs = [ | |||||
] |
__description__ = """RoxBot, A Discord Bot made by a filthy Mercy Main. Built with love (and discord.py) by Roxxers#7443 | |||||
Github link: https://github.com/RainbowDinoaur/roxbot""" | |||||
__author__ = "Roxie Gibson" | |||||
__version__= "1.0" |
[Roxbot] | [Roxbot] | ||||
OwnerID= | |||||
Token= | |||||
Command_Prefix= | |||||
OwnerID=142735312626515979 | |||||
Token=MzA4MDc3ODg3MDYyNTQwMjg5.DH1aqg.lC3aQ8kV-dcJPZ63GQUwkWM_Oos | |||||
Command_Prefix=r; |
{} | |||||
{"304048071963312130": {"greets": {"enabled": 0, "welcome-channel": "", "member-role": "", "custom-message": "", "default-message": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "selfAssign": {"enabled": 0, "roles": []}, "twitch": {"enabled": 0, "twitch-channel": "", "whitelist": {"enabled": 0, "list": []}}, "mute": {"role": "", "admin-role": []}}} |
import configparser | |||||
settings = configparser.ConfigParser() | |||||
settings.read("config/preferences.ini") | |||||
command_prefix = settings["Roxbot"]["Command_Prefix"] | |||||
token = settings["Roxbot"]["Token"] | |||||
owner = settings["Roxbot"]["OwnerID"] |
from config import settings, cogs, meta | |||||
command_prefix = settings.command_prefix | |||||
token = settings.token | |||||
owner = settings.owner | |||||
cogslist = cogs.cogs | |||||
description = meta.__description__ | |||||
version = meta.__version__ | |||||
author = meta.__author__ |
#!/usr/env python | #!/usr/env python | ||||
import logging | import logging | ||||
import configparser | |||||
import discord | import discord | ||||
from discord.ext import commands | from discord.ext import commands | ||||
from server_config import ServerConfig | from server_config import ServerConfig | ||||
import load_config | |||||
# Sets up Logging that discord.py does on its own | # Sets up Logging that discord.py does on its own | ||||
logger = logging.getLogger('discord') | logger = logging.getLogger('discord') | ||||
logger.setLevel(logging.DEBUG) | |||||
logger.setLevel(logging.INFO) | |||||
handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w') | handler = logging.FileHandler(filename='discord.log', encoding='utf-8', mode='w') | ||||
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s')) | handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s')) | ||||
logger.addHandler(handler) | logger.addHandler(handler) | ||||
settings = configparser.ConfigParser() | |||||
settings.read("config/preferences.ini") | |||||
command_prefix = settings["Roxbot"]["Command_Prefix"] | |||||
token = settings["Roxbot"]["Token"] | |||||
owner = settings["Roxbot"]["OwnerID"] | |||||
server_config = ServerConfig() | server_config = ServerConfig() | ||||
bot = commands.Bot(command_prefix=command_prefix) | |||||
bot = commands.Bot(command_prefix=load_config.command_prefix, description=load_config.description) | |||||
@bot.event | @bot.event | ||||
async def on_ready(): | async def on_ready(): | ||||
server_config.error_check(bot.servers) | |||||
print("Client Logged In") | print("Client Logged In") | ||||
game = discord.Game(name="Rewriting Moi", type=0) | |||||
bot.owner = load_config.owner | |||||
print("Cogs Loaded:") | |||||
for cog in load_config.cogslist: | |||||
bot.load_extension(cog) | |||||
print(cog) | |||||
# Testing Code | |||||
game = discord.Game(name="Rewriting Moi for v{}".format(load_config.version), type=0) | |||||
await bot.change_presence(game=game) | await bot.change_presence(game=game) | ||||
print("Game Changed") | print("Game Changed") | ||||
pass | pass | ||||
bot.run(token) | |||||
bot.run(load_config.token) |
class ServerConfig(): | class ServerConfig(): | ||||
def __init__(self): | def __init__(self): | ||||
# TODO: Move default message into settings.ini | |||||
self.servers_template = { | self.servers_template = { | ||||
"example": { | "example": { | ||||
"greets": { | "greets": { | ||||
self.delete_after = 20 | self.delete_after = 20 | ||||
def load_config(self): | def load_config(self): | ||||
with open('config/config.json', 'r') as config_file: | |||||
with open('config/servers.json', 'r') as config_file: | |||||
return json.load(config_file) | return json.load(config_file) | ||||
def update_config(self, config): | def update_config(self, config): | ||||
with open('config/config.json', 'w') as conf_file: | |||||
with open('config/servers.json', 'w') as conf_file: | |||||
json.dump(config, conf_file) | json.dump(config, conf_file) | ||||
def errorcheck(self, servers): | |||||
# TODO: Fix so that it checks for problems in children of module settings. i.e children of 'greets' | |||||
# TODO: Fix issue where a setting can be enabled when it has no channel to post to. | |||||
def error_check(self, servers): | |||||
for server in servers: | for server in servers: | ||||
if server.id not in self.servers: | if server.id not in self.servers: | ||||
self.servers[server.id] = self.servers_template["example"] | self.servers[server.id] = self.servers_template["example"] | ||||
self.update_config(self.servers) | self.update_config(self.servers) | ||||
print( | print( | ||||
"WARNING: The config file for {} was not found. A template has been loaded and saved. All modules are turned off by default.".format( | |||||
"WARNING: The config file for {} was not found. A template has been loaded and saved. All cogs are turned off by default.".format( | |||||
server.name.upper())) | server.name.upper())) | ||||
else: | else: | ||||
for module_setting in self.servers_template["example"]: | |||||
if module_setting not in self.servers[server.id]: | |||||
self.servers[server.id][module_setting] = self.servers_template["example"][ | |||||
module_setting] | |||||
for cog_setting in self.servers_template["example"]: | |||||
for setting in self.servers_template["example"][cog_setting]: | |||||
if setting not in self.servers[server.id][cog_setting]: | |||||
self.servers[server.id][cog_setting][setting] = self.servers_template["example"][ | |||||
cog_setting][setting] | |||||
self.update_config(self.servers) | |||||
print( | |||||
"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( | |||||
server.name.upper(), setting.upper(), cog_setting.upper())) | |||||
if cog_setting not in self.servers[server.id]: | |||||
self.servers[server.id][cog_setting] = self.servers_template["example"][ | |||||
cog_setting] | |||||
self.update_config(self.servers) | self.update_config(self.servers) | ||||
print( | print( | ||||
"WARNING: The config file for {} was missing the {} module. This has been fixed with the template version. It is disabled by default.".format( | |||||
server.name.upper(), module_setting.upper())) | |||||
"WARNING: The config file for {} was missing the {} cog. This has been fixed with the template version. It is disabled by default.".format( | |||||
server.name.upper(), cog_setting.upper())) | |||||
print("") | print("") |