[V3 Everything] Package bot and write setup scripts (#964)

Ya'll are gonna hate me.

* Initial modifications

* Add initial setup.py

* working setup py help

* Modify setup file to package stuff

* Move a bunch of shit and fix imports

* Fix or skip tests

* Must add init files for find_packages to work

* Move main to scripts folder and rename

* Add shebangs

* Copy over translation files

* WORKING PIP INSTALL

* add dependency information

* Hardcoded version for now, will need to figure out a better way to do this

* OKAY ITS FINALLY FUCKING WORKING

* Add this guy

* Fix stuff

* Change readme to rst

* Remove double sentry opt in

* Oopsie

* Fix this thing

* Aaaand fix test

* Aaaand fix test

* Fix core cog importing and default cog install path

* Adjust readme

* change instance name from optional to required

* Ayyy let's do more dependency injection
This commit is contained in:
Will
2017-09-08 23:14:32 -04:00
committed by GitHub
parent 6b1fc786ee
commit d69fd63da7
85 changed files with 451 additions and 255 deletions

View File

@@ -0,0 +1,6 @@
from redbot.core.bot import Red
from .economy import Economy
def setup(bot: Red):
bot.add_cog(Economy(bot))

View File

@@ -0,0 +1,533 @@
import calendar
import logging
import random
from collections import defaultdict, deque
from enum import Enum
import discord
from redbot.cogs.bank import check_global_setting_guildowner, check_global_setting_admin
from redbot.core import Config, bank
from redbot.core.i18n import CogI18n
from redbot.core.utils.chat_formatting import pagify, box
from discord.ext import commands
from redbot.core.bot import Red
_ = CogI18n("Economy", __file__)
logger = logging.getLogger("red.economy")
NUM_ENC = "\N{COMBINING ENCLOSING KEYCAP}"
class SMReel(Enum):
cherries = "\N{CHERRIES}"
cookie = "\N{COOKIE}"
two = "\N{DIGIT TWO}" + NUM_ENC
flc = "\N{FOUR LEAF CLOVER}"
cyclone = "\N{CYCLONE}"
sunflower = "\N{SUNFLOWER}"
six = "\N{DIGIT SIX}" + NUM_ENC
mushroom = "\N{MUSHROOM}"
heart = "\N{HEAVY BLACK HEART}"
snowflake = "\N{SNOWFLAKE}"
PAYOUTS = {
(SMReel.two, SMReel.two, SMReel.six): {
"payout": lambda x: x * 2500 + x,
"phrase": _("JACKPOT! 226! Your bid has been multiplied * 2500!")
},
(SMReel.flc, SMReel.flc, SMReel.flc): {
"payout": lambda x: x + 1000,
"phrase": _("4LC! +1000!")
},
(SMReel.cherries, SMReel.cherries, SMReel.cherries): {
"payout": lambda x: x + 800,
"phrase": _("Three cherries! +800!")
},
(SMReel.two, SMReel.six): {
"payout": lambda x: x * 4 + x,
"phrase": _("2 6! Your bid has been multiplied * 4!")
},
(SMReel.cherries, SMReel.cherries): {
"payout": lambda x: x * 3 + x,
"phrase": _("Two cherries! Your bid has been multiplied * 3!")
},
"3 symbols": {
"payout": lambda x: x + 500,
"phrase": _("Three symbols! +500!")
},
"2 symbols": {
"payout": lambda x: x * 2 + x,
"phrase": _("Two consecutive symbols! Your bid has been multiplied * 2!")
},
}
SLOT_PAYOUTS_MSG = _("Slot machine payouts:\n"
"{two.value} {two.value} {six.value} Bet * 2500\n"
"{flc.value} {flc.value} {flc.value} +1000\n"
"{cherries.value} {cherries.value} {cherries.value} +800\n"
"{two.value} {six.value} Bet * 4\n"
"{cherries.value} {cherries.value} Bet * 3\n\n"
"Three symbols: +500\n"
"Two symbols: Bet * 2").format(**SMReel.__dict__)
def guild_only_check():
async def pred(ctx: commands.Context):
if await bank.is_global():
return True
elif not await bank.is_global() and ctx.guild is not None:
return True
else:
return False
return commands.check(pred)
class SetParser:
def __init__(self, argument):
allowed = ("+", "-")
self.sum = int(argument)
if argument and argument[0] in allowed:
if self.sum < 0:
self.operation = "withdraw"
elif self.sum > 0:
self.operation = "deposit"
else:
raise RuntimeError
self.sum = abs(self.sum)
elif argument.isdigit():
self.operation = "set"
else:
raise RuntimeError
class Economy:
"""Economy
Get rich and have fun with imaginary currency!"""
default_guild_settings = {
"PAYDAY_TIME": 300,
"PAYDAY_CREDITS": 120,
"SLOT_MIN": 5,
"SLOT_MAX": 100,
"SLOT_TIME": 0,
"REGISTER_CREDITS": 0
}
default_global_settings = default_guild_settings
default_member_settings = {
"next_payday": 0,
"last_slot": 0
}
default_user_settings = default_member_settings
def __init__(self, bot: Red):
self.bot = bot
self.file_path = "data/economy/settings.json"
self.config = Config.get_conf(self, 1256844281)
self.config.register_guild(**self.default_guild_settings)
self.config.register_global(**self.default_global_settings)
self.config.register_member(**self.default_member_settings)
self.config.register_user(**self.default_user_settings)
self.slot_register = defaultdict(dict)
@commands.group(name="bank")
async def _bank(self, ctx: commands.Context):
"""Bank operations"""
if ctx.invoked_subcommand is None:
await self.bot.send_cmd_help(ctx)
@_bank.command()
async def balance(self, ctx: commands.Context, user: discord.Member = None):
"""Shows balance of user.
Defaults to yours."""
if user is None:
user = ctx.author
bal = await bank.get_balance(user)
currency = await bank.get_currency_name(ctx.guild)
await ctx.send(_("{}'s balance is {} {}").format(
user.display_name, bal, currency))
@_bank.command()
async def transfer(self, ctx: commands.Context, to: discord.Member, amount: int):
"""Transfer currency to other users"""
from_ = ctx.author
currency = await bank.get_currency_name(ctx.guild)
try:
await bank.transfer_credits(from_, to, amount)
except ValueError as e:
await ctx.send(str(e))
await ctx.send(_("{} transferred {} {} to {}").format(
from_.display_name, amount, currency, to.display_name
))
@_bank.command(name="set")
@check_global_setting_admin()
async def _set(self, ctx: commands.Context, to: discord.Member, creds: SetParser):
"""Sets balance of user's bank account. See help for more operations
Passing positive and negative values will add/remove currency instead
Examples:
bank set @Twentysix 26 - Sets balance to 26
bank set @Twentysix +2 - Increases balance by 2
bank set @Twentysix -6 - Decreases balance by 6"""
author = ctx.author
currency = await bank.get_currency_name(ctx.guild)
if creds.operation == "deposit":
await bank.deposit_credits(to, creds.sum)
await ctx.send(_("{} added {} {} to {}'s account.").format(
author.display_name, creds.sum, currency, to.display_name
))
elif creds.operation == "withdraw":
await bank.withdraw_credits(to, creds.sum)
await ctx.send(_("{} removed {} {} from {}'s account.").format(
author.display_name, creds.sum, currency, to.display_name
))
else:
await bank.set_balance(to, creds.sum)
await ctx.send(_("{} set {}'s account to {} {}.").format(
author.display_name, to.display_name, creds.sum, currency
))
@_bank.command()
@guild_only_check()
@check_global_setting_guildowner()
async def reset(self, ctx, confirmation: bool = False):
"""Deletes all guild's bank accounts"""
if confirmation is False:
await ctx.send(
_("This will delete all bank accounts for {}.\nIf you're sure, type "
"{}bank reset yes").format(
self.bot.user.name if await bank.is_global() else "this guild",
ctx.prefix
)
)
else:
if await bank.is_global():
# Bank being global means that the check would cause only
# the owner and any co-owners to be able to run the command
# so if we're in the function, it's safe to assume that the
# author is authorized to use owner-only commands
user = ctx.author
else:
user = ctx.guild.owner
success = await bank.wipe_bank(user)
if success:
await ctx.send(_("All bank accounts of this guild have been "
"deleted."))
@commands.command()
@guild_only_check()
async def payday(self, ctx: commands.Context):
"""Get some free currency"""
author = ctx.author
guild = ctx.guild
cur_time = calendar.timegm(ctx.message.created_at.utctimetuple())
credits_name = await bank.get_currency_name(ctx.guild)
if await bank.is_global():
next_payday = await self.config.user(author).next_payday()
if cur_time >= next_payday:
await bank.deposit_credits(author, await self.config.PAYDAY_CREDITS())
next_payday = cur_time + await self.config.PAYDAY_TIME()
await self.config.user(author).next_payday.set(next_payday)
await ctx.send(
_("{} Here, take some {}. Enjoy! (+{}"
" {}!)").format(
author.mention, credits_name,
str(await self.config.PAYDAY_CREDITS()),
credits_name
)
)
else:
dtime = self.display_time(next_payday - cur_time)
await ctx.send(
_("{} Too soon. For your next payday you have to"
" wait {}.").format(author.mention, dtime)
)
else:
next_payday = await self.config.member(author).next_payday()
if cur_time >= next_payday:
await bank.deposit_credits(author, await self.config.guild(guild).PAYDAY_CREDITS())
next_payday = cur_time + await self.config.guild(guild).PAYDAY_TIME()
await self.config.member(author).next_payday.set(next_payday)
await ctx.send(
_("{} Here, take some {}. Enjoy! (+{}"
" {}!)").format(
author.mention, credits_name,
str(await self.config.guild(guild).PAYDAY_CREDITS()),
credits_name))
else:
dtime = self.display_time(next_payday - cur_time)
await ctx.send(
_("{} Too soon. For your next payday you have to"
" wait {}.").format(author.mention, dtime))
@commands.command()
@guild_only_check()
async def leaderboard(self, ctx: commands.Context, top: int = 10):
"""Prints out the leaderboard
Defaults to top 10"""
# Originally coded by Airenkun - edited by irdumb, rewritten by Palm__ for v3
guild = ctx.guild
if top < 1:
top = 10
if bank.is_global():
bank_sorted = sorted(await bank.get_global_accounts(ctx.author),
key=lambda x: x.balance, reverse=True)
else:
bank_sorted = sorted(await bank.get_guild_accounts(guild),
key=lambda x: x.balance, reverse=True)
if len(bank_sorted) < top:
top = len(bank_sorted)
topten = bank_sorted[:top]
highscore = ""
place = 1
for acc in topten:
dname = str(acc.name)
if len(dname) >= 23 - len(str(acc.balance)):
dname = dname[:(23 - len(str(acc.balance))) - 3]
dname += "... "
highscore += str(place).ljust(len(str(top)) + 1)
highscore += dname.ljust(23 - len(str(acc.balance)))
highscore += str(acc.balance) + "\n"
place += 1
if highscore != "":
for page in pagify(highscore, shorten_by=12):
await ctx.send(box(page, lang="py"))
else:
await ctx.send(_("There are no accounts in the bank."))
@commands.command()
@guild_only_check()
async def payouts(self, ctx: commands.Context):
"""Shows slot machine payouts"""
await ctx.author.send(SLOT_PAYOUTS_MSG)
@commands.command()
@guild_only_check()
async def slot(self, ctx: commands.Context, bid: int):
"""Play the slot machine"""
author = ctx.author
guild = ctx.guild
channel = ctx.channel
if await bank.is_global():
valid_bid = await self.config.SLOT_MIN() <= bid <= await self.config.SLOT_MAX()
slot_time = await self.config.SLOT_TIME()
last_slot = await self.config.user(author).last_slot()
else:
valid_bid = await self.config.guild(guild).SLOT_MIN() <= bid <= await self.config.guild(guild).SLOT_MAX()
slot_time = await self.config.guild(guild).SLOT_TIME()
last_slot = await self.config.member(author).last_slot()
now = calendar.timegm(ctx.message.created_at.utctimetuple())
if (now - last_slot) < slot_time:
await ctx.send(_("You're on cooldown, try again in a bit."))
return
if not valid_bid:
await ctx.send(_("That's an invalid bid amount, sorry :/"))
return
if not await bank.can_spend(author, bid):
await ctx.send(_("You ain't got enough money, friend."))
return
if await bank.is_global():
await self.config.user(author).last_slot.set(now)
else:
await self.config.member(author).last_slot.set(now)
await self.slot_machine(author, channel, bid)
async def slot_machine(self, author, channel, bid):
default_reel = deque(SMReel)
reels = []
for i in range(3):
default_reel.rotate(random.randint(-999, 999)) # weeeeee
new_reel = deque(default_reel, maxlen=3) # we need only 3 symbols
reels.append(new_reel) # for each reel
rows = ((reels[0][0], reels[1][0], reels[2][0]),
(reels[0][1], reels[1][1], reels[2][1]),
(reels[0][2], reels[1][2], reels[2][2]))
slot = "~~\n~~" # Mobile friendly
for i, row in enumerate(rows): # Let's build the slot to show
sign = " "
if i == 1:
sign = ">"
slot += "{}{} {} {}\n".format(sign, *[c.value for c in row])
payout = PAYOUTS.get(rows[1])
if not payout:
# Checks for two-consecutive-symbols special rewards
payout = PAYOUTS.get((rows[1][0], rows[1][1]),
PAYOUTS.get((rows[1][1], rows[1][2])))
if not payout:
# Still nothing. Let's check for 3 generic same symbols
# or 2 consecutive symbols
has_three = rows[1][0] == rows[1][1] == rows[1][2]
has_two = (rows[1][0] == rows[1][1]) or (rows[1][1] == rows[1][2])
if has_three:
payout = PAYOUTS["3 symbols"]
elif has_two:
payout = PAYOUTS["2 symbols"]
if payout:
then = await bank.get_balance(author)
pay = payout["payout"](bid)
now = then - bid + pay
await bank.set_balance(author, now)
await channel.send(_("{}\n{} {}\n\nYour bid: {}\n{}{}!"
"").format(slot, author.mention,
payout["phrase"], bid, then, now))
else:
then = await bank.get_balance(author)
await bank.withdraw_credits(author, bid)
now = then - bid
await channel.send(_("{}\n{} Nothing!\nYour bid: {}\n{}{}!"
"").format(slot, author.mention, bid, then, now))
@commands.group()
@guild_only_check()
@check_global_setting_admin()
async def economyset(self, ctx: commands.Context):
"""Changes economy module settings"""
guild = ctx.guild
if ctx.invoked_subcommand is None:
await self.bot.send_cmd_help(ctx)
if await bank.is_global():
slot_min = await self.config.SLOT_MIN()
slot_max = await self.config.SLOT_MAX()
slot_time = await self.config.SLOT_TIME()
payday_time = await self.config.PAYDAY_TIME()
payday_amount = await self.config.PAYDAY_CREDITS()
else:
slot_min = await self.config.guild(guild).SLOT_MIN()
slot_max = await self.config.guild(guild).SLOT_MAX()
slot_time = await self.config.guild(guild).SLOT_TIME()
payday_time = await self.config.guild(guild).PAYDAY_TIME()
payday_amount = await self.config.guild(guild).PAYDAY_CREDITS()
register_amount = await bank.get_default_balance(guild)
msg = box(
_("Minimum slot bid: {}\n"
"Maximum slot bid: {}\n"
"Slot cooldown: {}\n"
"Payday amount: {}\n"
"Payday cooldown: {}\n"
"Amount given at account registration: {}"
"").format(
slot_min, slot_max, slot_time,
payday_amount, payday_time, register_amount
),
_("Current Economy settings:")
)
await ctx.send(msg)
@economyset.command()
async def slotmin(self, ctx: commands.Context, bid: int):
"""Minimum slot machine bid"""
if bid < 1:
await ctx.send(_('Invalid min bid amount.'))
return
guild = ctx.guild
if await bank.is_global():
await self.config.SLOT_MIN.set(bid)
else:
await self.config.guild(guild).SLOT_MIN.set(bid)
credits_name = await bank.get_currency_name(guild)
await ctx.send(_("Minimum bid is now {} {}.").format(bid, credits_name))
@economyset.command()
async def slotmax(self, ctx: commands.Context, bid: int):
"""Maximum slot machine bid"""
slot_min = await self.config.SLOT_MIN()
if bid < 1 or bid < slot_min:
await ctx.send(_('Invalid slotmax bid amount. Must be greater'
' than slotmin.'))
return
guild = ctx.guild
credits_name = await bank.get_currency_name(guild)
if await bank.is_global():
await self.config.SLOT_MAX.set(bid)
else:
await self.config.guild(guild).SLOT_MAX.set(bid)
await ctx.send(_("Maximum bid is now {} {}.").format(bid, credits_name))
@economyset.command()
async def slottime(self, ctx: commands.Context, seconds: int):
"""Seconds between each slots use"""
guild = ctx.guild
if await bank.is_global():
await self.config.SLOT_TIME.set(seconds)
else:
await self.config.guild(guild).SLOT_TIME.set(seconds)
await ctx.send(_("Cooldown is now {} seconds.").format(seconds))
@economyset.command()
async def paydaytime(self, ctx: commands.Context, seconds: int):
"""Seconds between each payday"""
guild = ctx.guild
if await bank.is_global():
await self.config.PAYDAY_TIME.set(seconds)
else:
await self.config.guild(guild).PAYDAY_TIME.set(seconds)
await ctx.send(_("Value modified. At least {} seconds must pass "
"between each payday.").format(seconds))
@economyset.command()
async def paydayamount(self, ctx: commands.Context, creds: int):
"""Amount earned each payday"""
guild = ctx.guild
credits_name = await bank.get_currency_name(guild)
if creds <= 0:
await ctx.send(_("Har har so funny."))
return
if await bank.is_global():
await self.config.PAYDAY_CREDITS.set(creds)
else:
await self.config.guild(guild).PAYDAY_CREDITS.set(creds)
await ctx.send(_("Every payday will now give {} {}."
"").format(creds, credits_name))
@economyset.command()
async def registeramount(self, ctx: commands.Context, creds: int):
"""Amount given on registering an account"""
guild = ctx.guild
if creds < 0:
creds = 0
credits_name = await bank.get_currency_name(guild)
await bank.set_default_balance(creds, guild)
await ctx.send(_("Registering an account will now give {} {}."
"").format(creds, credits_name))
# What would I ever do without stackoverflow?
def display_time(self, seconds, granularity=2):
intervals = ( # Source: http://stackoverflow.com/a/24542445
(_('weeks'), 604800), # 60 * 60 * 24 * 7
(_('days'), 86400), # 60 * 60 * 24
(_('hours'), 3600), # 60 * 60
(_('minutes'), 60),
(_('seconds'), 1),
)
result = []
for name, count in intervals:
value = seconds // count
if value:
seconds -= value * count
if value == 1:
name = name.rstrip('s')
result.append("{} {}".format(value, name))
return ', '.join(result[:granularity])

View File

@@ -0,0 +1,225 @@
# Copyright (C) 2017 Red-DiscordBot
# UltimatePancake <pier.gaetani@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2017-08-26 17:40+EDT\n"
"PO-Revision-Date: 2017-08-26 20:48-0600\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: pygettext.py 1.5\n"
"X-Generator: Poedit 2.0.3\n"
"Last-Translator: UltimatePancake <pier.gaetani@gmail.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: es\n"
#: ../economy.py:38
msgid "JACKPOT! 226! Your bid has been multiplied * 2500!"
msgstr "¡PREMIO MAYOR! ¡226! ¡Apuesta multiplicada por 2500!"
#: ../economy.py:42
msgid "4LC! +1000!"
msgstr "¡4 tréboles! ¡+1000!"
#: ../economy.py:46
msgid "Three cherries! +800!"
msgstr "¡Triple cereza! ¡+800!"
#: ../economy.py:50
msgid "2 6! Your bid has been multiplied * 4!"
msgstr "¡2 6! ¡Apuesta multiplicada por 4!"
#: ../economy.py:54
msgid "Two cherries! Your bid has been multiplied * 3!"
msgstr "¡Doble cereza! ¡Apuesta multiplicada por 3!"
#: ../economy.py:58
msgid "Three symbols! +500!"
msgstr "¡Tres símbolos! ¡+500!"
#: ../economy.py:62
msgid "Two consecutive symbols! Your bid has been multiplied * 2!"
msgstr "¡Dos símbolos consecutivos! ¡Apuesta multiplicada por 2!"
#: ../economy.py:66
msgid ""
"Slot machine payouts:\n"
"{two.value} {two.value} {six.value} Bet * 2500\n"
"{flc.value} {flc.value} {flc.value} +1000\n"
"{cherries.value} {cherries.value} {cherries.value} +800\n"
"{two.value} {six.value} Bet * 4\n"
"{cherries.value} {cherries.value} Bet * 3\n"
"\n"
"Three symbols: +500\n"
"Two symbols: Bet * 2"
msgstr ""
"Premios de tragaperras:\n"
"{two.value} {two.value} {six.value} Apuesta * 2500\n"
"{flc.value} {flc.value} {flc.value} +1000\n"
"{cherries.value} {cherries.value} {cherries.value} +800\n"
"{two.value} {six.value} Apuesta * 4\n"
"{cherries.value} {cherries.value} Apuesta * 3\n"
"\n"
"Tres símbolos: +500\n"
"Dos símbolos: Apuesta * 2"
#: ../economy.py:155
msgid "{}'s balance is {} {}"
msgstr "El balance de {} es {} {}"
#: ../economy.py:169
msgid "{} transferred {} {} to {}"
msgstr "{} ha transferido {} {} a {}"
#: ../economy.py:189
msgid "{} added {} {} to {}'s account."
msgstr "{} agregó {} {} a la cuenta de {}."
#: ../economy.py:194
msgid "{} removed {} {} from {}'s account."
msgstr "{} quitó {} {} de la cuenta de {}."
#: ../economy.py:199
msgid "{} set {}'s account to {} {}."
msgstr "{} puso la cuenta de {} a {} {}."
#: ../economy.py:210
msgid ""
"This will delete all bank accounts for {}.\n"
"If you're sure, type {}bank reset yes"
msgstr ""
"Esto eliminará todas las cuentas bancarias de {}.\n"
"Si estás seguro, escribe {}bank reset yes"
#: ../economy.py:227
msgid "All bank accounts of this guild have been deleted."
msgstr "Todas las cuentas bancarias de este gremio han sido eliminadas."
#: ../economy.py:246 ../economy.py:266
msgid "{} Here, take some {}. Enjoy! (+{} {}!)"
msgstr "{}, toma, unos {}. Difruta! (+{} {}!)"
#: ../economy.py:256 ../economy.py:274
msgid "{} Too soon. For your next payday you have to wait {}."
msgstr "{} Muy pronto. Tu siguiente dia de pago es en {}."
#: ../economy.py:311
msgid "There are no accounts in the bank."
msgstr "No existen cuentas en el banco."
#: ../economy.py:337
msgid "You're on cooldown, try again in a bit."
msgstr "Estás en tiempo de espera, intenta de nuevo más tarde."
#: ../economy.py:340
msgid "That's an invalid bid amount, sorry :/"
msgstr "Cantidad de apuesta inválida, lo siento :/"
#: ../economy.py:343
msgid "You ain't got enough money, friend."
msgstr "No tienes suficiente dinero, amigo."
# dafuq is {} → {}!
#: ../economy.py:389
msgid ""
"{}\n"
"{} {}\n"
"\n"
"Your bid: {}\n"
"{} → {}!"
msgstr ""
"{}\n"
"{} {}\n"
"Tu apuesta: {}\n"
"{} → {}!"
#: ../economy.py:396
msgid ""
"{}\n"
"{} Nothing!\n"
"Your bid: {}\n"
"{} → {}!"
msgstr ""
"{}\n"
"{} Nada!\n"
"Tu apuesta: {}\n"
"{} → {}!"
#: ../economy.py:421
msgid ""
"Minimum slot bid: {}\n"
"Maximum slot bid: {}\n"
"Slot cooldown: {}\n"
"Payday amount: {}\n"
"Payday cooldown: {}\n"
"Amount given at account registration: {}"
msgstr ""
"Apuesta mínima para tragaperras: {}\n"
"Apuesta máxima para tragaperras: {}\n"
"Tiempo de espera para tragaperras: {}\n"
"Cantidad para día de pago: {}\n"
"Tiempo de espera para día de pago: {}\n"
"Cantidad al registrar: {}"
#: ../economy.py:431
msgid "Current Economy settings:"
msgstr "Configuración de economía actual:"
#: ../economy.py:439
msgid "Invalid min bid amount."
msgstr "Cantidad mínima de apuesta inválida."
#: ../economy.py:447
msgid "Minimum bid is now {} {}."
msgstr "Apuesta mínima es ahora {} {}."
#: ../economy.py:454
msgid "Invalid slotmax bid amount. Must be greater than slotmin."
msgstr "Cantidad de apuesta máxima para tragaperras inválido. Debe ser mayor al mínimo."
#: ../economy.py:463
msgid "Maximum bid is now {} {}."
msgstr "Apuesta máxima es ahora {} {}."
#: ../economy.py:473
msgid "Cooldown is now {} seconds."
msgstr "Tiempo de espera es ahora {} segundos."
#: ../economy.py:483
msgid "Value modified. At least {} seconds must pass between each payday."
msgstr "Valor modificado. Al menos {} segundos deben de pasar entre cada día de pago."
#: ../economy.py:492
msgid "Har har so funny."
msgstr "Muy gracioso..."
#: ../economy.py:498
msgid "Every payday will now give {} {}."
msgstr "Cada día de pago ahora dará {} {}."
#: ../economy.py:509
msgid "Registering an account will now give {} {}."
msgstr "Registrar una cuenta bancaria ahora dará {} {}."
#: ../economy.py:515
msgid "weeks"
msgstr "semanas"
#: ../economy.py:516
msgid "days"
msgstr "días"
#: ../economy.py:517
msgid "hours"
msgstr "horas"
#: ../economy.py:518
msgid "minutes"
msgstr "minutos"
#: ../economy.py:519
msgid "seconds"
msgstr "segundos"

View File

@@ -0,0 +1,199 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2017-08-26 17:40+EDT\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
"Generated-By: pygettext.py 1.5\n"
#: ../economy.py:38
msgid "JACKPOT! 226! Your bid has been multiplied * 2500!"
msgstr ""
#: ../economy.py:42
msgid "4LC! +1000!"
msgstr ""
#: ../economy.py:46
msgid "Three cherries! +800!"
msgstr ""
#: ../economy.py:50
msgid "2 6! Your bid has been multiplied * 4!"
msgstr ""
#: ../economy.py:54
msgid "Two cherries! Your bid has been multiplied * 3!"
msgstr ""
#: ../economy.py:58
msgid "Three symbols! +500!"
msgstr ""
#: ../economy.py:62
msgid "Two consecutive symbols! Your bid has been multiplied * 2!"
msgstr ""
#: ../economy.py:66
msgid ""
"Slot machine payouts:\n"
"{two.value} {two.value} {six.value} Bet * 2500\n"
"{flc.value} {flc.value} {flc.value} +1000\n"
"{cherries.value} {cherries.value} {cherries.value} +800\n"
"{two.value} {six.value} Bet * 4\n"
"{cherries.value} {cherries.value} Bet * 3\n"
"\n"
"Three symbols: +500\n"
"Two symbols: Bet * 2"
msgstr ""
#: ../economy.py:155
msgid "{}'s balance is {} {}"
msgstr ""
#: ../economy.py:169
msgid "{} transferred {} {} to {}"
msgstr ""
#: ../economy.py:189
msgid "{} added {} {} to {}'s account."
msgstr ""
#: ../economy.py:194
msgid "{} removed {} {} from {}'s account."
msgstr ""
#: ../economy.py:199
msgid "{} set {}'s account to {} {}."
msgstr ""
#: ../economy.py:210
msgid ""
"This will delete all bank accounts for {}.\n"
"If you're sure, type {}bank reset yes"
msgstr ""
#: ../economy.py:227
msgid "All bank accounts of this guild have been deleted."
msgstr ""
#: ../economy.py:246 ../economy.py:266
msgid "{} Here, take some {}. Enjoy! (+{} {}!)"
msgstr ""
#: ../economy.py:256 ../economy.py:274
msgid "{} Too soon. For your next payday you have to wait {}."
msgstr ""
#: ../economy.py:311
msgid "There are no accounts in the bank."
msgstr ""
#: ../economy.py:337
msgid "You're on cooldown, try again in a bit."
msgstr ""
#: ../economy.py:340
msgid "That's an invalid bid amount, sorry :/"
msgstr ""
#: ../economy.py:343
msgid "You ain't got enough money, friend."
msgstr ""
#: ../economy.py:389
msgid ""
"{}\n"
"{} {}\n"
"\n"
"Your bid: {}\n"
"{} → {}!"
msgstr ""
#: ../economy.py:396
msgid ""
"{}\n"
"{} Nothing!\n"
"Your bid: {}\n"
"{} → {}!"
msgstr ""
#: ../economy.py:421
msgid ""
"Minimum slot bid: {}\n"
"Maximum slot bid: {}\n"
"Slot cooldown: {}\n"
"Payday amount: {}\n"
"Payday cooldown: {}\n"
"Amount given at account registration: {}"
msgstr ""
#: ../economy.py:431
msgid "Current Economy settings:"
msgstr ""
#: ../economy.py:439
msgid "Invalid min bid amount."
msgstr ""
#: ../economy.py:447
msgid "Minimum bid is now {} {}."
msgstr ""
#: ../economy.py:454
msgid "Invalid slotmax bid amount. Must be greater than slotmin."
msgstr ""
#: ../economy.py:463
msgid "Maximum bid is now {} {}."
msgstr ""
#: ../economy.py:473
msgid "Cooldown is now {} seconds."
msgstr ""
#: ../economy.py:483
msgid "Value modified. At least {} seconds must pass between each payday."
msgstr ""
#: ../economy.py:492
msgid "Har har so funny."
msgstr ""
#: ../economy.py:498
msgid "Every payday will now give {} {}."
msgstr ""
#: ../economy.py:509
msgid "Registering an account will now give {} {}."
msgstr ""
#: ../economy.py:515
msgid "weeks"
msgstr ""
#: ../economy.py:516
msgid "days"
msgstr ""
#: ../economy.py:517
msgid "hours"
msgstr ""
#: ../economy.py:518
msgid "minutes"
msgstr ""
#: ../economy.py:519
msgid "seconds"
msgstr ""