コード例 #1
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
    def test_handle_categorize_channel(self):
        name = "puzzle"
        channel = Channel(id=22222, type=ChannelType.GUILD_VOICE, name=name)
        self.mock_client.guilds_channels_create.return_value = channel
        unassigned_voice_category = Channel(
            id=33333,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_VOICE_CATEGORY,
        )

        meta_category = Channel(
            id=44444,
            type=ChannelType.GUILD_CATEGORY,
            name="meta",
        )

        self.mock_client.guilds_channels_list.return_value = {
            unassigned_voice_category.id: unassigned_voice_category,
            meta_category.id: meta_category,
        }

        self.assertEqual(
            self.service.create_audio_channel(DISCORD_GUILD_ID, name,
                                              DISCORD_VOICE_CATEGORY),
            channel.id,
        )

        self.service.categorize_channel(DISCORD_GUILD_ID, channel.id, "meta")
        self.mock_client.channels_modify.assert_has_calls([
            mock.call(channel.id, parent_id=meta_category.id),
        ])
コード例 #2
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
    def test_archive_and_unarchive_channel(self):
        name = "channel-name"
        channel = Channel(id=22222, type=ChannelType.GUILD_VOICE, name=name)
        self.mock_client.guilds_channels_create.return_value = channel
        self.assertEqual(
            self.service.create_audio_channel(DISCORD_GUILD_ID, name),
            channel.id)

        archived = Channel(
            id=33333,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_ARCHIVE_CATEGORY,
        )
        self.mock_client.guilds_channels_list.return_value = {
            archived.id: archived
        }
        self.service.archive_channel(DISCORD_GUILD_ID, channel.id,
                                     DISCORD_ARCHIVE_CATEGORY)

        parent = Channel(
            id=44444,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_TEXT_CATEGORY,
        )
        self.mock_client.guilds_channels_list.return_value = {
            parent.id: parent
        }
        self.service.unarchive_text_channel(DISCORD_GUILD_ID, channel.id,
                                            DISCORD_TEXT_CATEGORY)
        self.mock_client.channels_modify.assert_has_calls([
            mock.call(channel.id, parent_id=archived.id),
            mock.call(channel.id, parent_id=parent.id),
        ])
コード例 #3
0
ファイル: channel.py プロジェクト: elderlabs/BetterDisco
def test_deprecated_nsfw_channel():
    channel = Channel(name='nsfw-testing', type=ChannelType.GUILD_TEXT)
    assert channel.is_nsfw

    channel = Channel(name='nsfw-testing', type=ChannelType.GUILD_VOICE)
    assert not channel.is_nsfw

    channel = Channel(name='nsfw_testing', type=ChannelType.GUILD_TEXT)
    assert not channel.is_nsfw
コード例 #4
0
ファイル: test_channel.py プロジェクト: winterismute/disco
    def test_nsfw_channel(self):
        channel = Channel(name='nsfw-testing', type=ChannelType.GUILD_TEXT)
        self.assertTrue(channel.is_nsfw)

        channel = Channel(name='nsfw-testing', type=ChannelType.GUILD_VOICE)
        self.assertFalse(channel.is_nsfw)

        channel = Channel(name='nsfw_testing', type=ChannelType.GUILD_TEXT)
        self.assertFalse(channel.is_nsfw)
コード例 #5
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
 def test_create_audio_channel_creates_parent_category(self):
     parent = Channel(
         id=22222,
         type=ChannelType.GUILD_CATEGORY,
         name=DISCORD_TEXT_CATEGORY,
     )
     self.mock_client.guilds_channels_create.return_value = parent
     name = "channel-name"
     self.service.create_audio_channel(DISCORD_GUILD_ID, name,
                                       DISCORD_VOICE_CATEGORY)
     self.mock_client.guilds_channels_create.assert_has_calls([
         # Create parent category channel first.
         mock.call(
             DISCORD_GUILD_ID,
             ChannelType.GUILD_CATEGORY,
             DISCORD_VOICE_CATEGORY,
             parent_id=None,
         ),
         # Create voice channel under category created above.
         mock.call(
             DISCORD_GUILD_ID,
             ChannelType.GUILD_VOICE,
             name,
             parent_id=parent.id,
         ),
     ])
