mirror of
https://github.com/wlinator/luminara.git
synced 2024-10-02 22:23:13 +00:00
Consistency in error handling
This commit is contained in:
parent
9a0e522bac
commit
cc8ea460f2
9 changed files with 95 additions and 163 deletions
|
@ -34,11 +34,3 @@ def not_enough_cash():
|
||||||
description="Oops! Your current cash balance isn't sufficient to do that."
|
description="Oops! Your current cash balance isn't sufficient to do that."
|
||||||
)
|
)
|
||||||
return embed
|
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
|
|
||||||
|
|
123
lib/embeds.py
123
lib/embeds.py
|
@ -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
|
|
|
@ -2,11 +2,13 @@ import discord
|
||||||
from lib import formatter
|
from lib import formatter
|
||||||
|
|
||||||
question_icon = "https://i.imgur.com/8xccUws.png"
|
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(
|
embed = discord.Embed(
|
||||||
color=discord.Color.red()
|
color=discord.Color.red(),
|
||||||
|
description=f"**{ctx.author.name}** "
|
||||||
)
|
)
|
||||||
|
|
||||||
return embed
|
return embed
|
||||||
|
@ -18,8 +20,8 @@ class EconErrors:
|
||||||
"""
|
"""
|
||||||
See MissingRequiredArgument
|
See MissingRequiredArgument
|
||||||
"""
|
"""
|
||||||
embed = clean_error_embed()
|
embed = clean_error_embed(ctx)
|
||||||
embed.description = f"**{ctx.author.name}** please enter a bet."
|
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)}'",
|
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
|
||||||
icon_url=question_icon)
|
icon_url=question_icon)
|
||||||
return embed
|
return embed
|
||||||
|
@ -29,25 +31,60 @@ class EconErrors:
|
||||||
"""
|
"""
|
||||||
See BadArgument
|
See BadArgument
|
||||||
"""
|
"""
|
||||||
embed = clean_error_embed()
|
embed = clean_error_embed(ctx)
|
||||||
embed.description = f"**{ctx.author.name}** the bet you entered is invalid."
|
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)}'",
|
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
|
||||||
icon_url=question_icon)
|
icon_url=question_icon)
|
||||||
return embed
|
return embed
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def insufficient_balance(ctx):
|
def insufficient_balance(ctx):
|
||||||
embed = clean_error_embed()
|
embed = clean_error_embed(ctx)
|
||||||
embed.description = f"**{ctx.author.name}** you don't have enough cash."
|
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",
|
embed.set_footer(text=f"Do '{formatter.get_prefix(ctx)}balance' to see how much you can spend",
|
||||||
icon_url=question_icon)
|
icon_url=question_icon)
|
||||||
return embed
|
return embed
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def daily_already_claimed(ctx, unix_time):
|
def daily_already_claimed(ctx, unix_time):
|
||||||
embed = clean_error_embed()
|
embed = clean_error_embed(ctx)
|
||||||
embed.description = f"**{ctx.author.name}** already claimed. You can claim your reward again <t:{unix_time}:R>."
|
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)}'",
|
embed.set_footer(text=f"For more info do '{formatter.get_prefix(ctx)}help {formatter.get_invoked_name(ctx)}'",
|
||||||
icon_url=question_icon)
|
icon_url=question_icon)
|
||||||
|
|
||||||
return embed
|
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
|
||||||
|
|
|
@ -1,15 +1,23 @@
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
|
question_icon = "https://i.imgur.com/8xccUws.png"
|
||||||
exclam_icon = "https://i.imgur.com/vitwMUu.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:
|
class EconInfo:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def daily_reward_claimed(ctx, formatted_amount, streak):
|
def daily_reward_claimed(ctx, formatted_amount, streak):
|
||||||
embed = discord.Embed(
|
embed = clean_info_embed(ctx)
|
||||||
color=discord.Color.brand_green(),
|
embed.description += f"you claimed your reward of **${formatted_amount}**!"
|
||||||
description=f"**{ctx.author.name}** you claimed your reward of **${formatted_amount}**!"
|
|
||||||
)
|
|
||||||
|
|
||||||
if streak > 1:
|
if streak > 1:
|
||||||
embed.set_footer(text=f"You're on a streak of {streak} days",
|
embed.set_footer(text=f"You're on a streak of {streak} days",
|
||||||
|
|
|
@ -19,15 +19,6 @@ def welcome_message(member, template=None):
|
||||||
return embed
|
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):
|
def simple_question_5(question):
|
||||||
embed = discord.Embed(color=0xadcca6,
|
embed = discord.Embed(color=0xadcca6,
|
||||||
title=question)
|
title=question)
|
||||||
|
|
|
@ -89,11 +89,13 @@ class Economy(commands.Cog):
|
||||||
)
|
)
|
||||||
@commands.check(checks.channel)
|
@commands.check(checks.channel)
|
||||||
async def inventory(self, ctx):
|
async def inventory(self, ctx):
|
||||||
return await inventory.cmd(ctx)
|
return await inventory.cmd(self, ctx)
|
||||||
|
|
||||||
@commands.slash_command(
|
@bridge.bridge_command(
|
||||||
name="sell",
|
name="sell",
|
||||||
description="Sell items from your inventory.",
|
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
|
guild_only=True
|
||||||
)
|
)
|
||||||
@commands.check(checks.channel)
|
@commands.check(checks.channel)
|
||||||
|
@ -129,6 +131,31 @@ class Economy(commands.Cog):
|
||||||
async def stats(self, ctx, *, game: discord.Option(choices=["BlackJack", "Slots"])):
|
async def stats(self, ctx, *, game: discord.Option(choices=["BlackJack", "Slots"])):
|
||||||
return await stats.cmd(self, ctx, game)
|
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):
|
def setup(client):
|
||||||
client.add_cog(Economy(client))
|
client.add_cog(Economy(client))
|
||||||
|
|
|
@ -6,7 +6,7 @@ import pytz
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
from handlers.ItemHandler import ItemHandler
|
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 lib.embeds.error import EconErrors
|
||||||
from main import economy_config
|
from main import economy_config
|
||||||
from services.BlackJackStats import BlackJackStats
|
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
|
# check if the player already has an active blackjack going
|
||||||
if ctx.author.id in active_blackjack_games:
|
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
|
return
|
||||||
|
|
||||||
# Currency handler
|
# Currency handler
|
||||||
|
@ -161,7 +161,7 @@ async def cmd(ctx, bet: int):
|
||||||
stats.push()
|
stats.push()
|
||||||
|
|
||||||
elif status == 6:
|
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.take_balance(bet)
|
||||||
ctx_currency.push()
|
ctx_currency.push()
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ async def cmd(ctx, bet: int):
|
||||||
stats.push()
|
stats.push()
|
||||||
|
|
||||||
except Exception as e:
|
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)
|
logs.error("[CommandHandler] Something went wrong in the gambling command: ", e)
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import discord
|
import discord
|
||||||
|
|
||||||
from lib import economy_embeds
|
from lib.embeds.error import EconErrors
|
||||||
from services.Currency import Currency
|
from services.Currency import Currency
|
||||||
|
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ async def cmd(ctx, user, amount):
|
||||||
author_balance = ctx_currency.balance
|
author_balance = ctx_currency.balance
|
||||||
|
|
||||||
if author_balance < amount or author_balance <= 0:
|
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)
|
target_currency.add_balance(amount)
|
||||||
ctx_currency.take_balance(amount)
|
ctx_currency.take_balance(amount)
|
||||||
|
|
|
@ -3,7 +3,7 @@ import discord
|
||||||
from services.Inventory import Inventory
|
from services.Inventory import Inventory
|
||||||
|
|
||||||
|
|
||||||
async def cmd(ctx):
|
async def cmd(self, ctx):
|
||||||
inventory = Inventory(ctx.author.id)
|
inventory = Inventory(ctx.author.id)
|
||||||
inventory_dict = inventory.get_inventory()
|
inventory_dict = inventory.get_inventory()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue