57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
class Player:
|
|
|
|
@staticmethod
|
|
async def make(member, game):
|
|
p = Player()
|
|
p.member = member
|
|
p.dm = member.dm_channel or await member.create_dm()
|
|
p.game = game
|
|
return p
|
|
|
|
@staticmethod
|
|
def swap(player_A, player_B):
|
|
player_A.day_role, player_B.day_role = player_B.day_role, player_A.day_role
|
|
|
|
def setRole(self, role):
|
|
self.night_role = role
|
|
self.day_role = role
|
|
|
|
def name(self):
|
|
return self.member.name
|
|
|
|
def __repr__(self):
|
|
return self.name()
|
|
|
|
def other(self):
|
|
return [p for p in self.game.player_list if p != self]
|
|
|
|
async def send(self, message):
|
|
await self.dm.send(message)
|
|
|
|
async def ask_choice(self, options):
|
|
await self.send('\n'.join( "(" + str(i) + ") " + str(options[i]) for i in range(len(options)) ))
|
|
|
|
async def receive_choice(self, options):
|
|
def check(choice):
|
|
return choice.channel == self.dm and choice.content.isdigit() and 0 <= int(choice.content) < len(options)
|
|
|
|
return int((await self.game.bot.wait_for('message', timeout=30.0, check = check)).content)
|
|
|
|
async def get_choice(self, options):
|
|
await self.ask_choice(options)
|
|
return await self.receive_choice(options)
|
|
|
|
async def cast_vote(self, options):
|
|
self.vote = options[await self.get_choice(options)]
|
|
|
|
class No_player(Player):
|
|
|
|
def __init__(self):
|
|
self.day_role = No_role()
|
|
|
|
def name(self):
|
|
return "no one"
|
|
|
|
def __str__(self):
|
|
return self.name()
|