import discord, asyncio, json from discord.ext import commands from discord_slash import cog_ext from utils import getParams params = getParams() class GamesCog(commands.Cog): def __init__(self,bot): """Runs game stuff.""" self.bot = bot # Checks user balance @cog_ext.cog_slash(**params["balance"]) async def balance(self, ctx): await self.bot.money.sendBalance(ctx) # Gives another user an amount of GwendoBucks @cog_ext.cog_slash(**params["give"]) async def give(self, ctx, user, amount): await self.bot.money.giveMoney(ctx, user, amount) # Invest GwendoBucks in the stock market @cog_ext.cog_slash(**params["invest"]) async def invest(self, ctx, parameters = "check"): await self.bot.games.invest.parseInvest(ctx, parameters) # Runs a game of trivia @cog_ext.cog_slash(**params["trivia"]) async def trivia(self, ctx, answer = ""): await self.bot.games.trivia.triviaParse(ctx, answer) class BlackjackCog(commands.Cog): def __init__(self,bot): """Runs game stuff.""" self.bot = bot # Starts a game of blackjack @cog_ext.cog_subcommand(**params["blackjackStart"]) async def blackjackStart(self, ctx): await ctx.defer() await self.bot.games.blackjack.parseBlackjack("", ctx) @cog_ext.cog_subcommand(**params["blackjackBet"]) async def blackjackBet(self, ctx, bet): await self.bot.games.blackjack.playerDrawHand(ctx, bet) @cog_ext.cog_subcommand(**params["blackjackStand"]) async def blackjackStand(self, ctx, hand = ""): await ctx.defer() await self.bot.games.blackjack.parseBlackjack(f"stand {hand}", ctx) @cog_ext.cog_subcommand(**params["blackjackHit"]) async def blackjackHit(self, ctx, hand = 0): await self.bot.games.blackjack.hit(ctx, hand) class ConnectFourCog(commands.Cog): def __init__(self,bot): """Runs game stuff.""" self.bot = bot # Start a game of connect four against a user @cog_ext.cog_subcommand(**params["connectFourStartUser"]) async def connectFourStartUser(self, ctx, user): await ctx.defer() await self.bot.games.gameLoops.connectFour(ctx, "start "+user.display_name) # Start a game of connect four against gwendolyn @cog_ext.cog_subcommand(**params["connectFourStartGwendolyn"]) async def connectFourStartGwendolyn(self, ctx, difficulty = 3): await ctx.defer() await self.bot.games.gameLoops.connectFour(ctx, "start "+str(difficulty)) # Stop the current game of connect four @cog_ext.cog_subcommand(**params["connectFourStop"]) async def connectFourStop(self, ctx): await self.bot.games.gameLoops.connectFour(ctx, "stop") # Place a piece in the current game of connect four @cog_ext.cog_subcommand(**params["connectFourPlace"]) async def connectFourPlace(self, ctx, column): await self.bot.games.gameLoops.connectFour(ctx, "place "+str(column)) class HangmanCog(commands.Cog): def __init__(self,bot): """Runs game stuff.""" self.bot = bot # Starts a game of Hangman @cog_ext.cog_subcommand(**params["hangmanStart"]) async def hangmanStart(self, ctx): await ctx.defer() await self.bot.games.gameLoops.runHangman(ctx.channel,"#"+str(ctx.author.id),"start", ctx) # Stops a game of Hangman @cog_ext.cog_subcommand(**params["hangmanStop"]) async def hangmanStop(self, ctx): await self.bot.games.gameLoops.runHangman(ctx.channel,"#"+str(ctx.author.id),"stop", ctx) class HexCog(commands.Cog): def __init__(self,bot): """Runs game stuff.""" self.bot = bot # Start a game of Hex against another user @cog_ext.cog_subcommand(**params["hexStartUser"]) async def hexStartUser(self, ctx, user): await ctx.defer() await self.bot.games.gameLoops.runHex(ctx, "start "+user.display_name, "#"+str(ctx.author.id)) # Start a game of Hex against Gwendolyn @cog_ext.cog_subcommand(**params["hexStartGwendolyn"]) async def hexStartGwendolyn(self, ctx, difficulty = 2): await ctx.defer() await self.bot.games.gameLoops.runHex(ctx, "start "+str(difficulty), "#"+str(ctx.author.id)) # Undo your last hex move @cog_ext.cog_subcommand(**params["hexUndo"]) async def hexUndo(self, ctx): await self.bot.games.gameLoops.runHex(ctx, "undo", "#"+str(ctx.author.id)) # Perform a hex swap @cog_ext.cog_subcommand(**params["hexSwap"]) async def hexSwap(self, ctx): await self.bot.games.gameLoops.runHex(ctx, "swap", "#"+str(ctx.author.id)) # Surrender the hex game @cog_ext.cog_subcommand(**params["hexSurrender"]) async def hexSurrender(self, ctx): await self.bot.games.gameLoops.runHex(ctx, "surrender", "#"+str(ctx.author.id)) # Place a piece in the hex game @cog_ext.cog_subcommand(**params["hexPlace"]) async def hexPlace(self, ctx, coordinates): await self.bot.games.gameLoops.runHex(ctx, "place "+coordinates, "#"+str(ctx.author.id)) def setup(bot): bot.add_cog(GamesCog(bot)) bot.add_cog(BlackjackCog(bot)) bot.add_cog(ConnectFourCog(bot)) bot.add_cog(HangmanCog(bot)) bot.add_cog(HexCog(bot))