aboutsummaryrefslogtreecommitdiff
path: root/minecrafttrivia/trivia_interface_cog.py
diff options
context:
space:
mode:
Diffstat (limited to 'minecrafttrivia/trivia_interface_cog.py')
-rw-r--r--minecrafttrivia/trivia_interface_cog.py44
1 files changed, 41 insertions, 3 deletions
diff --git a/minecrafttrivia/trivia_interface_cog.py b/minecrafttrivia/trivia_interface_cog.py
index 405a64a..e65869a 100644
--- a/minecrafttrivia/trivia_interface_cog.py
+++ b/minecrafttrivia/trivia_interface_cog.py
@@ -9,7 +9,8 @@ from . import utils
from .game import OngoingGame, CraftingGame, GamePhase
-class TriviaInterfaceCog(commands.Cog):
+class TriviaInterfaceCog(commands.Cog, name="MinecraftTrivia"):
+
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.config = Config.get_conf(self, identifier=262200644)
@@ -18,8 +19,10 @@ class TriviaInterfaceCog(commands.Cog):
join_timeout=30,
guess_timeout=60,
round_count=10,
+ min_players=2,
total_scores={},
high_scores={},
+ current_winstreak={},
)
self.active_games_per_channel: typing.Dict[int, OngoingGame] = {}
@@ -35,19 +38,31 @@ class TriviaInterfaceCog(commands.Cog):
@commands.group(aliases=["mctrivia", "mct"], invoke_without_command=True)
@guild_only()
- async def minecrafttrivia(self, ctx: commands.GuildContext):
+ async def minecrafttrivia(self, ctx: commands.GuildContext, *, extra=""):
"""Starts a game of minecraft trivia"""
+ if extra:
+ await ctx.send("Invalid subcommand.")
game = self.get_game(ctx.channel)
if game:
return await ctx.send("Game already started.")
game = self.create_game(ctx.bot, ctx.channel)
await game.start_signup()
+ @minecrafttrivia.command(aliases=["now"])
+ @guild_only()
+ @checks.mod()
+ async def startnow(self, ctx: commands.GuildContext):
+ game = self.get_game(ctx.channel)
+ if not game:
+ return await ctx.send("No game running")
+ await game.start_game()
+
@minecrafttrivia.group(aliases=["config"], invoke_without_command=True)
@guild_only()
@checks.admin()
async def set(self, ctx: commands.GuildContext):
- await ctx.send("Available config options: join_timeout guess_timeout round_count")
+ """Sets config options. execute without arguments to see all options"""
+ await ctx.send("Available config options: join_timeout guess_timeout round_count min_players")
@set.command(aliases=["join"])
@guild_only()
@@ -60,6 +75,17 @@ class TriviaInterfaceCog(commands.Cog):
else:
await ctx.send(f"`join_timeout` is `{await c.join_timeout()}`")
+ @set.command(aliases=["players"])
+ @guild_only()
+ @checks.admin()
+ async def min_players(self, ctx: commands.GuildContext, to: int = None):
+ c = self.config.guild(ctx.guild)
+ if to:
+ await c.min_players.set(to)
+ await ctx.send(f"Set `min_players` to `{to}`")
+ else:
+ await ctx.send(f"`min_players` is `{await c.min_players()}`")
+
@set.command(aliases=["guess"])
@guild_only()
@checks.admin()
@@ -85,6 +111,7 @@ class TriviaInterfaceCog(commands.Cog):
@minecrafttrivia.command(aliases=["high"])
@guild_only()
async def highscore(self, ctx: commands.GuildContext):
+ """Show single-round highscore leaderboard"""
high_scores = await self.config.guild(ctx.guild).high_scores()
await ctx.send(embed=discord.Embed(
title=f"MC Trivia Highscores for {ctx.guild.name}",
@@ -93,14 +120,25 @@ class TriviaInterfaceCog(commands.Cog):
@minecrafttrivia.command(aliases=["lead", "total"])
@guild_only()
async def leaderboard(self, ctx: commands.GuildContext):
+ """Show total summed up highscore leaderboard"""
total_scores = await self.config.guild(ctx.guild).total_scores()
await ctx.send(embed=discord.Embed(
title=f"MC Trivia Leaderboard for {ctx.guild.name}",
description=utils.format_leaderboard(utils.create_leaderboard(total_scores))
))
+ @minecrafttrivia.command(aliases=["win"])
+ @guild_only()
+ async def winstreak(self, ctx: commands.GuildContext):
+ winstreaks = await self.config.guild(ctx.guild).current_winstreak()
+ await ctx.send(embed=discord.Embed(
+ title=f"MC Trivia Current Winstreaks in {ctx.guild.name}",
+ description=utils.format_leaderboard(utils.create_leaderboard(winstreaks))
+ ))
+
@minecrafttrivia.command()
async def info(self, ctx: commands.Context):
+ """Show info about this cog"""
embed = discord.Embed(
title="MC Trivia Cog by romangraef89",
description="This cog allows you to compete against your friends in a race to guess minecraft crafting recipes the fastest"