diff --git a/README.md b/README.md index 3fa035123..d6dc724d7 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ See the [command list](#general-commands) for an even better idea of what this b ### I don't even know what I'm looking at. How do I install this? Do not panic. Follow these steps: - Download the bot and unpack it. -- [Install Python](https://www.python.org/downloads/). This bot needs 3.5.1 32bit or superior. +- [Install Python](https://www.python.org/downloads/). This bot needs 3.5.1 32bit or superior. Remember to check "Add python to path". - [Install Git](https://git-scm.com/download/win), don't forget to check "Use Git from the Windows Command Prompt" - Open the start menu, type cmd, right click and open the command prompt as admin. Now, do: ``` diff --git a/red.py b/red.py index 1ead8dd17..fd408b365 100644 --- a/red.py +++ b/red.py @@ -668,9 +668,13 @@ async def checkFilter(message): #WIP if message.server.id in badwords: for word in badwords[message.server.id]: if msg.find(word.lower()) != -1: - await client.delete_message(message) - logger.info("Message eliminated.") - return True + if canDeleteMessages(message): + await client.delete_message(message) + logger.info("Message eliminated.") + return True + else: + logger.info("Couldn't delete message. I need permissions.") + return False return False async def checkRegex(message): #WIP @@ -679,9 +683,13 @@ async def checkRegex(message): #WIP for pattern in badwords_regex[message.server.id]: rr = re.search(pattern, msg, re.I | re.U) if rr != None: - await client.delete_message(message) - logger.info("Message eliminated. Regex: " + pattern) - return True + if canDeleteMessages(message): + await client.delete_message(message) + logger.info("Message eliminated. Regex: " + pattern) + return True + else: + logger.info("Couldn't delete message. I need permissions.") + return False return False async def twitchCheck(message): @@ -731,8 +739,9 @@ async def playVideo(message): await client.send_message(message.channel, "{} `Invalid link.`".format(message.author.mention)) return False stopMusic() - await client.send_message(message.channel, "`Playing youtube video {} requested by {}`".format(id, message.author.name)) - await client.delete_message(message) + if canDeleteMessages(message): + await client.send_message(message.channel, "`Playing youtube video {} requested by {}`".format(id, message.author.name)) + await client.delete_message(message) musicPlayer = client.voice.create_ytdl_player('https://www.youtube.com/watch?v=' + id, options=youtube_dl_options) musicPlayer.start() #!addfavorite compatibility stuff @@ -1081,16 +1090,19 @@ async def reloadSettings(message): async def cleanup(message): if isMemberAdmin(message): - msg = message.content.split() - if len(msg) == 2: - if msg[1].isdigit(): - n = int(msg[1]) - for x in await client.logs_from(message.channel, limit=n+1): - await client.delete_message(x) + if canDeleteMessages(message): + msg = message.content.split() + if len(msg) == 2: + if msg[1].isdigit(): + n = int(msg[1]) + for x in await client.logs_from(message.channel, limit=n+1): + await client.delete_message(x) + else: + await client.send_message(message.channel, "`!cleanup [number]`") else: await client.send_message(message.channel, "`!cleanup [number]`") else: - await client.send_message(message.channel, "`!cleanup [number]`") + await client.send_message(message.channel, "`I need permissions to delete messages.`") else: await client.send_message(message.channel, "`I don't take orders from you.`") @@ -1103,6 +1115,9 @@ def isMemberAdmin(message): else: return False +def canDeleteMessages(message): + return message.channel.permissions_for(message.server.me).can_manage_messages + ################################################ async def customCommand(message):