117 lines
4.9 KiB
Python
117 lines
4.9 KiB
Python
import discord, asyncio
|
|
from discord.ext import commands
|
|
|
|
from funcs import logThis
|
|
|
|
class GamesCog(commands.Cog):
|
|
|
|
def __init__(self,bot):
|
|
"""Runs game stuff."""
|
|
self.bot = bot
|
|
|
|
# Checks user balance
|
|
@commands.command(aliases = ["b"])
|
|
async def balance(self, ctx):
|
|
response = self.bot.money.checkBalance("#"+str(ctx.message.author.id))
|
|
if response == 1:
|
|
new_message = ctx.message.author.display_name + " has " + str(response) + " GwendoBuck"
|
|
else:
|
|
new_message = ctx.message.author.display_name + " has " + str(response) + " GwendoBucks"
|
|
await ctx.send(new_message)
|
|
|
|
# Gives another user an amount of GwendoBucks
|
|
@commands.command()
|
|
async def give(self, ctx, *, content):
|
|
commands = content.split(" ")
|
|
amount = int(commands[-1])
|
|
username = " ".join(commands[:-1])
|
|
if self.bot.funcs.getID(username) == None:
|
|
async for member in ctx.guild.fetch_members(limit=None):
|
|
if member.display_name.lower() == username.lower():
|
|
username = member.display_name
|
|
userID = "#" + str(member.id)
|
|
self.bot.database["users"].insert_one({"_id":userID,"user name":username,"money":0})
|
|
response = self.bot.money.giveMoney("#"+str(ctx.message.author.id),username,amount)
|
|
await ctx.send(response)
|
|
|
|
# Invest GwendoBucks in the stock market
|
|
@commands.command(aliases=["i"])
|
|
async def invest(self, ctx, *, content = "check"):
|
|
response = self.bot.invest.parseInvest(content,"#"+str(ctx.message.author.id))
|
|
if response.startswith("**"):
|
|
responses = response.split("\n")
|
|
em = discord.Embed(title=responses[0],description="\n".join(responses[1:]),colour=0x00FF00)
|
|
await ctx.send(embed=em)
|
|
else:
|
|
await ctx.send(response)
|
|
|
|
# Runs a game of trivia
|
|
@commands.command()
|
|
async def trivia(self, ctx, *, content = ""):
|
|
if content == "":
|
|
question, answers, correctAnswer = self.bot.trivia.triviaStart(str(ctx.message.channel.id))
|
|
if answers != "":
|
|
results = "**"+question+"**\n"
|
|
for x, answer in enumerate(answers):
|
|
results += chr(x+97) + ") "+answer+"\n"
|
|
|
|
await ctx.send(results)
|
|
|
|
await asyncio.sleep(60)
|
|
|
|
self.bot.trivia.triviaCountPoints(str(ctx.message.channel.id))
|
|
|
|
self.bot.funcs.deleteGame("trivia questions",str(ctx.message.channel.id))
|
|
|
|
logThis("Time's up for the trivia question",str(ctx.message.channel.id))
|
|
await ctx.send("Time's up The answer was \""+chr(correctAnswer)+") "+answers[correctAnswer-97]+"\". Anyone who answered that has gotten 1 GwendoBuck")
|
|
else:
|
|
await ctx.send(question)
|
|
|
|
elif content in ["a","b","c","d"]:
|
|
response = self.bot.trivia.triviaAnswer("#"+str(ctx.message.author.id),str(ctx.message.channel.id),content)
|
|
if response.startswith("Locked in "):
|
|
await ctx.message.add_reaction("👍")
|
|
else:
|
|
await ctx.send(response)
|
|
else:
|
|
logThis("I didn't understand that (error code 1101)",str(ctx.message.channel.id))
|
|
await ctx.send("I didn't understand that (error code 1101)")
|
|
|
|
# Runs a game of blackjack
|
|
@commands.command(aliases = ["bj"])
|
|
async def blackjack(self, ctx, *, content = ""):
|
|
await self.bot.blackjack.parseBlackjack(content,ctx)
|
|
|
|
# Runs a game of Connect four
|
|
@commands.command(aliases = ["fiar","connect4","connectfour","4iar","4inarow"])
|
|
async def fourinarow(self, ctx, *, content = ""):
|
|
await self.bot.gameLoops.fiar(ctx.message.channel,content,"#"+str(ctx.message.author.id))
|
|
|
|
# Runs a game of Monopoly
|
|
@commands.command(aliases = ["m","mon","mono"])
|
|
async def monopoly(self, ctx, *, content = ""):
|
|
await self.bot.gameLoops.runMonopoly(ctx.message.channel,content,"#"+str(ctx.message.author.id))
|
|
|
|
# Runs a game of Hangman
|
|
@commands.command(aliases = ["hm"])
|
|
async def hangman(self, ctx, *, content = "start"):
|
|
await self.bot.gameLoops.runHangman(ctx.message.channel,"#"+str(ctx.message.author.id),content)
|
|
|
|
# Runs a game of Hex
|
|
@commands.command(name="hex")
|
|
async def hexCommand(self, ctx, *, content = ""):
|
|
await self.bot.gameLoops.runHex(ctx.message.channel,content,"#"+str(ctx.message.author.id))
|
|
|
|
# Runs a game of Love Letter
|
|
@commands.command(aliases = ["ll"])
|
|
async def loveletter(self, ctx, *, content = ""):
|
|
await self.bot.gameLoops.runLoveletter(ctx.message.channel,content,"#"+str(ctx.message.author.id),ctx.message.author)
|
|
|
|
# Runs a game of Werewolf
|
|
@commands.command()
|
|
async def werewolf(self,ctx, *,content = "start"):
|
|
await self.bot.werewolf.parseWerewolf(ctx,content.lower())
|
|
|
|
def setup(bot):
|
|
bot.add_cog(GamesCog(bot)) |