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.py83
1 files changed, 64 insertions, 19 deletions
diff --git a/minecrafttrivia/trivia_interface_cog.py b/minecrafttrivia/trivia_interface_cog.py
index b27f789..63553f8 100644
--- a/minecrafttrivia/trivia_interface_cog.py
+++ b/minecrafttrivia/trivia_interface_cog.py
@@ -2,7 +2,7 @@ import typing
import discord
from discord.ext.commands import guild_only
-from redbot.core import commands, Config
+from redbot.core import commands, Config, checks
from redbot.core.bot import Red
from . import utils
@@ -17,6 +17,7 @@ class TriviaInterfaceCog(commands.Cog):
self.config.register_guild(
join_timeout=30,
guess_timeout=60,
+ round_count=10,
total_scores={},
high_scores={},
)
@@ -32,24 +33,68 @@ class TriviaInterfaceCog(commands.Cog):
self.active_games_per_channel[channel.id] = game
return game
- @commands.command(aliases=["mctrivia", "mct"])
+ @commands.group(aliases=["mctrivia", "mct"], invoke_without_command=True)
@guild_only()
- async def minecrafttrivia(self, ctx: commands.GuildContext, action: str = "new"):
+ async def minecrafttrivia(self, ctx: commands.GuildContext):
"""Starts a game of minecraft trivia"""
game = self.get_game(ctx.channel)
- if action == "new":
- if game:
- return await ctx.send("Game already started.")
- game = self.create_game(ctx.bot, ctx.channel)
- await game.start_signup()
- elif action[:4] == "high":
- 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}",
- description=utils.format_leaderboard(utils.create_leaderboard(high_scores))))
- elif action[:4] == "lead":
- 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))
- ))
+ if game:
+ return await ctx.send("Game already started.")
+ game = self.create_game(ctx.bot, ctx.channel)
+ await game.start_signup()
+
+ @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")
+
+ @set.command(aliases=["join"])
+ @guild_only()
+ @checks.admin()
+ async def join_timeout(self, ctx: commands.GuildContext, to: int = None):
+ c = self.config.guild(ctx.guild)
+ if to:
+ await c.join_timeout.set(to)
+ await ctx.send(f"Set `join_timeout` to `{to}`")
+ else:
+ await ctx.send(f"`join_timeout` is `{await c.join_timeout()}`")
+
+ @set.command(aliases=["guess"])
+ @guild_only()
+ @checks.admin()
+ async def guess_timeout(self, ctx: commands.GuildContext, to: int = None):
+ c = self.config.guild(ctx.guild)
+ if to:
+ await c.guess_timeout.set(to)
+ await ctx.send(f"Set `guess_timeout` to `{to}`")
+ else:
+ await ctx.send(f"`guess_timeout` is `{await c.guess_timeout()}`")
+
+ @set.command(aliases=["rounds"])
+ @guild_only()
+ @checks.admin()
+ async def round_count(self, ctx: commands.GuildContext, to: int = None):
+ c = self.config.guild(ctx.guild)
+ if to:
+ await c.round_count.set(to)
+ await ctx.send(f"Set `round_count` to `{to}`")
+ else:
+ await ctx.send(f"`round_count` is `{await c.round_count()}`")
+
+ @minecrafttrivia.command(aliases=["high"])
+ @guild_only()
+ async def highscore(self, ctx: commands.GuildContext):
+ 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}",
+ description=utils.format_leaderboard(utils.create_leaderboard(high_scores))))
+
+ @minecrafttrivia.command(aliases=["lead", "total"])
+ @guild_only()
+ async def leaderboard(self, ctx: commands.GuildContext):
+ 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))
+ ))