mirror of
https://github.com/Cog-Creators/Red-DiscordBot.git
synced 2025-11-06 11:18:54 -05:00
Warn when new slotmin/slotmax value will cause slots to not work (#4583)
* Properly handle slotmin/slotmax rules * Use a variable to reduce config calls. No reason to process differently half way through a command anyways. * Update redbot/cogs/economy/economy.py * Add positive int converter for slotmin/slotmax * Option to allow bad mins and maxes. * Update economy.py Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
This commit is contained in:
parent
e519286f5c
commit
d22ea2dd11
22
redbot/cogs/economy/converters.py
Normal file
22
redbot/cogs/economy/converters.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
from typing import NewType, TYPE_CHECKING
|
||||||
|
|
||||||
|
from redbot.core.commands import BadArgument
|
||||||
|
from redbot.core.i18n import Translator
|
||||||
|
from redbot.core.utils.chat_formatting import inline
|
||||||
|
|
||||||
|
_ = Translator("Economy", __file__)
|
||||||
|
|
||||||
|
# Duplicate of redbot.cogs.cleanup.converters.PositiveInt
|
||||||
|
PositiveInt = NewType("PositiveInt", int)
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
positive_int = PositiveInt
|
||||||
|
else:
|
||||||
|
|
||||||
|
def positive_int(arg: str) -> int:
|
||||||
|
try:
|
||||||
|
ret = int(arg)
|
||||||
|
except ValueError:
|
||||||
|
raise BadArgument(_("{arg} is not an integer.").format(arg=inline(arg)))
|
||||||
|
if ret <= 0:
|
||||||
|
raise BadArgument(_("{arg} is not a positive integer.").format(arg=inline(arg)))
|
||||||
|
return ret
|
||||||
@ -11,12 +11,12 @@ import discord
|
|||||||
from redbot.cogs.bank import is_owner_if_bank_global
|
from redbot.cogs.bank import is_owner_if_bank_global
|
||||||
from redbot.cogs.mod.converters import RawUserIds
|
from redbot.cogs.mod.converters import RawUserIds
|
||||||
from redbot.core import Config, bank, commands, errors, checks
|
from redbot.core import Config, bank, commands, errors, checks
|
||||||
|
from redbot.core.bot import Red
|
||||||
from redbot.core.i18n import Translator, cog_i18n
|
from redbot.core.i18n import Translator, cog_i18n
|
||||||
from redbot.core.utils import AsyncIter
|
from redbot.core.utils import AsyncIter
|
||||||
from redbot.core.utils.chat_formatting import box, humanize_number
|
from redbot.core.utils.chat_formatting import box, humanize_number
|
||||||
from redbot.core.utils.menus import close_menu, menu, DEFAULT_CONTROLS
|
from redbot.core.utils.menus import close_menu, menu, DEFAULT_CONTROLS
|
||||||
|
from .converters import positive_int
|
||||||
from redbot.core.bot import Red
|
|
||||||
|
|
||||||
T_ = Translator("Economy", __file__)
|
T_ = Translator("Economy", __file__)
|
||||||
|
|
||||||
@ -834,7 +834,7 @@ class Economy(commands.Cog):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@economyset.command()
|
@economyset.command()
|
||||||
async def slotmin(self, ctx: commands.Context, bid: int):
|
async def slotmin(self, ctx: commands.Context, bid: positive_int):
|
||||||
"""Set the minimum slot machine bid.
|
"""Set the minimum slot machine bid.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@ -844,11 +844,20 @@ class Economy(commands.Cog):
|
|||||||
|
|
||||||
- `<bid>` The new minimum bid for using the slot machine. Default is 5.
|
- `<bid>` The new minimum bid for using the slot machine. Default is 5.
|
||||||
"""
|
"""
|
||||||
if bid < 1:
|
|
||||||
await ctx.send(_("Invalid min bid amount."))
|
|
||||||
return
|
|
||||||
guild = ctx.guild
|
guild = ctx.guild
|
||||||
if await bank.is_global():
|
is_global = await bank.is_global()
|
||||||
|
if is_global:
|
||||||
|
slot_max = await self.config.SLOT_MAX()
|
||||||
|
else:
|
||||||
|
slot_max = await self.config.guild(guild).SLOT_MAX()
|
||||||
|
if bid > slot_max:
|
||||||
|
await ctx.send(
|
||||||
|
_(
|
||||||
|
"Warning: Minimum bid is greater than the maximum bid ({max_bid}). "
|
||||||
|
"Slots will not work."
|
||||||
|
).format(max_bid=humanize_number(slot_max))
|
||||||
|
)
|
||||||
|
if is_global:
|
||||||
await self.config.SLOT_MIN.set(bid)
|
await self.config.SLOT_MIN.set(bid)
|
||||||
else:
|
else:
|
||||||
await self.config.guild(guild).SLOT_MIN.set(bid)
|
await self.config.guild(guild).SLOT_MIN.set(bid)
|
||||||
@ -860,7 +869,7 @@ class Economy(commands.Cog):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@economyset.command()
|
@economyset.command()
|
||||||
async def slotmax(self, ctx: commands.Context, bid: int):
|
async def slotmax(self, ctx: commands.Context, bid: positive_int):
|
||||||
"""Set the maximum slot machine bid.
|
"""Set the maximum slot machine bid.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@ -870,15 +879,21 @@ class Economy(commands.Cog):
|
|||||||
|
|
||||||
- `<bid>` The new maximum bid for using the slot machine. Default is 100.
|
- `<bid>` The new maximum bid for using the slot machine. Default is 100.
|
||||||
"""
|
"""
|
||||||
slot_min = await self.config.SLOT_MIN()
|
|
||||||
if bid < 1 or bid < slot_min:
|
|
||||||
await ctx.send(
|
|
||||||
_("Invalid maximum bid amount. Must be greater than the minimum amount.")
|
|
||||||
)
|
|
||||||
return
|
|
||||||
guild = ctx.guild
|
guild = ctx.guild
|
||||||
|
is_global = await bank.is_global()
|
||||||
|
if is_global:
|
||||||
|
slot_min = await self.config.SLOT_MIN()
|
||||||
|
else:
|
||||||
|
slot_min = await self.config.guild(guild).SLOT_MIN()
|
||||||
|
if bid < slot_min:
|
||||||
|
await ctx.send(
|
||||||
|
_(
|
||||||
|
"Warning: Maximum bid is less than the minimum bid ({min_bid}). "
|
||||||
|
"Slots will not work."
|
||||||
|
).format(min_bid=humanize_number(slot_min))
|
||||||
|
)
|
||||||
credits_name = await bank.get_currency_name(guild)
|
credits_name = await bank.get_currency_name(guild)
|
||||||
if await bank.is_global():
|
if is_global:
|
||||||
await self.config.SLOT_MAX.set(bid)
|
await self.config.SLOT_MAX.set(bid)
|
||||||
else:
|
else:
|
||||||
await self.config.guild(guild).SLOT_MAX.set(bid)
|
await self.config.guild(guild).SLOT_MAX.set(bid)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user