Ensure RSS feed permissions are correct.
authorCMDR furrycat <elite@furrycat.net>
Tue, 20 Sep 2016 12:34:10 +0000 (13:34 +0100)
committerCMDR furrycat <elite@furrycat.net>
Tue, 20 Sep 2016 16:29:04 +0000 (17:29 +0100)
bot.py

diff --git a/bot.py b/bot.py
index 9f0ee75..5fee881 100755 (executable)
--- a/bot.py
+++ b/bot.py
@@ -173,6 +173,32 @@ def set_unassigned(member):
   yield from set_role(member, 'Unassigned')
 
 @asyncio.coroutine
+def set_rss_permissions(feed):
+  channel = client.get_channel(str(feed['channel']))
+  role = None
+  for server_role in channel.server.get_member(client.user.id).roles:
+    if server_role.name == 'Robocat':
+      role = server_role
+      break
+  if role is not None:
+    # Permissions for bot.
+    overwrite = discord.PermissionOverwrite()
+    overwrite.read_messages = True
+    overwrite.read_message_history = True
+    overwrite.send_messages = True
+    overwrite.send_tts_messages = True
+    overwrite.manage_messages = True
+    overwrite.attach_files = True
+    yield from client.edit_channel_permissions(channel, role, overwrite)
+  # 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)
+
+@asyncio.coroutine
 def do_rss(feed):
   date = feed['date'] if 'date' in feed else True
   summary = feed['summary'] if 'summary' in feed else False
@@ -212,6 +238,7 @@ def do_rss(feed):
 def do_feeds(feeds):
   while True:
     for feed in feeds:
+      yield from set_rss_permissions(feed)
       yield from do_rss(feed)
     yield from asyncio.sleep(rsstime)