Files
my-botty/src/api/discord_embeds.py
T
egut125 dff178bbc7 Breaking Messenger Module into something more flexible for specif… (#370)
* WIP Breaking Messenger Module into something more flexible for specific apis

* Cleanup and removal of data class

* Working embeds sort of

* Simple embeds set up

* Adding image of stashing items to discord embed

* Discord Embed updates with images

death_manager and game_controller both store path to last death/chicken screenshot
Pass last screenshot path along to game_stats and discord_embeds to place in discord message

* Color adjust

* Updating filenames formobile notifications

* Create loot_screenshots folder if it doesn't exist and api=discord

* Fixing missed messenger.send calls

* UI for discord updates

* Switching to i_api and explicit functions

* Update all messenger calls to new functions

* Param name change

* Simplify discord_basic api

* Switching from interface to generic api class

* One new messenger call from master

* spacing
2022-01-06 18:33:59 +01:00

87 lines
3.7 KiB
Python

from .generic_api import GenericApi
from config import Config
import cv2
import datetime
import discord
from version import __version__
import numpy as np
from discord import Webhook, RequestsWebhookAdapter, Color
class DiscordEmbeds(GenericApi):
def __init__(self):
self._config = Config()
self._webhook = Webhook.from_url(self._config.general['custom_message_hook'], adapter=RequestsWebhookAdapter(), )
self._file = None
self._psnURL = "https://i.psnprofiles.com/games/3bffee/trophies/"
def send_item(self, item: str, image: np.ndarray, location: str):
imgName = item.replace('_', '-')
cv2.imwrite(f"./loot_screenshots/{item}.png", image)
file = discord.File(f"./loot_screenshots/{item}.png", filename=f"{imgName}.png")
e = discord.Embed(
title="Item Stashed!",
description=f"{item} at {location}",
color=self._get_Item_Color( item),
)
e.set_thumbnail(url=f"{self._psnURL}41L6bd712.png")
e.set_image(url=f"attachment://{imgName}.png")
self._send_embed(e, file)
def send_death(self, location, image_path):
file = discord.File(image_path, filename="death.png")
e = discord.Embed(title=f"{self._config.general['name']} has died at {location}", color=Color.dark_red())
e.title=(f"{self._config.general['name']} died")
e.description=(f"Died at {location}")
e.set_thumbnail(url=f"{self._psnURL}33L5e3600.png")
e.set_image(url="attachment://death.png")
self._send_embed(e, file)
def send_chicken(self, location, image_path):
file = discord.File(image_path, filename="chicken.png")
e = discord.Embed(title=f"{self._config.general['name']} has chickened at {location}", color=Color.dark_grey())
e.title=(f"{self._config.general['name']} ran away")
e.description=(f"chickened at {location}")
e.set_thumbnail(url=f"{self._psnURL}39Ldf113b.png")
e.set_image(url="attachment://chicken.png")
self._send_embed(e, file)
def send_stash(self):
e = discord.Embed(title=f"{self._config.general['name']} has a full stash!", color=Color.dark_grey())
e.title=(f"{self._config.general['name']} has a full stash!")
e.description=(f"{self._config.general['name']} has to quit. \n They cannot store anymore items!")
e.set_thumbnail(url=f"{self._psnURL}35L63a9df.png")
self._send_embed(e)
def send_gold(self):
e = discord.Embed(title=f"{self._config.general['name']} is rich!", color=Color.dark_grey())
e.title=(f"{self._config.general['name']} is Rich!")
e.description=(f"{self._config.general['name']} can't store any more money!\n turning off gold pickup.")
e.set_thumbnail(url=f"{self._psnURL}6L341955.png")
self._send_embed(e)
def send_message(self, msg: str):
e = discord.Embed(title=f"Update:", description=f"```{msg}```", color=Color.dark_teal())
if not self._config.general['discord_status_condensed']:
e.set_thumbnail(url=f"{self._psnURL}36L4a4994.png")
self._send_embed(e)
def _send_embed(self, e, file = None):
e.set_footer(text=f'Botty v.{__version__} by Aeon')
e.timestamp=datetime.datetime.now(datetime.timezone.utc)
self._webhook.send(embed=e, file=file, username=self._config.general['name'])
def _get_Item_Color(self, item):
if "magic_" in item:
return Color.blue()
elif "set_" in item:
return Color.green()
elif "rune_" in item:
return Color.dark_gold()
elif "uniq_" in item or "rare" in item:
return Color.gold()
elif "gray_" in item:
return Color.darker_grey()
else:
return Color.blue()