コード例 #6
0
ファイル: client.py プロジェクト: Lymia/rowboat
    def guilds_channels_create(self,
            guild,
            name,
            channel_type,
            bitrate=None,
            user_limit=None,
            permission_overwrites=[],
            parent_id=None,
            reason=None):

        payload = {
            'name': name,
            'channel_type': channel_type,
            'permission_overwrites': [i.to_dict() for i in permission_overwrites],
            'parent_id': parent_id,
        }

        if channel_type == 'text':
            pass
        elif channel_type == 'voice':
            if bitrate is not None:
                payload['bitrate'] = bitrate

            if user_limit is not None:
                payload['user_limit'] = user_limit
        else:
            # TODO: better error here?
            raise Exception('Invalid channel type: {}'.format(channel_type))

        r = self.http(
            Routes.GUILDS_CHANNELS_CREATE,
            dict(guild=guild),
            json=payload,
            headers=_reason_header(reason))
        return Channel.create(self.client, r.json(), guild_id=guild)
コード例 #7
0
 def channels_modify(self, channel, reason=None, **kwargs):
     r = self.http(
         Routes.CHANNELS_MODIFY,
         dict(channel=channel),
         json=kwargs,
         headers=_reason_header(reason))
     return Channel.create(self.client, r.json())
コード例 #8
0
    def guilds_channels_create(
            self,
            guild,
            channel_type,
            name,
            bitrate=None,
            user_limit=None,
            permission_overwrites=[],
            nsfw=None,
            parent_id=None,
            position=None,
            reason=None):

        payload = {
            'name': name,
            'type': channel_type.value if isinstance(channel_type, EnumAttr) else channel_type,
            'permission_overwrites': [i.to_dict() for i in permission_overwrites],
            'parent_id': parent_id,
        }

        payload.update(optional(
            nsfw=nsfw,
            bitrate=bitrate,
            user_limit=user_limit,
            position=position,
        ))

        r = self.http(
            Routes.GUILDS_CHANNELS_CREATE,
            dict(guild=guild),
            json=payload,
            headers=_reason_header(reason))
        return Channel.create(self.client, r.json(), guild_id=guild)
コード例 #9
0
 def test_create_text_channel_creates_parent_category(self):
     parent = Channel(
         id=22222,
         type=ChannelType.GUILD_CATEGORY,
         name=FakeDjangoSettings.DISCORD_PUZZLE_CATEGORY,
     )
     self.mock_client.guilds_channels_create.return_value = parent
     name = "channel-name"
     self.service.create_text_channel(name)
     self.mock_client.guilds_channels_create.assert_has_calls(
         [
             # Create parent category channel first.
             mock.call(
                 FakeDjangoSettings.DISCORD_GUILD_ID,
                 ChannelType.GUILD_CATEGORY,
                 FakeDjangoSettings.DISCORD_PUZZLE_CATEGORY,
                 parent_id=None,
             ),
             # Create text channel under category created above.
             mock.call(
                 FakeDjangoSettings.DISCORD_GUILD_ID,
                 ChannelType.GUILD_TEXT,
                 name,
                 parent_id=parent.id,
             ),
         ]
     )
コード例 #10
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
    def test_handle_puzzle_rename(self):
        name = "channel-name"
        channel = Channel(id=22222, type=ChannelType.GUILD_TEXT, name=name)

        new_name = "channel-new-name"
        self.service.handle_puzzle_rename(channel.id, new_name)
        self.mock_client.channels_modify.assert_called_once_with(channel.id,
                                                                 name=new_name)
コード例 #11
0
    def test_delete_audio_channel(self):
        name = "channel-name"
        channel = Channel(id=22222, type=ChannelType.GUILD_VOICE, name=name)
        self.mock_client.guilds_channels_create.return_value = channel
        self.assertEqual(self.service.create_audio_channel(name), channel.id)

        self.mock_client.guilds_channels_list.return_value = {channel.id: channel}
        self.service.delete_audio_channel(channel.id)
        self.mock_client.channels_delete.assert_called_once_with(channel.id)
