You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Fox-V3/werewolf/Werewolf.py

90 lines
2.1 KiB

import asyncio
import discord
from discord.ext import commands
from redbot.core import Config
from datetime import datetime,timedelta
from .game import Game
class Werewolf:
"""
Base to host werewolf on a server
"""
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 server
@commands.group()
async def ww(self, ctx: commands.Context):
"""
Base command for this cog. Check help for the commands list.
"""
if ctx.invoked_subcommand is None:
await ctx.send_help()
@ww.command()
7 years ago
async def join(self, ctx, role_code):
"""
Joins a game of Werewolf or start a new one
"""
7 years ago
game = self._get_game(ctx.guild, role_code)
7 years ago
if not game:
ctx.send("Please provide a role code to get started!")
return
ctx.send(await game.join(ctx.author))
@ww.command()
async def quit(self, ctx):
"""
Quit a game of Werewolf
"""
7 years ago
game = self._get_game(ctx.guild)
out = await game.quit(ctx.author)
ctx.send(out)
7 years ago
7 years ago
def _get_game(self, guild, role_code = None):
if guild.id not in self.games:
if not role_code:
return None
self.games[guild.id] = Game(role_code)
7 years ago
return self.games[guild.id]
async def _game_start(self, game):
await game.start()
7 years ago
async def on_message(self, message):
if message.author.id == self.bot.user.id:
return
author = message.author
channel = message.channel
guild = message.guild
game = self._get_game(guild)
if not game:
return
if channel is game.village_channel: