return True
@asyncio.coroutine
+def overwrite_permissions(channel, whom, overwrite, *, strict = True):
+ permissions = channel.overwrites_for(whom)
+ if equal_permissions(permissions, overwrite, strict = strict):
+ log.debug('Permissions for {} in {} are already correct.'.format(whom.name, channel.name))
+ return
+ log.info('Setting permissions for {} in {} to {}'.format(whom.name, channel.name, permissions.__dict__))
+ yield from client.edit_channel_permissions(channel, whom, overwrite)
+
+@asyncio.coroutine
def set_rss_permissions(channel_id):
channel = client.get_channel(channel_id)
if channel is None:
log.warning("Can't get channel {} for RSS feeds.".format(channel_id))
return
role = None
- for server_role in channel.server.me.roles:
- if server_role.name == 'Robocat':
- role = server_role
- break
+ # My highest role.
+ role = highest_role(channel.server.me.roles)
if role is not None:
# Permissions for bot.
overwrite = discord.PermissionOverwrite()
overwrite.send_tts_messages = True
overwrite.manage_messages = True
overwrite.attach_files = True
- yield from client.edit_channel_permissions(channel, role, overwrite)
+ yield from overwrite_permissions(channel, role, overwrite, strict = False)
# Permissions for @everyone.
overwrite = discord.PermissionOverwrite()
overwrite.read_messages = True
overwrite.read_message_history = True
overwrite.send_messages = False
overwrite.send_tts_messages = False
- yield from client.edit_channel_permissions(channel, channel.server.default_role, overwrite)
+ yield from overwrite_permissions(channel, channel.server.default_role, overwrite)
@asyncio.coroutine
def do_rss(feed):