コード例 #12
0
    def test_archive_channel_category_full(self):
        puzzles = Channel(
            id=33332,
            type=ChannelType.GUILD_CATEGORY,
            name=FakeDjangoSettings.DISCORD_PUZZLE_CATEGORY,
        )
        archive = Channel(
            id=33333,
            type=ChannelType.GUILD_CATEGORY,
            name=FakeDjangoSettings.DISCORD_ARCHIVE_CATEGORY,
        )

        channels_list = {archive.id: archive, puzzles.id: puzzles}
        # Make archive full.
        for i in range(MAX_CHANNELS_PER_CATEGORY):
            channels_list[archive.id + i + 1] = Channel(
                id=archive.id + i + 1,
                type=ChannelType.GUILD_TEXT,
                name="child",
                parent_id=archive.id,
            )

        # Create channel with no parent.
        channel1 = Channel(id=22222, type=ChannelType.GUILD_VOICE, name="channel1")

        # The next channel archived should create a new archive.
        new_archive = Channel(
            id=44444,
            type=ChannelType.GUILD_CATEGORY,
            name=FakeDjangoSettings.DISCORD_ARCHIVE_CATEGORY,
        )
        self.mock_client.guilds_channels_list.return_value = channels_list
        self.mock_client.guilds_channels_create.return_value = new_archive
        self.service.archive_channel(channel1.id)
        self.mock_client.guilds_channels_create.assert_called_once_with(
            FakeDjangoSettings.DISCORD_GUILD_ID,
            ChannelType.GUILD_CATEGORY,
            FakeDjangoSettings.DISCORD_ARCHIVE_CATEGORY,
            parent_id=None,
        )

        # Unarchive to make archive not full.
        channels_list[new_archive.id] = new_archive
        self.mock_client.guilds_channels_list.return_value = channels_list
        self.service.unarchive_channel(archive.id + 1)

        # Archive another channel. This should go inside the first archive.
        channels_list.pop(archive.id + 1)
        self.mock_client.guilds_channels_list.return_value = channels_list
        channel2 = Channel(id=22223, type=ChannelType.GUILD_VOICE, name="channel2")
        self.service.archive_channel(channel2.id)

        self.mock_client.channels_modify.assert_has_calls(
            [
                mock.call(channel1.id, parent_id=new_archive.id),
                mock.call(archive.id + 1, parent_id=puzzles.id),
                mock.call(channel2.id, parent_id=archive.id),
            ]
        )
コード例 #13
0
    def test_create_text_channel_with_existing_parent_category(self):
        parent = Channel(
            id=22222,
            type=ChannelType.GUILD_CATEGORY,
            name=FakeDjangoSettings.DISCORD_PUZZLE_CATEGORY,
        )
        self.mock_client.guilds_channels_list.return_value = {parent.id: parent}
        name = "channel-name"
        self.service.create_text_channel(name)

        # Skip creating the category and just create the text channel.
        self.mock_client.guilds_channels_create.assert_called_once_with(
            FakeDjangoSettings.DISCORD_GUILD_ID,
            ChannelType.GUILD_TEXT,
            name,
            parent_id=parent.id,
        )
コード例 #14
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
    def test_create_audio_channel_with_existing_parent_category(self):
        parent = Channel(
            id=22222,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_VOICE_CATEGORY,
        )
        self.mock_client.guilds_channels_list.return_value = {
            parent.id: parent
        }
        name = "channel-name"
        self.service.create_audio_channel(DISCORD_GUILD_ID, name,
                                          DISCORD_VOICE_CATEGORY)

        # Skip creating the category and just create the voice channel.
        self.mock_client.guilds_channels_create.assert_called_once_with(
            DISCORD_GUILD_ID,
            ChannelType.GUILD_VOICE,
            name,
            parent_id=parent.id,
        )
コード例 #15
0
ファイル: client.py プロジェクト: sgtlaggy/disco
 def channels_get(self, channel):
     r = self.http(Routes.CHANNELS_GET, dict(channel=channel))
     return Channel.create(self.client, r.json())
