You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Fox-V3/recyclingplant/recyclingplant.py

68 lines
2.8 KiB

import asyncio
import json
import random
from redbot.core import bank
from redbot.core import commands
from redbot.core.data_manager import cog_data_path
class RecyclingPlant:
"""Apply for a job at the recycling plant!"""
def __init__(self, bot):
self.bot = bot
self.path = str(cog_data_path(self)).replace('\\', '/')
self.junk_path = self.path + "/bundled_data/junk.json"
with open(self.junk_path) 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!"""
x = 0
reward = 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=120, 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 = 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 = 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:
bank.deposit_credits(ctx.author, reward)
await ctx.send(
'{} been given **{} {}s** for your services.'.format(ctx.author.display_name, reward,
bank.get_currency_name(ctx.guild)))