Secret Hitler Initial commit
This commit is contained in:
parent
6cc32a937c
commit
c783395a6d
@ -1,5 +1,5 @@
|
||||
from .secrethitler import Werewolf
|
||||
from .secrethitler import SecretHitler
|
||||
|
||||
|
||||
def setup(bot):
|
||||
bot.add_cog(Werewolf(bot))
|
||||
bot.add_cog(SecretHitler(bot))
|
23
secrethitler/info.json
Normal file
23
secrethitler/info.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"author": [
|
||||
"Bobloy"
|
||||
],
|
||||
"bot_version": [
|
||||
3,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"description": "Secret Hitler Game",
|
||||
"hidden": true,
|
||||
"install_msg": "Thank you for installing SecretHitler! Get started with `[p]load secrethitler`",
|
||||
"requirements": [],
|
||||
"short": "Secret Hitler Game",
|
||||
"tags": [
|
||||
"hitler",
|
||||
"secret",
|
||||
"party",
|
||||
"fun",
|
||||
"game",
|
||||
"bobloy"
|
||||
]
|
||||
}
|
@ -1,114 +1,19 @@
|
||||
import asyncio
|
||||
|
||||
import discord
|
||||
from redbot.core import commands
|
||||
|
||||
|
||||
from redbot.core import Config, commands
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from werewolf.game import Game
|
||||
|
||||
|
||||
class Werewolf:
|
||||
class SecretHitler:
|
||||
"""
|
||||
Base to host werewolf on a guild
|
||||
Base to host Secret Hitler on a guild
|
||||
"""
|
||||
|
||||
def __init__(self, bot):
|
||||
self.bot = bot
|
||||
self.config = Config.get_conf(self, identifier=87101114101119111108102, force_registration=True)
|
||||
default_global = {}
|
||||
default_guild = {
|
||||
}
|
||||
|
||||
self.config.register_global(**default_global)
|
||||
self.config.register_guild(**default_guild)
|
||||
|
||||
self.games = {} # Active games stored here, id is per guild
|
||||
|
||||
@commands.group()
|
||||
async def ww(self, ctx: commands.Context):
|
||||
async def secrethitler(self, ctx: commands.Context):
|
||||
"""
|
||||
Base command for this cog. Check help for the commands list.
|
||||
"""
|
||||
if ctx.invoked_subcommand is None:
|
||||
pass
|
||||
|
||||
@ww.command()
|
||||
async def new(self, ctx, game_code):
|
||||
"""
|
||||
Create and join a new game of Werewolf
|
||||
"""
|
||||
|
||||
game = self._get_game(ctx.guild, game_code)
|
||||
|
||||
if not game:
|
||||
await ctx.send("Failed to start a new game")
|
||||
else:
|
||||
await ctx.send("New game has started")
|
||||
|
||||
|
||||
|
||||
@ww.command()
|
||||
async def join(self, ctx):
|
||||
"""
|
||||
Joins a game of Werewolf
|
||||
"""
|
||||
|
||||
game = self._get_game(ctx.guild)
|
||||
|
||||
if not game:
|
||||
await ctx.send("No game to join!\nCreate a new one with `[p]ww new`")
|
||||
return
|
||||
|
||||
await game.join(ctx.author, ctx.channel)
|
||||
|
||||
@ww.command()
|
||||
async def quit(self, ctx):
|
||||
"""
|
||||
Quit a game of Werewolf
|
||||
"""
|
||||
|
||||
game = self._get_game(ctx.guild)
|
||||
|
||||
await game.quit(ctx.author, ctx.channel)
|
||||
|
||||
@ww.command()
|
||||
async def start(self, ctx):
|
||||
"""
|
||||
Checks number of players and attempts to start the game
|
||||
"""
|
||||
game = self._get_game(ctx.guild)
|
||||
if not game:
|
||||
await ctx.send("No game running, cannot start")
|
||||
|
||||
await game.setup(ctx)
|
||||
|
||||
@ww.command()
|
||||
async def vote(self, ctx, id):
|
||||
"""
|
||||
Vote for a player by ID
|
||||
"""
|
||||
game = self._get_game(ctx.guild)
|
||||
if not game:
|
||||
await ctx.send("No game running, cannot vote")
|
||||
|
||||
# Game handles response now
|
||||
channel = ctx.channel
|
||||
if channel is game.village_channel:
|
||||
await game.vote(ctx.author, id, channel)
|
||||
|
||||
if channel in (c["channel"] for c in game.p_channels.values()):
|
||||
await game.vote(ctx.author, id, channel)
|
||||
|
||||
def _get_game(self, guild, game_code=None):
|
||||
if guild.id not in self.games:
|
||||
if not game_code:
|
||||
return None
|
||||
self.games[guild.id] = Game(guild, game_code)
|
||||
|
||||
return self.games[guild.id]
|
||||
|
||||
async def _game_start(self, game):
|
||||
await game.start()
|
||||
|
Loading…
x
Reference in New Issue
Block a user