コード例 #16
0
ファイル: client.py プロジェクト: sgtlaggy/disco
 def guilds_channels_create(self, guild, **kwargs):
     r = self.http(Routes.GUILDS_CHANNELS_CREATE, dict(guild=guild), json=kwargs)
     return Channel.create(self.client, r.json(), guild_id=guild)
コード例 #17
0
ファイル: client.py プロジェクト: sgtlaggy/disco
 def guilds_channels_list(self, guild):
     r = self.http(Routes.GUILDS_CHANNELS_LIST, dict(guild=guild))
     return Channel.create_map(self.client, r.json(), guild_id=guild)
コード例 #18
0
 def users_me_dms_create(self, recipient_id):
     r = self.http(Routes.USERS_ME_DMS_CREATE, json={
         'recipient_id': recipient_id,
     })
     return Channel.create(self.client, r.json())
コード例 #19
0
 def channels_delete(self, channel, reason=None):
     r = self.http(
         Routes.CHANNELS_DELETE,
         dict(channel=channel),
         headers=_reason_header(reason))
     return Channel.create(self.client, r.json())
コード例 #20
0
ファイル: channel.py プロジェクト: elderlabs/BetterDisco
def test_nsfw_channel():
    channel = Channel(name='test', nsfw=True, type=ChannelType.GUILD_TEXT)
    assert channel.is_nsfw
コード例 #21
0
ファイル: client.py プロジェクト: sgtlaggy/disco
 def channels_modify(self, channel, **kwargs):
     r = self.http(Routes.CHANNELS_MODIFY, dict(channel=channel), json=kwargs)
     return Channel.create(self.client, r.json())
コード例 #22
0
ファイル: client.py プロジェクト: sgtlaggy/disco
 def channels_delete(self, channel):
     r = self.http(Routes.CHANNELS_DELETE, dict(channel=channel))
     return Channel.create(self.client, r.json())
コード例 #23
0
ファイル: test.py プロジェクト: cardinalitypuzzles/smallboard
    def test_create_channel_category_full(self):
        parent1 = Channel(
            id=22222,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_TEXT_CATEGORY,
        )
        parent2 = Channel(
            id=33333,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_TEXT_CATEGORY,
        )

        channels_list = {parent1.id: parent1, parent2.id: parent2}
        # Make parent1 full.
        for i in range(MAX_CHANNELS_PER_CATEGORY):
            channels_list[parent1.id + i + 1] = Channel(
                id=parent1.id + i + 1,
                type=ChannelType.GUILD_TEXT,
                name="child",
                parent_id=parent1.id,
            )

        # The next channel created should go under parent2.
        self.mock_client.guilds_channels_list.return_value = channels_list
        self.service.create_text_channel(DISCORD_GUILD_ID, "new",
                                         DISCORD_TEXT_CATEGORY)
        self.mock_client.guilds_channels_create.assert_called_once_with(
            DISCORD_GUILD_ID,
            ChannelType.GUILD_TEXT,
            "new",
            parent_id=parent2.id,
        )

        # Make parent2 full.
        for i in range(MAX_CHANNELS_PER_CATEGORY):
            channels_list[parent2.id + i + 1] = Channel(
                id=parent2.id + i + 1,
                type=ChannelType.GUILD_TEXT,
                name="child",
                parent_id=parent2.id,
            )

        # The next channel created should create a new parent.
        self.mock_client.guilds_channels_list.return_value = channels_list
        new_parent = Channel(
            id=44444,
            type=ChannelType.GUILD_CATEGORY,
            name=DISCORD_TEXT_CATEGORY,
        )
        self.mock_client.guilds_channels_create.return_value = new_parent
        self.service.create_text_channel(DISCORD_GUILD_ID, "new",
                                         DISCORD_TEXT_CATEGORY)
        self.mock_client.guilds_channels_create.assert_has_calls([
            # Create parent category channel first.
            mock.call(
                DISCORD_GUILD_ID,
                ChannelType.GUILD_CATEGORY,
                DISCORD_TEXT_CATEGORY,
                parent_id=None,
            ),
            # Create text channel under category created above.
            mock.call(
                DISCORD_GUILD_ID,
                ChannelType.GUILD_TEXT,
                "new",
                parent_id=44444,
            ),
        ])