1
Fork 0
mirror of https://github.com/wlinator/luminara.git synced 2024-10-02 20:43:12 +00:00

Consistency in error handling

This commit is contained in:
wlinator 2024-03-17 20:24:54 +01:00
parent 9a0e522bac
commit cc8ea460f2
9 changed files with 95 additions and 163 deletions

View file

@ -34,11 +34,3 @@ def not_enough_cash():
description="Oops! Your current cash balance isn't sufficient to do that."
)
return embed
def out_of_time():
embed = discord.Embed(
color=discord.Color.red(),
description="Uh-oh! Time's up. Your bet is forfeited as the game concludes."
)
return embed

View file

@ -1,123 +0,0 @@
import discord
from lib import formatter
from services.Xp import Xp
def welcome_message(member, template=None):
embed = discord.Embed(
color=discord.Color.embed_background(),
description=f"_ _\n**Welcome** to **{member.guild.name}**"
)
if template:
embed.description += "↓↓↓\n" + formatter.template(template, member.name)
embed.set_thumbnail(url=member.display_avatar)
return embed
def command_error_1(error):
embed = discord.Embed(
color=discord.Color.red(),
description=f"Something went wrong.\n```{error}```"
)
return embed
def simple_question_5(question):
embed = discord.Embed(color=0xadcca6,
title=question)
embed.set_footer(text="max. 5 characters")
return embed
def simple_question_30(question):
embed = discord.Embed(color=0xadcca6,
title=question)
embed.set_footer(text="max. 30 characters")
return embed
def simple_question_100(question):
embed = discord.Embed(color=0xadcca6,
title=question)
embed.set_footer(text="max. 100 characters")
return embed
def simple_question_300(question):
embed = discord.Embed(color=0xadcca6,
title=question)
embed.set_footer(text="max. 300 characters")
return embed
def simple_question_none(question):
embed = discord.Embed(color=0xadcca6,
title=question)
return embed
def simple_question_first(question):
embed = discord.Embed(color=0xadcca6,
title=f"You chose to go with the short introduction! "
f"Let's start with your nickname. {question}")
embed.set_footer(text="max. 100 characters")
return embed
def simple_question_first_extended(question):
embed = discord.Embed(color=0xadcca6,
title=f"You chose to go with the extended introduction! "
f"Let's start with your nickname. {question}")
embed.set_footer(text="max. 100 characters")
return embed
def no_time():
embed = discord.Embed(description="You ran out of time or clicked the \"Stop\" button. "
"If you wish to start over, do **/intro**.")
return embed
def final_embed_short(ctx, nickname, age, location, pronouns, likes, dislikes):
embed = discord.Embed(color=0x2200FF, description=
f"**(Nick)name:** {nickname}\n\n**Age:** {age}\n\n"
f"**Region:** {location}\n\n**Pronouns:** {pronouns}\n\n"
f"**Likes & interests:** {likes}\n\n**Dislikes:** {dislikes}")
embed.set_author(name=ctx.author.name, icon_url=ctx.author.avatar.url)
embed.set_footer(text="Type: Short Introduction")
return embed
def final_embed_extended(ctx, nickname, age, location, languages, pronouns,
sexuality, relationship_status, likes, dislikes, extra):
embed = discord.Embed(color=0xD91E1E, description=
f"**(Nick)name:** {nickname}\n\n**Age:** {age}\n\n"
f"**Region:** {location}\n\n**Languages:** {languages}\n\n"
f"**Pronouns:** {pronouns}\n\n**Sexuality** {sexuality}\n\n"
f"**Relationship status:** {relationship_status}\n\n**Likes & interests:** {likes}\n\n"
f"**Dislikes:** {dislikes}\n\n**EXTRAS:** {extra}")
embed.set_author(name=ctx.author.name, icon_url=ctx.author.avatar.url)
embed.set_footer(text="Type: Extended Introduction")
return embed
def final_confirmation(channel_id):
embed = discord.Embed(color=0xadcca6,
title="Your introduction has been posted in the server!",
description=f"<#{channel_id}>")
return embed

View file

@ -2,11 +2,13 @@ import discord
from lib import formatter
question_icon = "https://i.imgur.com/8xccUws.png"
exclam_icon = "https://i.imgur.com/vitwMUu.png"
def clean_error_embed():
def clean_error_embed(ctx):
embed = discord.Embed(
color=discord.Color.red()
color=discord.Color.red(),
description=f"**{ctx.author.name}** "
)
return embed
@ -18,8 +20,8 @@ class EconErrors:
"""
See MissingRequiredArgument
"""
embed = clean_error_embed()
embed.description = f"**{ctx.author.name}** please enter a bet."
embed = clean_error_embed(ctx)
embed.description += "please enter a bet."
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
icon_url=question_icon)
return embed
@ -29,25 +31,60 @@ class EconErrors:
"""
See BadArgument
"""
embed = clean_error_embed()
embed.description = f"**{ctx.author.name}** the bet you entered is invalid."
embed = clean_error_embed(ctx)
embed.description += "the bet you entered is invalid."
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
icon_url=question_icon)
return embed
@staticmethod
def bad_argument(ctx):
"""
See BadArgument
"""
embed = clean_error_embed(ctx)
embed.description += "the argument you entered is invalid."
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
icon_url=question_icon)
return embed
@staticmethod
def insufficient_balance(ctx):
embed = clean_error_embed()
embed.description = f"**{ctx.author.name}** you don't have enough cash."
embed = clean_error_embed(ctx)
embed.description += "you don't have enough cash."
embed.set_footer(text=f"Do '{formatter.get_prefix(ctx)}balance' to see how much you can spend",
icon_url=question_icon)
return embed
@staticmethod
def daily_already_claimed(ctx, unix_time):
embed = clean_error_embed()
embed.description = f"**{ctx.author.name}** already claimed. You can claim your reward again <t:{unix_time}:R>."
embed = clean_error_embed(ctx)
embed.description += f"already claimed. You can claim your reward again <t:{unix_time}:R>."
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
icon_url=question_icon)
return embed
@staticmethod
def out_of_time(ctx):
embed = clean_error_embed(ctx)
embed.description += "you ran out of time."
embed.set_footer(text="Your bet was forfeited", icon_url=exclam_icon)
return embed
@staticmethod
def already_playing(ctx):
embed = clean_error_embed(ctx)
embed.description += f"you already have a game of {ctx.command.name} running."
embed.set_footer(text="Please finish this game first", icon_url=exclam_icon)
return embed
@staticmethod
def generic_exception(ctx):
embed = clean_error_embed(ctx)
embed.description += "something went wrong."
embed.set_footer(text="Try the command again", icon_url=exclam_icon)
return embed

