From 2a9c64f7aaf0b4af1a9bf826b6cc2a1a6b599103 Mon Sep 17 00:00:00 2001 From: phxntxm Date: Thu, 7 Jul 2016 17:10:24 -0500 Subject: [PATCH] Modified file to match PEP-8 --- bot.py | 202 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 125 insertions(+), 77 deletions(-) diff --git a/bot.py b/bot.py index ddddc80..79eedfb 100644 --- a/bot.py +++ b/bot.py @@ -16,39 +16,55 @@ import yaml import playlist from threading import Timer -with open("/home/phxntx5/public_html/bot/config.yml","r") as f: +with open("/home/phxntx5/public_html/bot/config.yml", "r") as f: global_config = yaml.load(f) botDescription = global_config.get("description") commandPrefix = global_config.get("command_prefix") -#Custom predicates + +# Custom predicates def isOwner(): def predicate(ctx): - return ctx.message.author.id==ownerID + return ctx.message.author.id == ownerID + return commands.check(predicate) + + def isMod(): def predicate(ctx): return ctx.message.author.top_role.permissions.kick_members + return commands.check(predicate) + + def isAdmin(): def predicate(ctx): return ctx.message.author.top_role.permissions.manage_server + return commands.check(predicate) + + def isPM(): def predicate(ctx): return ctx.message.channel.is_private + return commands.check(predicate) + + def battled(): def predicate(ctx): - return ctx.message.author==battleP2 + return ctx.message.author == battleP2 + return commands.check(predicate) - -bot = commands.Bot(command_prefix=commandPrefix,description=botDescription) + + +bot = commands.Bot(command_prefix=commandPrefix, description=botDescription) music = playlist.Music(bot) bot.add_cog(music) -#Turn battling off, reset users + +# Turn battling off, reset users def battlingOff(): global battleP1 global battleP2 @@ -57,36 +73,40 @@ def battlingOff(): battleP1 = "" battleP2 = "" -#Bot event overrides + +# Bot event overrides @bot.event async def on_ready(): - #Change the status upon connection to the default status - game = discord.Game(name=defaultStatus,type=0) + # Change the status upon connection to the default status + game = discord.Game(name=defaultStatus, type=0) await bot.change_status(game) cursor = connection.cursor() - + '''success = checkSetup(cursor) if success=="Error: default_db": - await bot-send_message(determineId(ownerID),("The bot ran into an error while checking the database information." - "Please double check the config.yml file, make sure the database is created, and the user has access to the database"))''' - + fmt = "The bot ran into an error while checking the database information." + await bot.send_message(determineId(ownerID),fmt)''' + cursor.execute('use {0}'.format(db_default)) cursor.execute('select channel_id from restart_server where id=1') result = cursor.fetchone()['channel_id'] - if int(result)!=0: - await bot.send_message(determineId(result),"I have just finished restarting!") + if int(result) != 0: + await bot.send_message(determineId(result), "I have just finished restarting!") cursor.execute('update restart_server set channel_id=0 where id=1') connection.commit() + @bot.event async def on_member_join(member): await bot.say("Welcome to the '{0.server.name}' server {0.mention}!".format(member)) + @bot.event async def on_member_remove(member): await bot.say("{0} has left the server, I hope it wasn't because of something I said :c".format(member)) -#Bot commands + +# Bot commands @bot.command() async def joke(): try: @@ -97,6 +117,7 @@ async def joke(): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) @isOwner() async def restart(ctx): @@ -113,6 +134,7 @@ async def restart(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) @isOwner() async def py(ctx): @@ -128,11 +150,13 @@ async def py(ctx): else: def r(v): loop.create_task(bot.say("```{0}```".format(v))) + exec(match_multi[0]) except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) @isOwner() async def shutdown(ctx): @@ -145,6 +169,7 @@ async def shutdown(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command() @isOwner() async def avatar(content): @@ -156,6 +181,7 @@ async def avatar(content): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command() @isOwner() async def name(newNick): @@ -169,7 +195,8 @@ async def name(newNick): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) -@bot.command(pass_context=True,no_pm=True) + +@bot.command(pass_context=True, no_pm=True) @isOwner() async def leave(ctx): try: @@ -179,9 +206,10 @@ async def leave(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command() @isMod() -async def status(*stat : str): +async def status(*stat: str): try: newStatus = ' '.join(stat) game = discord.Game(name=newStatus, type=0) @@ -191,9 +219,10 @@ async def status(*stat : str): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) @isMod() -async def say(ctx,*msg : str): +async def say(ctx, *msg: str): try: msg = ' '.join(msg) await bot.say(msg) @@ -201,15 +230,16 @@ async def say(ctx,*msg : str): except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) - + + @bot.command() -async def urban(*msg : str): +async def urban(*msg: str): try: term = '+'.join(msg) url = "http://api.urbandictionary.com/v0/define?term={}".format(term) response = urllib.request.urlopen(url) data = json.loads(response.read().decode('utf-8')) - if len(data['list'])==0: + if len(data['list']) == 0: await bot.say("No result with that term!") else: await bot.say(data['list'][0]['definition']) @@ -218,16 +248,17 @@ async def urban(*msg : str): except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) - + + @bot.command(pass_context=True) -async def derpi(ctx,*search : str): +async def derpi(ctx, *search: str): try: if len(search) > 0: url = 'https://derpibooru.org/search.json?q=' query = '+'.join(search) url += query if ctx.message.channel.id in nsfwChannels: - url+=",+explicit&filter_id=95938" + url += ",+explicit&filter_id=95938" # url should now be in the form of url?q=search+terms # Next part processes the json format, and saves the data in useful lists/dictionaries response = urllib.request.urlopen(url) @@ -253,6 +284,7 @@ async def derpi(ctx,*search : str): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) async def roll(ctx): try: @@ -263,6 +295,7 @@ async def roll(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(no_pm=True) @battled() async def accept(): @@ -273,15 +306,16 @@ async def accept(): fmt = battleWins[random.randint(0, len(battleWins) - 1)] if num <= 50: await bot.say(fmt.format(battleP1.mention, battleP2.mention)) - updateBattleRecords(battleP1,battleP2) + updateBattleRecords(battleP1, battleP2) elif num > 50: await bot.say(fmt.format(battleP2.mention, battleP1.mention)) - updateBattleRecords(battleP2,battleP1) + updateBattleRecords(battleP2, battleP1) battlingOff() except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(no_pm=True) @battled() async def decline(): @@ -289,12 +323,13 @@ async def decline(): if not battling: return await bot.say("{0} has chickened out! {1} wins by default!".format(battleP2.mention, battleP1.mention)) - updateBattleRecords(battleP1,battleP2) + updateBattleRecords(battleP1, battleP2) battlingOff() except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + @bot.command(pass_context=True) async def commands(ctx): try: @@ -302,8 +337,8 @@ async def commands(ctx): fmt += 'Here is a list of commands that you have access to ' fmt += '(please note that this only includes the commands that you have access to):' await bot.whisper(fmt.format(ctx.message, bot)) - - fmt2 = 'I have just sent you a private message, containing all the commands you have access to {0.author.mention}!' + + fmt2 = 'I have just sent you a PM, containing all the commands you have access to {0.author.mention}!' ocmds = 'Commands for everyone: ```' for com, act in openCommands.items(): ocmds += commandPrefix + com + ": " + act + "\n\n" @@ -340,7 +375,8 @@ async def commands(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) -@bot.command(pass_context=True,no_pm=True) + +@bot.command(pass_context=True, no_pm=True) async def battle(ctx): try: global battleP1 @@ -372,7 +408,8 @@ async def battle(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) -@bot.command(pass_context=True,no_pm=True) + +@bot.command(pass_context=True, no_pm=True) async def boop(ctx): try: if len(ctx.message.mentions) == 0: @@ -413,8 +450,9 @@ async def boop(ctx): cursor.execute(sql) # Booper's table does not exist, need to create the table else: - sql = "create table `" + str( - booper.id) + "` (`id` varchar(255) not null,`amount` int(11) not null,primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin" + sql = "create table `" + str(booper.id) + \ + "` (`id` varchar(255) not null,`amount` int(11) not null" + \ + ",primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin" cursor.execute(sql) sql = "insert into `" + str(booper.id) + "` (id,amount) values ('" + str(boopee.id) + "',1)" cursor.execute(sql) @@ -425,7 +463,8 @@ async def boop(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) -@bot.command(pass_context=True,no_pm=True) + +@bot.command(pass_context=True, no_pm=True) async def mostboops(ctx): try: cursor = connection.cursor() @@ -434,13 +473,15 @@ async def mostboops(ctx): cursor.execute(sql) result = cursor.fetchone() member = determineId(result.get('id')) - await bot.say("{0} you have booped {1} the most amount of times, coming in at {2} times".format(ctx.message.author.mention,member.mention,result.get('amount'))) + await bot.say("{0} you have booped {1} the most amount of times, coming in at {2} times".format( + ctx.message.author.mention, member.mention, result.get('amount'))) connection.commit() except Exception as e: fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) -@bot.command(pass_context=True,no_pm=True) + +@bot.command(pass_context=True, no_pm=True) async def mostwins(ctx): try: members = ctx.message.server.members @@ -459,26 +500,26 @@ async def mostwins(ctx): winAmt = int(record.split('-')[0]) loseAmt = int(record.split('-')[1]) - percentage = winAmt / ( winAmt + loseAmt ) + percentage = winAmt / (winAmt + loseAmt) position = count indexPercentage = 0 if count > 0: - indexRecord = re.search('\d+-\d+',fmt[position-1]).group(0) + indexRecord = re.search('\d+-\d+', fmt[position - 1]).group(0) indexWin = int(indexRecord.split('-')[0]) indexLose = int(indexRecord.split('-')[1]) indexPercentage = indexWin / (indexWin + indexLose) while position > 0 and indexPercentage < percentage: position -= 1 - indexRecord = re.search('\d+-\d+',fmt[position-1]).group(0) + indexRecord = re.search('\d+-\d+', fmt[position - 1]).group(0) indexWin = int(indexRecord.split('-')[0]) indexLose = int(indexRecord.split('-')[1]) indexPercentage = indexWin / (indexWin + indexLose) - fmt.insert(position,"{0} has a battling record of {1}".format(member.name,record)) - count+=1 - for index in range(0,len(fmt)): - fmt[index] = "{0}) {1}".format(index+1,fmt[index]) + fmt.insert(position, "{0} has a battling record of {1}".format(member.name, record)) + count += 1 + for index in range(0, len(fmt)): + fmt[index] = "{0}) {1}".format(index + 1, fmt[index]) connection.commit() if len(fmt) == 0: await bot.say("```No battling records found from any members in this server```") @@ -488,9 +529,10 @@ async def mostwins(ctx): fmt = 'An error occurred while processing this request: ```py\n{}: {}\n```' await bot.say(fmt.format(type(e).__name__, e)) + def determineId(ID): if type(ID) is int: - ID=str(ID) + ID = str(ID) member = discord.utils.find(lambda m: m.id == ID, bot.get_all_members()) if member is not None: return member @@ -504,40 +546,42 @@ def determineId(ID): if channel is not None: return channel -def updateBattleRecords(winner,loser): + +def updateBattleRecords(winner, loser): cursor = connection.cursor() cursor.execute('use {0}'.format(db_default)) - - #Update winners records + + # Update winners records sql = "select record from battle_records where id={0}".format(winner.id) cursor.execute(sql) result = cursor.fetchone() if result is not None: result = result['record'].split('-') - result[0] = str(int(result[0])+1) - sql = "update battle_records set record ='{0}' where id='{1}'".format("-".join(result),winner.id) + result[0] = str(int(result[0]) + 1) + sql = "update battle_records set record ='{0}' where id='{1}'".format("-".join(result), winner.id) cursor.execute(sql) else: sql = "insert into battle_records (id,record) values ('{0}','1-0')".format(winner.id) cursor.execute(sql) - + connection.commit() - - #Update losers records + + # Update losers records sql = "select record from battle_records where id={0}".format(loser.id) cursor.execute(sql) result = cursor.fetchone() if result is not None: result = result['record'].split('-') - result[1] = str(int(result[1])+1) - sql = "update battle_records set record ='{0}' where id='{1}'".format('-'.join(result),loser.id) + result[1] = str(int(result[1]) + 1) + sql = "update battle_records set record ='{0}' where id='{1}'".format('-'.join(result), loser.id) cursor.execute(sql) else: sql = "insert into battle_records (id,record) values ('{0}','0-1')".format(loser.id) cursor.execute(sql) - + connection.commit() + def checkSetup(cursor): try: cursor.execute('use {}'.format(db_default)) @@ -547,15 +591,17 @@ def checkSetup(cursor): try: cursor.execute('describe battle_records') except pymysql.ProgrammingError: - #battle_records does not exist, create it - sql = "create table `battle_records` (`id` varchar(32) not null,`record` varchar(32) not null,primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin" + # battle_records does not exist, create it + sql = "create table `battle_records` (`id` varchar(32) not null,`record` varchar(32) not null," + \ + "primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin" cursor.execute(sql) connection.commit() try: cursor.execute('describe restart_server') except pymysql.ProgrammingError: - #restart_server does not exist, create it - sql = "create table `restart_server` (`id` int(11) not null auto_increment,`channel_id` varchar(32) not null,primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin;" + # restart_server does not exist, create it + sql = "create table `restart_server` (`id` int(11) not null auto_increment,`channel_id` varchar(32)" + \ + "not null,primary key (`id`)) engine=InnoDB default charset=utf8 collate=utf8_bin;" cursor.execute(sql) connection.commit() sql = "insert into restart_server (id,channel_id) values (1,'0')" @@ -565,32 +611,34 @@ def checkSetup(cursor): cursor.execute('use {}'.format(db_boops)) except pymysql.OperationalError: return "Error: boop_db" - + + db_default = global_config.get("db_default") db_boops = global_config.get("db_boops") nsfwChannels = global_config.get("nsfw_channel") connection = pymysql.connect(host=global_config.get("db_host"), user=global_config.get("db_user"), -password=global_config.get("db_user_pass"),charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor) + password=global_config.get("db_user_pass"), charset='utf8mb4', + cursorclass=pymysql.cursors.DictCursor) -battling=False -battleP1=None -battleP2=None +battling = False +battleP1 = None +battleP2 = None -battleWins = global_config.get("battleWins",[]) -defaultStatus = global_config.get("default_status","") -botToken = global_config.get("bot_token","") -ownerID = global_config.get("owner_id","") +battleWins = global_config.get("battleWins", []) +defaultStatus = global_config.get("default_status", "") +botToken = global_config.get("bot_token", "") +ownerID = global_config.get("owner_id", "") -modCommands = global_config.get("modCommands",{}) -adminCommands = global_config.get("adminCommands",{}) -openCommands = global_config.get("openCommands",{}) -ownerCommands = global_config.get("ownerCommands",{}) -voiceCommands = global_config.get("voiceCommands",{}) +modCommands = global_config.get("modCommands", {}) +adminCommands = global_config.get("adminCommands", {}) +openCommands = global_config.get("openCommands", {}) +ownerCommands = global_config.get("ownerCommands", {}) +voiceCommands = global_config.get("voiceCommands", {}) getter = re.compile(r'`(?!`)(.*?)`') -multi = re.compile(r'```(.*?)```',re.DOTALL) +multi = re.compile(r'```(.*?)```', re.DOTALL) loop = asyncio.get_event_loop() try: bot.run(botToken) except: - quit() \ No newline at end of file + quit()