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/player.py

50 lines
1.4 KiB

import logging
import discord
log = logging.getLogger("red.fox_v3.werewolf.player")
class Player:
"""
Base player class for Werewolf game
"""
def __init__(self, member: discord.Member):
self.member = member
self.mention = member.mention
self.role = None
self.id = None
self.alive = True
self.muted = False
self.protected = False
def __repr__(self):
return f"{self.__class__.__name__}({self.member})"
async def assign_role(self, role):
"""
Give this player a role
"""
role.player = self
self.role = role
async def assign_id(self, target_id):
self.id = target_id
async def send_dm(self, message):
try:
await self.member.send(message) # Lets ToDo embeds later
except discord.Forbidden:
log.info(f"Unable to mention {self.member.__repr__()}")
await self.role.game.village_channel.send(
f"Couldn't DM {self.mention}, uh oh",
allowed_mentions=discord.AllowedMentions(users=[self.member]),
)
except AttributeError:
log.exception("Someone messed up and added a bot to the game (I think)")
await self.role.game.village_channel.send(
"Someone messed up and added a bot to the game :eyes:"
)