|
|
|
import asyncio
|
|
|
|
import json
|
|
|
|
import random
|
|
|
|
|
|
|
|
from redbot.core import bank, commands
|
|
|
|
from redbot.core.commands import Cog
|
|
|
|
from redbot.core.data_manager import bundled_data_path
|
|
|
|
|
|
|
|
|
|
|
|
class RecyclingPlant(Cog):
|
|
|
|
"""Apply for a job at the recycling plant!"""
|
|
|
|
|
|
|
|
def __init__(self, bot):
|
|
|
|
super().__init__()
|
|
|
|
self.bot = bot
|
|
|
|
self.junk = None
|
|
|
|
|
|
|
|
async def red_delete_data_for_user(self, **kwargs):
|
|
|
|
"""Nothing to delete"""
|
|
|
|
return
|
|
|
|
|
|
|
|
def load_junk(self):
|
|
|
|
junk_path = bundled_data_path(self) / "junk.json"
|
|
|
|
with junk_path.open() as json_data:
|
|
|
|
self.junk = json.load(json_data)
|
|
|
|
|
|
|
|
@commands.command(aliases=["recycle"])
|
|
|
|
async def recyclingplant(self, ctx: commands.Context):
|
|
|
|
"""Apply for a job at the recycling plant!"""
|
|
|
|
if self.junk is None:
|
|
|
|
self.load_junk()
|
|
|
|
|
|
|
|
x = 0
|
|
|
|
reward = 0
|
|
|
|
timeoutcount = 0
|
|
|
|
await ctx.send(
|
|
|
|
"{0} has signed up for a shift at the Recycling Plant! Type ``exit`` to terminate it early.".format(
|
|
|
|
ctx.author.display_name
|
|
|
|
)
|
|
|
|
)
|
|
|
|
while x in range(0, 10):
|
|
|
|
used = random.choice(self.junk["can"])
|
|
|
|
if used["action"] == "trash":
|
|
|
|
opp = "recycle"
|
|
|
|
else:
|
|
|
|
opp = "trash"
|
|
|
|
await ctx.send(
|
|
|
|
"``{}``! Will {} ``trash`` it or ``recycle`` it?".format(
|
|
|
|
used["object"], ctx.author.display_name
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
def check(m):
|
|
|
|
return m.author == ctx.author and m.channel == ctx.channel
|
|
|
|
|
|
|
|
try:
|
|
|
|
answer = await self.bot.wait_for("message", timeout=20, check=check)
|
|
|
|
except asyncio.TimeoutError:
|
|
|
|
answer = None
|
|
|
|
|
|
|
|
if answer is None:
|
|
|
|
await ctx.send(
|
|
|
|
"``{}`` fell down the conveyor belt to be sorted again!".format(used["object"])
|
|
|
|
)
|
|
|
|
elif answer.content.lower().strip() == used["action"]:
|
|
|
|
await ctx.send(
|
|
|
|
"Congratulations! You put ``{}`` down the correct chute! (**+50**)".format(
|
|
|
|
used["object"]
|
|
|
|
)
|
|
|
|
)
|
|
|
|
reward += 50
|
|
|
|
x += 1
|
|
|
|
elif answer.content.lower().strip() == opp:
|
|
|
|
await ctx.send(
|
|
|
|
"{}, you little brute, you put it down the wrong chute! (**-50**)".format(
|
|
|
|
ctx.author.display_name
|
|
|
|
)
|
|
|
|
)
|
|
|
|
reward -= 50
|
|
|
|
elif answer.content.lower().strip() == "exit":
|
|
|
|
await ctx.send(
|
|
|
|
"{} has been relived of their duty.".format(ctx.author.display_name)
|
|
|
|
)
|
|
|
|
break
|
|
|
|
else:
|
|
|
|
await ctx.send(
|
|
|
|
"``{}`` fell down the conveyor belt to be sorted again!".format(used["object"])
|
|
|
|
)
|
|
|
|
else:
|
|
|
|
if reward > 0:
|
|
|
|
await bank.deposit_credits(ctx.author, reward)
|
|
|
|
await ctx.send(
|
|
|
|
"{} been given **{} {}s** for your services.".format(
|
|
|
|
ctx.author.display_name, reward, await bank.get_currency_name(ctx.guild)
|
|
|
|
)
|
|
|
|
)
|