Name restrictions removed, settings check (...)

Name restrictions have been removed. It no longer force upon the user
the .Name() format. Settings are now checked every boot for consistency.
Slot machine now shows credits left every play
This commit is contained in:
Twentysix 2016-01-03 15:58:04 +01:00
parent bb96050eaf
commit cf5e07851b
3 changed files with 79 additions and 42 deletions

View File

@ -1,6 +1,8 @@
import json
import logging
default_settings = ('{"TRIVIA_ADMIN_ONLY": false, "EDIT_CC_ADMIN_ONLY": false, "PASSWORD": "PASSWORDHERE", "FILTER": true, "CUSTOMCOMMANDS": true, ' +
'"TRIVIAMAXSCORE": 10, "TRIVIADELAY": 15, "LOGGING": true, "EMAIL": "EMAILHERE", "ADMINROLE": "Transistor"}')
logger = logging.getLogger("__main__")
@ -40,3 +42,32 @@ def loadWords():
for line in f:
w += line
return w
def loadAndCheckSettings():
to_delete = []
try:
current_settings = fileIO("settings.json", "load")
default = json.loads(default_settings)
if current_settings.keys() != default.keys():
logger.warning("Something wrong detected with settings.json. Starting check...")
for field in default:
if field not in current_settings:
logger.info("Adding " + field + " field.")
current_settings[field] = default[field]
for field in current_settings:
if field not in default:
logger.info("Removing " + field + " field.")
to_delete.append(field)
for field in to_delete:
del current_settings[field]
logger.warning("Your settings.json was deprecated (missing or useless fields detected). I fixed it. " +
"If the file was missing any field I've added it and put default values. You might want to check it.")
fileIO("settings.json", "save", current_settings)
return current_settings
except IOError:
fileIO("settings.json", "save", json.loads(default_settings))
logger.error("Your settings.json is missing. I've created a new one. Edit it with your settings and restart me.")
exit(1)
except:
logger.error("Your settings.json seems to be invalid. Check it. If you're unable to fix it delete it and I'll create a new one the next start.")
exit(1)

View File

@ -204,8 +204,10 @@ async def slotMachine(message, bid):
else:
await client.send_message(message.channel, "{}{} `Nothing! Lost bet.` ".format(display_reels, message.author.mention))
withdrawMoney(message.author.id, bid)
await client.send_message(message.channel, "`Credits left: {}`".format(str(checkBalance(message.author.id))))
return True
addMoney(message.author.id, bid)
await client.send_message(message.channel, "`Current credits: {}`".format(str(checkBalance(message.author.id))))
#######################################

50
red.py
View File

@ -26,8 +26,6 @@ import youtubeparser
from sys import modules
settings = dataIO.fileIO("settings.json", "load")
help = """**Commands list:**
!flip - Flip a coin
!rps [rock or paper o scissors] - Play rock paper scissors
@ -112,12 +110,14 @@ async def on_message(message):
await talk(message)
if message.channel.id not in shush_list:
if message.content.lower() == settings["NAME"].lower() + "?":
await client.send_message(message.channel, "`" + choice(greetings) + "`")
elif message.content == settings["NAME"].upper():
if message.content == client.user.name.upper() or message.content == client.user.name.upper() + "?":
await client.send_message(message.channel, "`" + choice(greetings_caps) + "`")
elif message.content.lower() == client.user.name.lower() + "?":
await client.send_message(message.channel, "`" + choice(greetings) + "`")
elif message.content == client.user.mention + " ?" or message.content == client.user.mention + "?":
await client.send_message(message.channel, "`" + choice(greetings) + "`")
elif message.content == "!flip":
await client.send_message(message.channel, "`" + settings["NAME"] + " flips a coin and... " + choice(["HEADS!`", "TAILS!`"]))
await client.send_message(message.channel, "*flips a coin and... " + choice(["HEADS!*", "TAILS!*"]))
elif message.content.startswith("!rps"):
await rpsgame(message)
elif message.content == "!proverb":
@ -247,11 +247,8 @@ async def on_message(message):
@client.async_event
async def on_ready():
logger.info(settings["NAME"] + " is online. (" + client.user.id + ")")
logger.info("I'm online " + "(" + client.user.id + ")")
await gameSwitcher.changeGame(now=True)
if client.user.name != settings["NAME"]:
name = "." + settings["NAME"] + "()"
await client.edit_profile(settings["PASSWORD"], username=name)
# cns = threading.Thread(target=console, args=[])
# cns.start() # console, WIP
@ -951,9 +948,13 @@ async def sendPlaylist(message):
async def shutdown(message):
if isMemberAdmin(message):
await client.send_message(message.channel, "`" + settings["NAME"] + " shutting down... See you soon.` :hand:")
await client.send_message(message.channel, client.user.name + " shutting down... See you soon. :hand:")
await client.logout()
try:
exit(1)
except SystemExit: #clean exit
logger.info("Shutting down as requested by " + message.author.id + "...")
pass
else:
await client.send_message(message.channel, "`I don't take orders from you.`")
@ -1041,13 +1042,9 @@ async def changeName(message):
msg = message.content.split()
if len(msg) == 2:
try:
name = "." + msg[1] + "()"
await client.edit_profile(settings["PASSWORD"], username=name)
settings["NAME"] = msg[1]
dataIO.fileIO("settings.json", "save", settings)
logger.info("Saved settings.")
except:
pass
await client.edit_profile(settings["PASSWORD"], username=msg[1])
except Exception as e:
print(e)
else:
await client.send_message(message.channel, "`!name [new name]`")
else:
@ -1135,10 +1132,6 @@ def console():
traceback.print_exc()
print("\n")
logger = loggerSetup()
dataIO.logger = logger
def loadDataFromFiles(loadsettings=False):
global proverbs, commands, trivia_questions, badwords, badwords_regex, shush_list
@ -1152,7 +1145,7 @@ def loadDataFromFiles(loadsettings=False):
# logger.info("Loaded " + str(len(trivia_questions)) + " questions.")
badwords = dataIO.fileIO("filter.json", "load")
logger.info("Loaded " + str(len(badwords)) + " words.")
logger.info("Loaded " + str(len(badwords)) + " lists of filtered words.")
badwords_regex = dataIO.fileIO("regex_filter.json", "load")
logger.info("Loaded " + str(len(badwords_regex)) + " regex lists.")
@ -1164,6 +1157,14 @@ def loadDataFromFiles(loadsettings=False):
global settings
settings = dataIO.fileIO("settings.json", "load")
def main():
global ball, greetings, greetings_caps, stopwatches, trivia_sessions, message, gameSwitcher, uptime_timer, musicPlayer, currentPlaylist
global logger, settings
logger = loggerSetup()
dataIO.logger = logger
settings = dataIO.loadAndCheckSettings()
loadDataFromFiles()
@ -1192,3 +1193,6 @@ musicPlayer = None
currentPlaylist = None
client.run(settings["EMAIL"], settings["PASSWORD"])
if __name__ == '__main__':
main()