Use yaml for settings.

This commit is contained in:
Ev-1 committed 2019-02-03 19:40:49 +01:00
1 parent e8225d42f0
commit 2cc4d9771a
10 files changed
+68 -53

No files matched your search

+2 -4
View File
@@ -1,7 +1,5 @@
config.json data/*
data/ !data/config.yaml.example
lavalink/
lavasettings.py
.tests/ .tests/
.idea/ .idea/
+12 -15
View File
@@ -1,26 +1,24 @@
import json
import codecs
import discord import discord
import codecs
import time import time
import sys import sys
import traceback import traceback
import yaml
from discord.ext import commands from discord.ext import commands
from cogs.utils.settings import Settings from cogs.utils.settings import Settings
from cogs.utils.localizer import Localizer from cogs.utils.localizer import Localizer
initial_extension = [
initial_extensions = [
'cogs.cogs', 'cogs.cogs',
'cogs.botsettings', 'cogs.botsettings',
'cogs.misc' 'cogs.misc'
] ]
with codecs.open("config.json", 'r', encoding='utf8') as f: with codecs.open("data/config.yaml", 'r', encoding='utf8') as f:
config = json.load(f) conf = yaml.safe_load(f)
default_prefix = config["default_prefix"]
def _get_prefix(bot, message): def _get_prefix(bot, message):
@@ -33,14 +31,13 @@ def _get_prefix(bot, message):
class Bot(commands.Bot): class Bot(commands.Bot):
def __init__(self, debug: bool=False): def __init__(self, debug: bool=False):
super().__init__(command_prefix=_get_prefix, super().__init__(command_prefix=_get_prefix,
description=config["description"]) description=conf["bot"]["description"])
self.settings = Settings(**config) self.settings = Settings(**conf['default server settings'])
# Todo, maybe fix. Ability to set default bot lang in settings self.localizer = Localizer(conf.get('locale path', "./localization"), conf.get('locale', 'en_en'))
self.localizer = Localizer(self.settings.default_lang_path, "en_en")
self.debug = debug self.debug = debug
for extension in initial_extension: for extension in initial_extensions:
try: try:
self.load_extension(extension) self.load_extension(extension)
except Exception as e: except Exception as e:
@@ -92,12 +89,12 @@ class Bot(commands.Bot):
self.load_extension('cogs.musicevents') self.load_extension('cogs.musicevents')
await self.change_presence(activity=discord.Game(type=0, await self.change_presence(activity=discord.Game(type=0,
name=config["playing"]), name=conf["bot"]["playing status"]),
status=discord.Status.online) status=discord.Status.online)
def run(self): def run(self):
try: try:
super().run(config["token"], reconnect=True) super().run(conf["bot"]["token"], reconnect=True)
except Exception as e: except Exception as e:
tb = e.__traceback__ tb = e.__traceback__
traceback.print_tb(tb) traceback.print_tb(tb)
-1
View File
@@ -129,7 +129,6 @@ class BotSettings:
@commands.guild_only() @commands.guild_only()
@_set.command(name='djroles') @_set.command(name='djroles')
async def set_dj_roles(self, ctx, *roles: discord.Role): async def set_dj_roles(self, ctx, *roles: discord.Role):
print(roles)
role_ids = [role.id for role in roles] role_ids = [role.id for role in roles]
if roles: if roles:
self.bot.settings.set(ctx.guild.id, 'roles.dj', role_ids) self.bot.settings.set(ctx.guild.id, 'roles.dj', role_ids)
+12 -9
View File
@@ -4,19 +4,18 @@ Music commands
import math import math
import re import re
import asyncio import asyncio
import discord
import lavalink
from discord.ext import commands
import time import time
import yaml
import codecs
import lavalink
import discord
from discord.ext import commands
from typing import Optional
from .utils import checks, RoxUtils from .utils import checks, RoxUtils
from .utils.mixplayer import MixPlayer from .utils.mixplayer import MixPlayer
from typing import Optional
from .utils.embedscroller import QueueScroller from .utils.embedscroller import QueueScroller
from lavasettings import *
from .utils.localizer import LocalizerWrapper from .utils.localizer import LocalizerWrapper
time_rx = re.compile('[0-9]+') time_rx = re.compile('[0-9]+')
@@ -29,7 +28,11 @@ class Music:
if not hasattr(bot, 'lavalink'): # This ensures the client isn't overwritten during cog reloads. if not hasattr(bot, 'lavalink'): # This ensures the client isn't overwritten during cog reloads.
bot.lavalink = lavalink.Client(bot.user.id, player=MixPlayer) bot.lavalink = lavalink.Client(bot.user.id, player=MixPlayer)
bot.lavalink.add_node(host, port, password, region, 'default-node') # Host, Port, Password, Region, Name
with codecs.open("data/config.yaml", 'r', encoding='utf8') as f:
conf = yaml.safe_load(f)
bot.lavalink.add_node(**conf['lavalink nodes']['main'])
bot.add_listener(bot.lavalink.voice_update_handler, 'on_socket_response') bot.add_listener(bot.lavalink.voice_update_handler, 'on_socket_response')
def getLocalizer(self, guild_id): def getLocalizer(self, guild_id):
+6 -4
View File
@@ -3,7 +3,7 @@ A cog to separate events from regular music commands
""" """
import asyncio import asyncio
import yaml
import discord import discord
import lavalink import lavalink
from discord.ext import commands from discord.ext import commands
@@ -12,8 +12,6 @@ import time
from .utils.mixplayer import MixPlayer from .utils.mixplayer import MixPlayer
from lavalink.events import * from lavalink.events import *
from lavasettings import *
class MusicEvents: class MusicEvents:
def __init__(self, bot): def __init__(self, bot):
@@ -21,7 +19,11 @@ class MusicEvents:
# TODO: maybe only load when Music loads # TODO: maybe only load when Music loads
if not hasattr(bot, 'lavalink'): # This ensures the client isn't overwritten during cog reloads. if not hasattr(bot, 'lavalink'): # This ensures the client isn't overwritten during cog reloads.
bot.lavalink = lavalink.Client(bot.user.id, player=MixPlayer) bot.lavalink = lavalink.Client(bot.user.id, player=MixPlayer)
bot.lavalink.add_node(host, port, password, region, 'default-node') # Host, Port, Password, Region, Name
with codecs.open("data/config.yaml", 'r', encoding='utf8') as f:
conf = yaml.safe_load(f)
bot.lavalink.add_node(**conf['lavalink nodes']['main'])
bot.add_listener(bot.lavalink.voice_update_handler, 'on_socket_response') bot.add_listener(bot.lavalink.voice_update_handler, 'on_socket_response')
bot.lavalink.add_event_hook(self.track_hook) bot.lavalink.add_event_hook(self.track_hook)
+4 -6
View File
@@ -9,12 +9,10 @@ class Settings:
self._DATA_PATH = 'data/bot/' self._DATA_PATH = 'data/bot/'
self._SETTINGS_PATH = self._DATA_PATH + 'settings.json' self._SETTINGS_PATH = self._DATA_PATH + 'settings.json'
self.default_prefix = default_settings["default_prefix"] self.default_prefix = default_settings["prefix"]
self.default_admin = default_settings["default_admin"] self.default_mod = default_settings["moderator_role"]
self.default_mod = default_settings["default_mod"] self.default_locale = default_settings["locale"]
self.default_locale = default_settings["default_locale"] self.default_threshold = default_settings["threshold"]
self.default_lang_path = default_settings["default_lang_path"] or \
"./localization"
if not self.default_locale: if not self.default_locale:
locale, codepage = locale.getlocale() locale, codepage = locale.getlocale()
-10
View File
@@ -1,10 +0,0 @@
{
"token": "",
"default_prefix": [""],
"default_admin": "Admin",
"default_mod": "Moderator",
"default_locale": "en_en",
"default_lang_path": "./localization",
"playing": "",
"description": ""
}
+31
View File
@@ -0,0 +1,31 @@
bot:
token:
description: Music bot
playing status: music
# Where the bot will look for translations
locale_path: ./localization
# Settings used if server settings aren't specified
default server settings:
prefix:
- "!"
moderator_role: Moderator
locale: en_en
threshold: 50
lavalink nodes:
main: # The preferred lavalink node for your music bot
host: localhost
port: 2333
password: youshallnotpass
region: eu
name: default-node
# Backup nodes for your music bot
backup:
- host: localhost
port: 2333
password: youshallnotpass
region: eu
name: backup-1
-4
View File
@@ -1,4 +0,0 @@
host = 'localhost'
port = 2333
password = 'youshallnotpass'
region = 'eu'
+1
View File
@@ -1,5 +1,6 @@
git+https://github.com/Rapptz/discord.py@rewrite git+https://github.com/Rapptz/discord.py@rewrite
git+https://github.com/Devoxin/Lavalink.py@dev git+https://github.com/Devoxin/Lavalink.py@dev
asyncio asyncio
pyyaml
bs4 bs4
aiohttp<3.5.0,>=3.3.0 aiohttp<3.5.0,>=3.3.0