mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-27 13:34:28 +00:00
Merge branch 'master' of https://github.com/Steffo99/RoyalBotV2
Conflicts: mifia.py
This commit is contained in:
commit
bef5f70797
3 changed files with 103 additions and 72 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -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
12
db.json
|
@ -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
159
mifia.py
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue