1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00
Conflicts:
	mifia.py
This commit is contained in:
Steffo 2016-04-19 12:21:21 -04:00
commit bef5f70797
3 changed files with 103 additions and 72 deletions

2
.gitignore vendored
View file

@ -8,5 +8,5 @@ hearthstoneapi.txt
.idea/* .idea/*
diario.txt diario.txt
lolapi.txt lolapi.txt
save.txt
*.ini *.ini
nohup.out

12
db.json
View file

@ -229,18 +229,6 @@
"steam": 76561198119439530, "steam": 76561198119439530,
"lol": 68867050 "lol": 68867050
}, },
"<fillo>":
{
"name": "Fillo",
"desc": "Membro sconosciuto della Community. Nessuno sa la sua vera eta'.",
"icon": "Fil"
},
"<alle>":
{
"name": "Alle2002",
"desc": "Membro della Royal Games che non si vede online da parecchio. Chissà cosa sta facendo.",
"icon": "Ar"
},
"royalbot": "royalbot":
{ {
"name": "RoyalBot", "name": "RoyalBot",

159
mifia.py
View file

@ -27,6 +27,7 @@ class Game:
adminid = int() adminid = int()
players = list() players = list()
tokill = list() tokill = list()
joinphase = True
def __del__(self): def __del__(self):
print("Partita {0} eliminata.\n".format(self.groupid)) print("Partita {0} eliminata.\n".format(self.groupid))
@ -52,7 +53,7 @@ class Game:
telegram.sendmessage("\U0001F608: " + text, player.telegramid) telegram.sendmessage("\U0001F608: " + text, player.telegramid)
def status(self) -> str: def status(self) -> str:
"""Restituisci lo stato attuale della partita in una stringa unicode""" """Restituisci lo stato attuale della partita in una stringa"""
tosend = "Stato attuale del gioco: \n" tosend = "Stato attuale del gioco: \n"
for player in self.players: for player in self.players:
if not player.alive: if not player.alive:
@ -62,8 +63,21 @@ class Game:
tosend += player.username + "\n" tosend += player.username + "\n"
return tosend return tosend
def mifiastatus(self) -> str:
"""Restituisci lo stato attuale della partita (per mifiosi) in una stringa"""
tosend = "Stato attuale del gioco: \n"
for player in self.players:
if not player.alive:
tosend += "\U0001F480 "
elif player.role == 1:
tosend += "\U0001F608 "
else:
tosend += "\U0001F610 "
tosend += player.username + "\n"
return tosend
def fullstatus(self) -> str: def fullstatus(self) -> str:
"""Restituisci lo stato attuale della partita (per admin?) in una stringa unicode""" """Restituisci lo stato attuale della partita (per admin?) in una stringa"""
tosend = str(self.groupid) + "\n" tosend = str(self.groupid) + "\n"
for player in self.players: for player in self.players:
if not player.alive: if not player.alive:
@ -71,9 +85,9 @@ class Game:
elif player.role == 1: elif player.role == 1:
tosend += "\U0001F608 " tosend += "\U0001F608 "
elif player.role == 2: elif player.role == 2:
tosend += "\U0001F46E " tosend += "\U0001F575 "
else: else:
tosend += "\U0001F636 " tosend += "\U0001F610 "
tosend += player.username + "\n" tosend += player.username + "\n"
return tosend return tosend
@ -82,7 +96,7 @@ class Game:
:param fusername: Nome utente da cercare :param fusername: Nome utente da cercare
""" """
for player in self.players: for player in self.players:
if player.username == fusername: if player.username == fusername.capitalize():
return player return player
else: else:
return None return None
@ -133,10 +147,12 @@ class Game:
self.tokill.append(votedout) self.tokill.append(votedout)
for killed in self.tokill: for killed in self.tokill:
self.message(killed.username + " è stato ucciso.\n") self.message(killed.username + " è stato ucciso.\n")
if killed.role == 1: if killed.role == 0:
self.message("Era un Mifioso!") self.message("Era un \U0001F610 Royal.")
elif killed.role == 1:
self.message("Era un \U0001F608 Mifioso!")
elif killed.role == 2: elif killed.role == 2:
self.message("Era un Detective!") self.message("Era un \U0001F575 Detective!")
killed.alive = False killed.alive = False
for player in self.players: for player in self.players:
player.votedfor = str() player.votedfor = str()
@ -193,6 +209,10 @@ class Game:
f = open(str(self.groupid) + ".ini", "w") f = open(str(self.groupid) + ".ini", "w")
status.write(f) status.write(f)
def endjoin(self):
self.message("La fase di join è finita.")
self.joinphase = False
def findgame(chatid) -> Game: def findgame(chatid) -> Game:
for game in partiteincorso: for game in partiteincorso:
@ -237,7 +257,7 @@ while True:
partiteincorso.append(g) partiteincorso.append(g)
g.message("Partita caricata!\n_Forse._") g.message("Partita caricata!\n_Forse._")
elif t['text'].startswith("/status"): elif t['text'].startswith("/status"):
telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) telegram.sendmessage("Nessuna partita in corso in questo gruppo.", t['chat']['id'], t['message_id'])
else: else:
xtra = t['text'].split(' ', 2) xtra = t['text'].split(' ', 2)
try: try:
@ -245,7 +265,7 @@ while True:
except ValueError: except ValueError:
g = None g = None
if g is not None: if g is not None:
if xtra[1] == "SPECIAL": if xtra[1].capitalize() == "special":
if g.findid(t['from']['id']).role == 1 and g.findid(t['from']['id']).special: if g.findid(t['from']['id']).role == 1 and g.findid(t['from']['id']).special:
target = g.findusername(xtra[2]) target = g.findusername(xtra[2])
if target is not None: if target is not None:
@ -258,87 +278,110 @@ while True:
p = g.findid(t['from']['id']) p = g.findid(t['from']['id'])
if target is not None: if target is not None:
if target.role == 0: if target.role == 0:
p.message(target.username + " è un Royal.") p.message(target.username + " è un \U0001F610 Royal.")
elif target.role == 1: elif target.role == 1:
p.message(target.username + " è un Mifioso.") p.message(target.username + " è un \U0001F608 Mifioso.")
elif target.role == 2: elif target.role == 2:
p.message(target.username + " è un Detective.") p.message(target.username + " è un \U0001F575 Detective.")
p.special = False p.special = False
elif xtra[1] == "CHAT": elif xtra[1].capitalize() == "chat":
if g.findid(t['from']['id']).role == 1: if g.findid(t['from']['id']).role == 1:
g.evilmessage(xtra[2]) g.evilmessage(xtra[2])
else: else:
if t['text'].startswith("/join"): if t['text'].startswith("/join"):
if g.findid(t['from']['id']) is None: if g.joinphase and g.findid(t['from']['id']) is None:
p = Player() p = Player()
p.telegramid = t['from']['id'] p.telegramid = t['from']['id']
# Qui crasha se non è stato impostato un username. Fare qualcosa? # Qui crasha se non è stato impostato un username. Fare qualcosa?
p.username = t['from']['username'] p.username = t['from']['username'].capitalize()
# Assegnazione dei ruoli # Assegnazione dei ruoli
r = random.randrange(0, 100) r = random.randrange(0, 100)
# Spiegare meglio cosa deve fare ogni ruolo? # Spiegare meglio cosa deve fare ogni ruolo?
if r < 15: if r < 20:
p.role = 1 p.role = 1
p.special = True p.special = True
p.message("Sei stato assegnato alla squadra *MIFIA*.") p.message("Sei stato assegnato alla squadra \U0001F608 *MIFIA*."
p.message("Apparirai agli altri come un membro del team ROYAL. Depistali e non farti uccidere!") "Apparirai agli altri come un membro del team ROYAL.\n"
p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" "Depistali e non farti uccidere!\n"
"Per votare, scrivi `/vote username`!") "Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
p.message("Scrivi in questa chat `" + str(g.groupid) + " CHAT messaggio` per mandare un" "Per votare, scrivi `/vote username`!\n"
" messaggio segreto al tuo team.") "Scrivi in questa chat `{0} CHAT messaggio` per mandare un"
p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per uccidere" " messaggio segreto al tuo team.\n"
" qualcuno alla fine del giorno.") "Scrivi in questa chat `{0} SPECIAL username` per uccidere"
p.message("La squadra Mifia vince se tutta la Royal Games è eliminata.") " qualcuno alla fine del giorno.\n"
p.message("Perdi se vieni ucciso.") "La squadra Mifia vince se tutta la Royal Games è eliminata.\n"
"Perdi se vieni ucciso."
.format(g.groupid))
elif r > 85: elif r > 85:
p.role = 2 p.role = 2
p.special = True p.special = True
p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di *DETECTIVE*.") p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di \U0001F575 *DETECTIVE*.\n"
p.message("Apparirai agli altri come un membro del team ROYAL. " "Apparirai agli altri come un membro del team ROYAL.\n"
"Non attirare l'attenzione dei Mifiosi su di te!") "Non attirare l'attenzione dei Mifiosi su di te!\n"
p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" "Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
"Per votare, scrivi `/vote username`!") "Per votare, scrivi `/vote username`!\n"
p.message("Tra di voi si nascondono dei Mifiosi.\n" "Tra di voi si nascondono dei Mifiosi.\n"
"Stanateli e uccideteli votando per le persone giuste!") "Stanateli e uccideteli votando per le persone giuste!\n"
p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") "La squadra Royal vince se tutti i Mifiosi sono morti.\n"
p.message("La squadra Royal perde se sono vivi solo Mifiosi.") "La squadra Royal perde se sono vivi solo Mifiosi.\n"
p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per usare il tuo " "Scrivi in questa chat `{0} SPECIAL nomeutente` per usare il tuo "
" potere di detective e indagare sul ruolo di qualcuno per un giorno.") " potere di detective e indagare sul ruolo di qualcuno per un giorno."
.format(g.groupid))
else: else:
p.role = 0 p.role = 0
p.special = True p.special = True
p.message("Sei stato assegnato alla squadra *ROYAL*.") p.message("Sei stato assegnato alla squadra \U0001F610 *ROYAL*.\n"
p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" "Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
"Per votare, scrivi `/vote username`!") "Per votare, scrivi `/vote username`!\n"
p.message("Tra di voi si nascondono dei Mifiosi.\n" "Tra di voi si nascondono dei Mifiosi.\n"
"Stanateli e uccideteli votando per le persone giuste!") "Stanateli e uccideteli votando per le persone giuste!\n"
p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") "La squadra Royal vince se tutti i Mifiosi sono morti.\n"
p.message("La squadra Royal perde se sono vivi solo Mifiosi.") "La squadra Royal perde se sono vivi solo Mifiosi.")
g.addplayer(p) g.addplayer(p)
g.message(p.username + " si è unito alla partita!") g.message(p.username + " si è unito alla partita!")
else:
g.message("\u26A0\uFE0F Non puoi unirti alla partita.\n"
"La fase di unione è terminata o ti sei già unito in precedenza.")
elif t['text'].startswith("/status"): elif t['text'].startswith("/status"):
g.message(g.status()) g.message(g.status() + "\n" + g.displaycount())
g.message(g.displaycount()) p = g.findid(t['from']['id'])
if p.role == 1:
p.message(g.mifiastatus())
elif t['text'].startswith("/fullstatus"): elif t['text'].startswith("/fullstatus"):
if t['from']['id'] == g.adminid: if t['from']['id'] == g.adminid:
<<<<<<< HEAD
g.adminmessage(g.fullstatus()) g.adminmessage(g.fullstatus())
g.adminmessage(g.displaycount()) g.adminmessage(g.displaycount())
=======
g.adminmessage(g.fullstatus() + "\n" + g.displaycount())
else:
g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi vedere lo status completo.")
>>>>>>> 6a580d30baa57bd0c46db6953c19f07ee865ac5e
elif t['text'].startswith("/save"): elif t['text'].startswith("/save"):
if t['from']['id'] == g.adminid: if t['from']['id'] == g.adminid:
g.save() g.save()
g.message("Partita salvata!\n_Funzione instabile, speriamo che non succedano casini..._") g.message("Partita salvata!\n_Funzione instabile, speriamo che non succedano casini..._")
else:
g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi salvare la partita.")
elif t['text'].startswith("/endday"): elif t['text'].startswith("/endday"):
if t['from']['id'] == g.adminid: if t['from']['id'] == g.adminid:
g.endday() g.endday()
g.message(g.status())
elif t['text'].startswith("/vote"):
username = t['text'].split(' ')
if len(username) > 1 and g.findusername(username[1]) is not None:
voter = g.findid(t['from']['id'])
if voter.alive:
voter.votedfor = username[1]
g.message("Hai votato per " + username[1] + ".")
else:
g.message("I morti non votano.")
else: else:
g.message("La persona selezionata non esiste.") g.message("\u26A0\uFE0F Non sei il creatore della partita; non puoi finire il giorno.")
elif t['text'].startswith("/vote"):
if not g.joinphase:
username = t['text'].split(' ')
if len(username) > 1 and g.findusername(username[1]) is not None:
voter = g.findid(t['from']['id'])
if voter.alive:
voter.votedfor = username[1]
g.message("Hai votato per " + username[1] + ".")
else:
g.message("_La tua votazione riecheggia nel nulla._\n"
"\u26A0\uFE0F Sei morto, e i morti non votano.")
else:
g.message("\u26A0\uFE0F La persona selezionata non esiste.")
else:
g.message("\u26A0\uFE0F La partita non è ancora iniziata; non puoi votare.")
elif t['text'].startswith("/endjoin"):
g.endjoin()