mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-29 09:04:18 +00:00
L'admin è ora un oggetto giocatore
This commit is contained in:
parent
4c541c1255
commit
3ccaade0ac
2 changed files with 28 additions and 11 deletions
35
main.py
35
main.py
|
@ -273,9 +273,9 @@ class Player:
|
||||||
class Game:
|
class Game:
|
||||||
"""Classe di una partita, contenente parametri riguardanti stato della partita
|
"""Classe di una partita, contenente parametri riguardanti stato della partita
|
||||||
e informazioni sul gruppo di Telegram."""
|
e informazioni sul gruppo di Telegram."""
|
||||||
def __init__(self, groupid, adminid):
|
def __init__(self, groupid):
|
||||||
self.groupid = groupid # ID del gruppo in cui si sta svolgendo una partita
|
self.groupid = groupid # ID del gruppo in cui si sta svolgendo una partita
|
||||||
self.adminid = adminid # ID telegram dell'utente che ha creato la partita con /newgame
|
self.admin = None # ID telegram dell'utente che ha creato la partita con /newgame
|
||||||
self.players = list() # Lista dei giocatori in partita
|
self.players = list() # Lista dei giocatori in partita
|
||||||
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
||||||
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
self.phase = 'Join' # Fase di gioco: 'Join', 'Config', 'Voting'
|
||||||
|
@ -316,7 +316,7 @@ class Game:
|
||||||
|
|
||||||
def adminmessage(self, bot, text):
|
def adminmessage(self, bot, text):
|
||||||
"""Manda un messaggio privato al creatore della partita."""
|
"""Manda un messaggio privato al creatore della partita."""
|
||||||
bot.sendMessage(self.adminid, text, parse_mode=ParseMode.MARKDOWN)
|
self.admin.message(bot, text)
|
||||||
|
|
||||||
def mifiamessage(self, bot, text):
|
def mifiamessage(self, bot, text):
|
||||||
"""Manda un messaggio privato a tutti i Mifiosi nella partita."""
|
"""Manda un messaggio privato a tutti i Mifiosi nella partita."""
|
||||||
|
@ -561,9 +561,10 @@ def newgame(bot, update):
|
||||||
if update.message.chat['type'] != 'private':
|
if update.message.chat['type'] != 'private':
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is None:
|
if game is None:
|
||||||
game = Game(update.message.chat['id'], update.message.from_user['id'])
|
game = Game(update.message.chat['id'])
|
||||||
inprogress.append(game)
|
inprogress.append(game)
|
||||||
game.message(bot, s.new_game.format(groupid=game.groupid, name=game.name))
|
game.message(bot, s.new_game.format(groupid=game.groupid, name=game.name))
|
||||||
|
join(bot, update)
|
||||||
else:
|
else:
|
||||||
bot.sendMessage(update.message.chat['id'], s.error_game_in_progress, parse_mode=ParseMode.MARKDOWN)
|
bot.sendMessage(update.message.chat['id'], s.error_game_in_progress, parse_mode=ParseMode.MARKDOWN)
|
||||||
else:
|
else:
|
||||||
|
@ -584,6 +585,8 @@ def join(bot, update):
|
||||||
game.message(bot, s.error_chat_unavailable)
|
game.message(bot, s.error_chat_unavailable)
|
||||||
else:
|
else:
|
||||||
game.message(bot, s.player_joined.format(name=p.tusername))
|
game.message(bot, s.player_joined.format(name=p.tusername))
|
||||||
|
if len(game.players) == 0:
|
||||||
|
game.admin = p
|
||||||
game.players.append(p)
|
game.players.append(p)
|
||||||
else:
|
else:
|
||||||
game.message(bot, s.error_player_already_joined)
|
game.message(bot, s.error_player_already_joined)
|
||||||
|
@ -597,7 +600,9 @@ def status(bot, update):
|
||||||
"""Visualizza lo stato della partita."""
|
"""Visualizza lo stato della partita."""
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None:
|
if game is not None:
|
||||||
text = s.status_header.format(name=game.name, admin=game.adminid, phase=game.phase)
|
text = s.status_header.format(name=game.name, admin=game.admin.tusername, phase=game.phase)
|
||||||
|
if __debug__:
|
||||||
|
text += s.debug_mode
|
||||||
game.updatevotes()
|
game.updatevotes()
|
||||||
# Aggiungi l'elenco dei giocatori
|
# Aggiungi l'elenco dei giocatori
|
||||||
for player in game.players:
|
for player in game.players:
|
||||||
|
@ -616,7 +621,7 @@ def endjoin(bot, update):
|
||||||
"""Termina la fase di join e inizia quella di votazione."""
|
"""Termina la fase di join e inizia quella di votazione."""
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase == 'Join':
|
if game is not None and game.phase == 'Join':
|
||||||
if update.message.from_user['id'] == game.adminid:
|
if update.message.from_user['id'] == game.admin.tid:
|
||||||
# Inizio fase di configurazione
|
# Inizio fase di configurazione
|
||||||
game.phase = 'Config'
|
game.phase = 'Config'
|
||||||
game.message(bot, s.join_phase_ended)
|
game.message(bot, s.join_phase_ended)
|
||||||
|
@ -631,7 +636,7 @@ def config(bot, update):
|
||||||
"""Configura il parametro richiesto."""
|
"""Configura il parametro richiesto."""
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase is 'Config':
|
if game is not None and game.phase is 'Config':
|
||||||
if update.message.from_user['id'] == game.adminid:
|
if update.message.from_user['id'] == game.admin.tid:
|
||||||
cmd = update.message.text.split(' ', 1)
|
cmd = update.message.text.split(' ', 1)
|
||||||
if len(cmd) >= 2:
|
if len(cmd) >= 2:
|
||||||
if game.configstep == 0:
|
if game.configstep == 0:
|
||||||
|
@ -667,6 +672,14 @@ def config(bot, update):
|
||||||
game.configstep += 1
|
game.configstep += 1
|
||||||
game.message(bot, s.config_list[game.configstep])
|
game.message(bot, s.config_list[game.configstep])
|
||||||
elif game.configstep == 4:
|
elif game.configstep == 4:
|
||||||
|
try:
|
||||||
|
game.roleconfig["Derek"] = int(cmd[1])
|
||||||
|
except ValueError:
|
||||||
|
game.message(bot, s.error_invalid_config)
|
||||||
|
else:
|
||||||
|
game.configstep += 1
|
||||||
|
game.message(bot, s.config_list[game.configstep])
|
||||||
|
elif game.configstep == 5:
|
||||||
if cmd[1].lower() == 'testa':
|
if cmd[1].lower() == 'testa':
|
||||||
game.votingmifia = False
|
game.votingmifia = False
|
||||||
game.endconfig(bot)
|
game.endconfig(bot)
|
||||||
|
@ -707,7 +720,7 @@ def vote(bot, update):
|
||||||
def endday(bot, update):
|
def endday(bot, update):
|
||||||
"""Termina la giornata attuale."""
|
"""Termina la giornata attuale."""
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase is 'Voting' and update.message.from_user['id'] == game.adminid:
|
if game is not None and game.phase is 'Voting' and update.message.from_user['id'] == game.admin.tid:
|
||||||
game.endday(bot)
|
game.endday(bot)
|
||||||
|
|
||||||
|
|
||||||
|
@ -756,7 +769,7 @@ def kill(bot, update):
|
||||||
if __debug__:
|
if __debug__:
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase is 'Voting':
|
if game is not None and game.phase is 'Voting':
|
||||||
if update.message.from_user['id'] == game.adminid:
|
if update.message.from_user['id'] == game.admin.tid:
|
||||||
target = game.findplayerbyusername(update.message.text.split(' ')[1])
|
target = game.findplayerbyusername(update.message.text.split(' ')[1])
|
||||||
if target is not None:
|
if target is not None:
|
||||||
target.kill(bot, game)
|
target.kill(bot, game)
|
||||||
|
@ -831,8 +844,8 @@ def debug(bot, update):
|
||||||
if __debug__:
|
if __debug__:
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None:
|
if game is not None:
|
||||||
if game.adminid == update.message.from_user['id']:
|
if game.admin.tid == update.message.from_user['id']:
|
||||||
text = s.status_header.format(name=game.groupid, admin=game.adminid, phase=game.phase)
|
text = s.status_header.format(name=game.groupid, admin=game.admin.tid, phase=game.phase)
|
||||||
game.updatevotes()
|
game.updatevotes()
|
||||||
# Aggiungi l'elenco dei giocatori
|
# Aggiungi l'elenco dei giocatori
|
||||||
for player in game.players:
|
for player in game.players:
|
||||||
|
|
|
@ -190,6 +190,9 @@ status_alive_player = "{icon} @{name} ({votes} voti)\n"
|
||||||
# Status: giocatore morto (deve terminare con \n)
|
# Status: giocatore morto (deve terminare con \n)
|
||||||
status_dead_player = "\U0001F480 @{name}\n"
|
status_dead_player = "\U0001F480 @{name}\n"
|
||||||
|
|
||||||
|
# Status: Modalità debug
|
||||||
|
debug_mode = "*DEBUG/CHEATS MODE*"
|
||||||
|
|
||||||
# Ping!
|
# Ping!
|
||||||
pong = "Pong!"
|
pong = "Pong!"
|
||||||
|
|
||||||
|
@ -278,5 +281,6 @@ config_list = ["Quanti Mifiosi devono essere nella partita?",
|
||||||
"Quanti Investigatori devono essere nella partita?",
|
"Quanti Investigatori devono essere nella partita?",
|
||||||
"Quanti Angeli devono essere nella partita?",
|
"Quanti Angeli devono essere nella partita?",
|
||||||
"Quanti Terroristi devono essere nella partita?",
|
"Quanti Terroristi devono essere nella partita?",
|
||||||
|
"Quanti Derek devono essere nella partita?",
|
||||||
"I mifiosi possono uccidere una persona a `testa` al giorno "
|
"I mifiosi possono uccidere una persona a `testa` al giorno "
|
||||||
"o votano e decidono un'`unica` persona da uccidere per tutta la squadra?"]
|
"o votano e decidono un'`unica` persona da uccidere per tutta la squadra?"]
|
||||||
|
|
Loading…
Reference in a new issue