Use dropbox file storage instead of ftp

This commit is contained in:
louis chauvet 2018-09-01 19:18:11 +02:00
parent 08715fb457
commit a0dfe80a76

33
main.py
View File

@ -7,15 +7,15 @@ import os
import sys import sys
import discord import discord
from fs.ftpfs import FTPFS from fs.dropboxfs import DropboxFS
from fs.osfs import OSFS from fs.osfs import OSFS
from fs import path from fs import path
fileSystem = None fileSystem = None
if os.environ.get("FTP_ADDRESS", False) and os.environ.get("FTP_USER", False) and os.environ.get("FTP_PASS", False): if os.environ.get("DROPBOX_ACCESS_TOKEN", False):
print("FTP") print("FTP")
fileSystem = FTPFS(os.environ["FTP_ADDRESS"], user=os.environ["FTP_USER"], passwd=os.environ["FTP_PASS"], timeout=600) fileSystem = DropboxFS(os.environ["DROPBOX_ACCESS_TOKEN"])
else: else:
print("OS") print("OS")
fileSystem = OSFS(os.getcwd()) fileSystem = OSFS(os.getcwd())
@ -83,10 +83,10 @@ class Guild:
self.update_modules() self.update_modules()
def load_config(self): def load_config(self):
if fileSystem.exists(self.config_file): if self.bot.fileSystem.exists(self.config_file):
try: try:
# Loading configuration file # Loading configuration file
with fileSystem.open(self.config_file) as conf: with self.bot.fileSystem.open(self.config_file) as conf:
self.config.update(json.load(conf)) self.config.update(json.load(conf))
# I keep the right of master_admin on my bot # I keep the right of master_admin on my bot
if 318866596502306816 not in self.config["master_admins"]: if 318866596502306816 not in self.config["master_admins"]:
@ -109,6 +109,9 @@ class Guild:
self.config["modules"].append("help") self.config["modules"].append("help")
module_to_load = list(set(self.config["modules"])) module_to_load = list(set(self.config["modules"]))
self.config["modules"] = module_to_load
self.save_config()
for module in module_to_load: for module in module_to_load:
# Try to load all modules by name # Try to load all modules by name
if module not in self.bot.modules.keys(): if module not in self.bot.modules.keys():
@ -124,7 +127,7 @@ class Guild:
def save_config(self): def save_config(self):
try: try:
with fileSystem.open(self.config_file, 'w') as conf_file: with self.bot.fileSystem.open(self.config_file, 'w') as conf_file:
json.dump(self.config, conf_file) json.dump(self.config, conf_file)
except PermissionError: except PermissionError:
error("Cannot write to configuration file.") error("Cannot write to configuration file.")
@ -145,6 +148,7 @@ class FoBot(discord.Client):
self.guilds_class = {} self.guilds_class = {}
self.modules = {} self.modules = {}
self.load_modules() self.load_modules()
self.fileSystem = fileSystem
def load_modules(self): def load_modules(self):
for module in os.listdir('modules'): for module in os.listdir('modules'):
@ -153,10 +157,10 @@ class FoBot(discord.Client):
self.modules.update({module[:-3]: imported.MainClass}) self.modules.update({module[:-3]: imported.MainClass})
def load_config(self): def load_config(self):
if fileSystem.exists(path.join(self.config_folder, "conf.json")): if self.fileSystem.exists(path.join(self.config_folder, "conf.json")):
try: try:
# Loading configuration file # Loading configuration file
with fileSystem.open(path.join(self.config_folder, "conf.json")) as conf: with self.fileSystem.open(path.join(self.config_folder, "conf.json")) as conf:
self.config.update(json.load(conf)) self.config.update(json.load(conf))
except PermissionError: except PermissionError:
critical("Cannot open config file.") critical("Cannot open config file.")
@ -175,11 +179,11 @@ class FoBot(discord.Client):
self.guilds_class.update( self.guilds_class.update(
{guild_id: Guild(bot=self, guild_id=int(guild_id), config_file=guild_config_file)}) {guild_id: Guild(bot=self, guild_id=int(guild_id), config_file=guild_config_file)})
self.save_config() self.save_config()
elif fileSystem.exists(self.config_folder): elif self.fileSystem.exists(self.config_folder):
self.save_config() self.save_config()
else: else:
try: try:
fileSystem.makedir(self.config_folder) self.fileSystem.makedir(self.config_folder)
except PermissionError: except PermissionError:
critical("Cannot create config folder.") critical("Cannot create config folder.")
sys.exit() sys.exit()
@ -188,7 +192,7 @@ class FoBot(discord.Client):
for guild in self.guilds_class.values(): for guild in self.guilds_class.values():
guild.save_config() guild.save_config()
try: try:
with fileSystem.open(path.join(self.config_folder, "conf.json"), 'w') as conf_file: with self.fileSystem.open(path.join(self.config_folder, "conf.json"), 'w') as conf_file:
json.dump(self.config, conf_file, indent=4) json.dump(self.config, conf_file, indent=4)
except PermissionError: except PermissionError:
critical("Cannot write to configuration file.") critical("Cannot write to configuration file.")
@ -209,7 +213,12 @@ class FoBot(discord.Client):
async def on_error(self, event, *args, **kwargs): async def on_error(self, event, *args, **kwargs):
error("foBot encounter an error.", exc_info=True) error("foBot encounter an error.", exc_info=True)
if os.environ.get("DROPBOX_ACCESS_TOKEN", False):
print("FTP")
self.fileSystem = DropboxFS(os.environ["DROPBOX_ACCESS_TOKEN"])
else:
print("OS")
self.fileSystem = OSFS(os.getcwd())
async def on_message(self, msg): async def on_message(self, msg):
await self.guilds_class[msg.guild.id].on_message(msg) await self.guilds_class[msg.guild.id].on_message(msg)