setup Docker
This commit is contained in:
parent
475a41abcc
commit
9f882ab1be
|
@ -0,0 +1,3 @@
|
|||
secrets.env
|
||||
.env
|
||||
venv
|
|
@ -0,0 +1,10 @@
|
|||
FROM python:3.8-alpine3.10
|
||||
|
||||
WORKDIR /app
|
||||
RUN apk add build-base
|
||||
|
||||
COPY requirements.txt ./
|
||||
RUN pip install -r requirements.txt
|
||||
COPY src/ ./src/
|
||||
|
||||
CMD ["python3", "src/werewolve-bot.py"]
|
|
@ -0,0 +1,8 @@
|
|||
version: "3.7"
|
||||
services:
|
||||
|
||||
werewolf:
|
||||
build: .
|
||||
image: werwewolf
|
||||
env_file: secrets.env
|
||||
restart: always
|
|
@ -0,0 +1,2 @@
|
|||
discord.py
|
||||
python-dotenv
|
|
@ -7,11 +7,14 @@ from dotenv import load_dotenv
|
|||
|
||||
load_dotenv()
|
||||
TOKEN = os.getenv('DISCORD_TOKEN')
|
||||
if TOKEN is None:
|
||||
print("Missing discord token!")
|
||||
exit(1)
|
||||
|
||||
|
||||
|
||||
class Role:
|
||||
|
||||
|
||||
def __init__(self, game):
|
||||
self.game = game
|
||||
self.copy = self
|
||||
|
@ -52,7 +55,7 @@ class Doppelganger(Role):
|
|||
|
||||
class Werewolf(Role):
|
||||
order = 2
|
||||
|
||||
|
||||
def setPlayer(self, player):
|
||||
super().setPlayer(player)
|
||||
self.game.werewolf_list.append(player)
|
||||
|
@ -65,7 +68,7 @@ class Werewolf(Role):
|
|||
await self.player.send("Which card in the middle do you want to look at?")
|
||||
self.choice = await self.player.get_choice(["left", "middle", "right"])
|
||||
|
||||
await self.player.send("A card in the middle is: " + self.game.middle_card[self.choice].name())
|
||||
await self.player.send("A card in the middle is: " + self.game.middle_card[self.choice].name())
|
||||
|
||||
|
||||
class Minion(Role):
|
||||
|
@ -141,7 +144,7 @@ class Drunk(Role):
|
|||
async def phase1(self):
|
||||
await self.player.send("Which card from the middle do you want to take?")
|
||||
self.choice = await self.player.get_choice(["left", "middle", "right"])
|
||||
|
||||
|
||||
async def phase5(self):
|
||||
self.player.day_role, self.game.middle_card[self.choice] = self.game.middle_card[self.choice], self.player.day_role
|
||||
#receive conformation
|
||||
|
@ -321,7 +324,7 @@ class one_night:
|
|||
await self.send("The day has started")
|
||||
|
||||
async def vote(self, options):
|
||||
|
||||
|
||||
# vote
|
||||
await self.receive('$vote')
|
||||
await self.send("Vote in DM")
|
||||
|
@ -338,7 +341,7 @@ class one_night:
|
|||
p.vote.tally += 1
|
||||
|
||||
def who_dead(self, options):
|
||||
|
||||
|
||||
maxi = max(o.tally for o in options)
|
||||
dead = [p for p in self.player_list if p.tally >= maxi]
|
||||
for d in dead:
|
||||
|
@ -370,7 +373,7 @@ class one_night:
|
|||
else:
|
||||
if tanner_dead:
|
||||
tanner_won = True
|
||||
|
||||
|
||||
if werewolf_dead:
|
||||
village_won = True
|
||||
|
||||
|
@ -422,7 +425,7 @@ class one_night:
|
|||
self.distribute_roles()
|
||||
await self.start_night()
|
||||
await self.send_role()
|
||||
|
||||
|
||||
await self.night_phases()
|
||||
|
||||
await self.start_day()
|
||||
|
@ -440,7 +443,7 @@ class one_night:
|
|||
finally:
|
||||
self.end()
|
||||
await self.send("Game ended")
|
||||
|
||||
|
||||
|
||||
|
||||
bot = discord.Client()
|
||||
|
@ -477,9 +480,9 @@ async def on_message(message):
|
|||
|
||||
|
||||
if message.content.startswith('$werewolf'):
|
||||
|
||||
|
||||
# start (only one instance running)
|
||||
|
||||
|
||||
if werewolf_game.running:
|
||||
await message.channel.send("Sorry! A game is already running")
|
||||
return
|
||||
|
@ -488,9 +491,9 @@ async def on_message(message):
|
|||
werewolf_game.set_channel(message.channel)
|
||||
|
||||
|
||||
await werewolf_game.game()
|
||||
await werewolf_game.game()
|
||||
|
||||
return
|
||||
|
||||
werewolf_game = one_night(bot)
|
||||
bot.run(TOKEN)
|
||||
bot.run(TOKEN)
|
Loading…
Reference in New Issue