View file

@ -1,15 +1,23 @@
import discord
question_icon = "https://i.imgur.com/8xccUws.png"
exclam_icon = "https://i.imgur.com/vitwMUu.png"
def clean_info_embed(ctx):
embed = discord.Embed(
color=discord.Color.brand_green(),
description=f"**{ctx.author.name}** "
)
return embed
class EconInfo:
@staticmethod
def daily_reward_claimed(ctx, formatted_amount, streak):
embed = discord.Embed(
color=discord.Color.brand_green(),
description=f"**{ctx.author.name}** you claimed your reward of **${formatted_amount}**!"
)
embed = clean_info_embed(ctx)
embed.description += f"you claimed your reward of **${formatted_amount}**!"
if streak > 1:
embed.set_footer(text=f"You're on a streak of {streak} days",

View file

@ -19,15 +19,6 @@ def welcome_message(member, template=None):
return embed
def command_error_1(error):
embed = discord.Embed(
color=discord.Color.red(),
description=f"Something went wrong.\n```{error}```"
)
return embed
def simple_question_5(question):
embed = discord.Embed(color=0xadcca6,
title=question)

View file

@ -89,11 +89,13 @@ class Economy(commands.Cog):
)
@commands.check(checks.channel)
async def inventory(self, ctx):
return await inventory.cmd(ctx)
return await inventory.cmd(self, ctx)
@commands.slash_command(
@bridge.bridge_command(
name="sell",
description="Sell items from your inventory.",
help="Sell something from your inventory. This command has no arguments because when you do the command "
"it will lead you through the process of selling items.",
guild_only=True
)
@commands.check(checks.channel)
@ -129,6 +131,31 @@ class Economy(commands.Cog):
async def stats(self, ctx, *, game: discord.Option(choices=["BlackJack", "Slots"])):
return await stats.cmd(self, ctx, game)
@commands.command(
name="stats",
aliases=["stat"],
help="Display your gambling stats, you can choose between \"blackjack\" or \"slots\"."
)
async def stats_prefixed(self, ctx, *, game: str):
if game.lower() == "blackjack" or game.lower() == "bj":
game = "BlackJack"
elif game.lower() == "slots" or game.lower() == "slot":
game = "Slots"
else:
raise commands.BadArgument
return await stats.cmd(self, ctx, game)
@stats_prefixed.error
async def on_command_error(self, ctx, error):
if isinstance(error, commands.MissingRequiredArgument):
await ctx.respond(embed=EconErrors.missing_bet(ctx))
elif isinstance(error, commands.BadArgument):
await ctx.respond(embed=EconErrors.bad_argument(ctx))
else:
raise error
def setup(client):
client.add_cog(Economy(client))

View file

@ -6,7 +6,7 @@ import pytz
from dotenv import load_dotenv
from handlers.ItemHandler import ItemHandler
from lib import economy_embeds, economy_functions, interaction, embeds_old
from lib import economy_functions, interaction
from lib.embeds.error import EconErrors
from main import economy_config
from services.BlackJackStats import BlackJackStats
@ -32,7 +32,7 @@ async def cmd(ctx, bet: int):
# check if the player already has an active blackjack going
if ctx.author.id in active_blackjack_games:
await ctx.respond(embed=economy_embeds.already_playing("BlackJack"))
await ctx.respond(embed=EconErrors.already_playing(ctx))
return
# Currency handler
@ -161,7 +161,7 @@ async def cmd(ctx, bet: int):
stats.push()
elif status == 6:
await ctx.send(embed=economy_embeds.out_of_time(), content=ctx.author.mention)
await ctx.send(embed=EconErrors.out_of_time(ctx), content=ctx.author.mention)
ctx_currency.take_balance(bet)
ctx_currency.push()
@ -181,7 +181,7 @@ async def cmd(ctx, bet: int):
stats.push()
except Exception as e:
await ctx.respond(embed=embeds_old.command_error_1(e))
await ctx.respond(embed=EconErrors.generic_exception(ctx))
logs.error("[CommandHandler] Something went wrong in the gambling command: ", e)
finally:

View file

@ -1,6 +1,6 @@
import discord
from lib import economy_embeds
from lib.embeds.error import EconErrors
from services.Currency import Currency
@ -26,7 +26,7 @@ async def cmd(ctx, user, amount):
author_balance = ctx_currency.balance
if author_balance < amount or author_balance <= 0:
return await ctx.respond(embed=economy_embeds.not_enough_cash())
return await ctx.respond(embed=EconErrors.insufficient_balance(ctx))
target_currency.add_balance(amount)
ctx_currency.take_balance(amount)

View file

@ -3,7 +3,7 @@ import discord
from services.Inventory import Inventory
async def cmd(ctx):
async def cmd(self, ctx):
inventory = Inventory(ctx.author.id)
inventory_dict = inventory.get_inventory()