From: CMDR furrycat Date: Fri, 7 Oct 2016 14:08:16 +0000 (+0100) Subject: Fix permissions for managing announcements. X-Git-Url: http://git.furryclan.net/?a=commitdiff_plain;h=9f194c290f822fb4bd078320fd8ba5d1952c4f39;p=furrycat%2Fcatbot.git Fix permissions for managing announcements. --- diff --git a/bot.py b/bot.py index a5d4ff3..ee4ae00 100755 --- a/bot.py +++ b/bot.py @@ -719,7 +719,7 @@ def do_feeds(): yield from asyncio.sleep(rsstime.value) @asyncio.coroutine -def can_manage_announcements(member, channel, command, **args): +def can_manage_announcements(author, channel, command, **args): # Anyone can list announcements. if command == 'list': log.debug('Anyone can list announcements.') @@ -735,25 +735,27 @@ def can_manage_announcements(member, channel, command, **args): # Anyone on the server can show details of an announcement. if command == 'show': if announcement is not None: - if announcement['member_id'] == member.id: + if announcement['member_id'] == author.id: log.debug('Anyone can show own announcements.') return announcement if announcement['channel_id'] != 'private': server = client.get_server(announcement['server_id']) if server is not None: + member = server.get_member(author.id) if member in server.members: log.debug('Member {} on server {} can show announcement {}.'.format(member.name, server.name, announcement['id'])) return announcement if command in ['delete', 'schedule']: if announcement is not None: - if announcement['member_id'] == member.id: + if announcement['member_id'] == author.id: log.debug('Anyone can manage own announcements.') return announcement if announcement['channel_id'] != 'private': server = client.get_server(announcement['server_id']) announcer = server.get_member(announcement['member_id']) announcer_role = highest_role(announcer.roles) + member = server.get_member(author.id) member_role = highest_role(member.roles) if member_role.position > announcer_role.position: log.debug('Member {} on server {} can edit announcements from lower role.'.format(member.name, server.name))