diff --git a/discord/client.py b/discord/client.py index 64771a7e..a42415f1 100644 --- a/discord/client.py +++ b/discord/client.py @@ -29,6 +29,8 @@ import logging import signal import sys import traceback +import os +import re import aiohttp @@ -55,6 +57,7 @@ from .backoff import ExponentialBackoff from .webhook import Webhook from .iterators import GuildIterator from .appinfo import AppInfo +from .colour import Color, Colour log = logging.getLogger(__name__) @@ -232,6 +235,7 @@ class Client: self._listeners = {} self.shard_id = options.get('shard_id') self.shard_count = options.get('shard_count') + self._embed_color = options.get('embed_color') connector = options.pop('connector', None) proxy = options.pop('proxy', None) @@ -273,6 +277,24 @@ class Client: def _handle_ready(self): self._ready.set() + @property + def embed_color(self): + """Optional[:class:`.Color`]: The default color for all embeds + """ + return self._embed_color + + @embed_color.setter + def embed_color(self, value): + if isinstance(value, (Color, Colour)): + self._embed_color = hex(value) + os.environ['DEFAULT_EMBED_COLOR'] = str(hex(value)) + HEX = re.compile(r'^(0x)[A-Fa-f0-9]{6}$') + elif HEX.match(str(value))): + self._embed_color = value + os.environ['DEFAULT_EMBED_COLOR'] = str(value) + else: + raise TypeError('embed_color must be an instance of discord.Colour or a valid 0x****** hex value.') + @property def latency(self): """:class:`float`: Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds. diff --git a/discord/embeds.py b/discord/embeds.py index aa1563e4..af26480f 100644 --- a/discord/embeds.py +++ b/discord/embeds.py @@ -25,6 +25,7 @@ DEALINGS IN THE SOFTWARE. """ import datetime +import os from . import utils from .colour import Colour @@ -108,7 +109,9 @@ class Embed: try: colour = kwargs['colour'] except KeyError: - colour = kwargs.get('color', EmptyEmbed) + default_colour = kwargs.get('color', EmptyEmbed) + colour = os.getenv("DEFAULT_EMBED_COLOR", default=default_colour) + self.colour = colour self.title = kwargs.get('title', EmptyEmbed)