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.')
# 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))