if sound:
yield from play_greeting(greeting)
+# Discord API 0.13 has is_superset() to do this.
+def equal_permission(x, y, *, strict = True):
+ if x == y:
+ return True
+ if x and not y and not strict:
+ return True
+ return False
+
+# Discord API 0.13 has == to do this.
+def equal_permissions(x, y, *, strict = True):
+ if not equal_permission(x.create_instant_invite, y.create_instant_invite, strict = strict):
+ return False
+ if not equal_permission(x.kick_members, y.kick_members, strict = strict):
+ return False
+ if not equal_permission(x.ban_members, y.ban_members, strict = strict):
+ return False
+ if not equal_permission(x.administrator, y.administrator, strict = strict):
+ return False
+ if not equal_permission(x.manage_channels, y.manage_channels, strict = strict):
+ return False
+ if not equal_permission(x.manage_server, y.manage_server, strict = strict):
+ return False
+ if not equal_permission(x.read_messages, y.read_messages, strict = strict):
+ return False
+ if not equal_permission(x.send_messages, y.send_messages, strict = strict):
+ return False
+ if not equal_permission(x.send_tts_messages, y.send_tts_messages, strict = strict):
+ return False
+ if not equal_permission(x.manage_messages, y.manage_messages, strict = strict):
+ return False
+ if not equal_permission(x.embed_links, y.embed_links, strict = strict):
+ return False
+ if not equal_permission(x.attach_files, y.attach_files, strict = strict):
+ return False
+ if not equal_permission(x.read_message_history, y.read_message_history, strict = strict):
+ return False
+ if not equal_permission(x.mention_everyone, y.mention_everyone, strict = strict):
+ return False
+ if not equal_permission(x.external_emojis, y.external_emojis, strict = strict):
+ return False
+ if not equal_permission(x.connect, y.connect, strict = strict):
+ return False
+ if not equal_permission(x.speak, y.speak, strict = strict):
+ return False
+ if not equal_permission(x.mute_members, y.mute_members, strict = strict):
+ return False
+ if not equal_permission(x.deafen_members, y.deafen_members, strict = strict):
+ return False
+ if not equal_permission(x.move_members, y.move_members, strict = strict):
+ return False
+ if not equal_permission(x.use_voice_activation, y.use_voice_activation, strict = strict):
+ return False
+ if not equal_permission(x.change_nickname, y.change_nickname, strict = strict):
+ return False
+ if not equal_permission(x.manage_nicknames, y.manage_nicknames, strict = strict):
+ return False
+ if not equal_permission(x.manage_roles, y.manage_roles, strict = strict):
+ return False
+ #if not equal_permission(x.manage_webhooks, y.manage_webhooks, strict = strict):
+ #return False
+ #if not equal_permission(x.manage_emojis, y.manage_emojis, strict = strict):
+ #return False
+ return True
+
@asyncio.coroutine
def set_rss_permissions(channel_id):
channel = client.get_channel(channel_id)