Пример #1
0
    def on_ready(self, data):
        self.mind.svc_message('Connection to discord established.')

        self.gateway = data.get('_trace', ('unknown gateway',))[0]

        self.set_meta(data.get('user'))

        for guild in data.get('guilds', []):
            unavailable = guild.get('unavailable', None)

            if unavailable is None or unavailable is False: # it's available!
                server = Server(**guild)
                server.me = property(lambda s: s.get_member(self.user.id))

                self.mind.add_guild(server)

                if self.server_id is None:
                    self.server_id = server.id

                if self.server_id == server.id:
                    def join_fail(err):
                        print(err)

                    def join_success(_, s, channel):
                        self.mind.names(self.mind.nickname, '#' + channel.name.replace(' ', '_'), [member.name.replace(' ', '_') for member in channel.members])
                        self.mind.topic(self.mind.nickname, '#' + channel.name.replace(' ', '_'), channel.topic)

                    for chan in server.channels:
                        if str(chan.type) != 'text':
                            continue
                        if not chan.permissions_for(chan.server.get_member(self.id)).read_messages:
                            continue
                        d = self.realm.createGroup(chan.server, chan)
                        d.addCallback(self.mind.userJoined, self.mind)
                        d.addCallback(join_success, server, chan)
                        d.addErrback(join_fail)
                pass
            else:
                self._lazy_guilds = self._lazy_guilds + 1

        for pm in data.get('private_channels', []):
            self.mind.add_private_channel(PrivateChannel(id=pm['id'], user=DiscordUser(**pm['recipient'])))