Пример #1
0
        public async Task <IResult> ShowServerSettingsAsync()
        {
            var getGuild = await _guildAPI.GetGuildAsync(_context.GuildID.Value);

            if (!getGuild.IsSuccess)
            {
                return(getGuild);
            }

            var guild = getGuild.Entity;

            var getSettings = await _moderation.GetOrCreateServerSettingsAsync(guild.ID);

            if (!getSettings.IsSuccess)
            {
                return(getSettings);
            }

            var settings = getSettings.Entity;

            var getGuildIcon = CDN.GetGuildIconUrl(guild);

            var embedFields = new List <EmbedField>();
            var eb          = new Embed
            {
                Colour    = _feedback.Theme.Secondary,
                Title     = guild.Name,
                Thumbnail = getGuildIcon.IsSuccess
                    ? new EmbedThumbnail(getGuildIcon.Entity.ToString())
                    : default(Optional <IEmbedThumbnail>),
                Fields = embedFields
            };

            var moderationLogChannelName = settings.ModerationLogChannel.HasValue
                ? $"<#{settings.ModerationLogChannel}>"
                : "None";

            embedFields.Add(new EmbedField("Moderation Log Channel", moderationLogChannelName));

            var monitoringChannelName = settings.MonitoringChannel.HasValue
                ? $"<#{settings.MonitoringChannel}>"
                : "None";

            embedFields.Add(new EmbedField("Event Monitor Channel", monitoringChannelName));

            embedFields.Add(new EmbedField("Warning Threshold", settings.WarningThreshold.ToString()));

            return(await _feedback.SendContextualEmbedAsync(eb));
        }
Пример #2
0
            public void ReturnsUnsuccessfulResultIfInstanceHasNoImage()
            {
                var guildID = new Snowflake(0);

                var mockedGuild = new Mock <IGuild>();

                mockedGuild.SetupGet(g => g.Icon).Returns((IImageHash?)null);
                mockedGuild.SetupGet(g => g.ID).Returns(guildID);

                var guild = mockedGuild.Object;

                var getActual = CDN.GetGuildIconUrl(guild, CDNImageFormat.PNG);

                Assert.False(getActual.IsSuccess);
                Assert.IsType <ImageNotFoundError>(getActual.Unwrap());
            }
Пример #3
0
            public void ReturnsCorrectAddressWithAnimatedImageAndCustomFormat()
            {
                var expected = new Uri("https://cdn.discordapp.com/icons/0/a_1.png");

                var guildID   = new Snowflake(0);
                var imageHash = new ImageHash("a_1");

                var mockedGuild = new Mock <IGuild>();

                mockedGuild.SetupGet(g => g.Icon).Returns(imageHash);
                mockedGuild.SetupGet(g => g.ID).Returns(guildID);

                var guild = mockedGuild.Object;

                var getActual = CDN.GetGuildIconUrl(guild, CDNImageFormat.PNG);

                Assert.True(getActual.IsSuccess);
                Assert.Equal(expected, getActual.Entity);
            }
Пример #4
0
            /// <inheritdoc />
            protected override IEnumerable <Result <Uri> > GetImageUris
            (
                Optional <CDNImageFormat> imageFormat = default,
                Optional <ushort> imageSize           = default
            )
            {
                var guildID   = new Snowflake(0);
                var imageHash = new ImageHash("1");

                var mockedGuild = new Mock <IGuild>();

                mockedGuild.SetupGet(g => g.Icon).Returns(imageHash);
                mockedGuild.SetupGet(g => g.ID).Returns(guildID);

                var guild = mockedGuild.Object;

                yield return(CDN.GetGuildIconUrl(guild, imageFormat, imageSize));

                yield return(CDN.GetGuildIconUrl(guildID, imageHash, imageFormat, imageSize));
            }
Пример #5
0
            /// <inheritdoc />
            public async Task <Result <QueryResult> > Handle(Query request, CancellationToken cancellationToken)
            {
                var getGuildInfoResult = await _guildApi.GetGuildAsync(request.GuildId, ct : cancellationToken);

                if (!getGuildInfoResult.IsSuccess)
                {
                    return(Result <QueryResult> .FromError(getGuildInfoResult));
                }

                var guildInfo = getGuildInfoResult.Entity;

                if (guildInfo is null)
                {
                    return(new NotFoundError("Guild not found."));
                }

                Uri?iconUrl;

                if (guildInfo.Icon is not null)
                {
                    var getIconUrlResult = CDN.GetGuildIconUrl(request.GuildId, guildInfo.Icon, CDNImageFormat.PNG);
                    iconUrl = !getIconUrlResult.IsSuccess ? null : getIconUrlResult.Entity;
                }
                else
                {
                    iconUrl = null;
                }

                return(new QueryResult(
                           guildInfo.Name,
                           guildInfo.OwnerID,
                           guildInfo.MaxMembers.HasValue ? guildInfo.MaxMembers.Value : null,
                           guildInfo.Roles.Skip(1).ToList(),
                           iconUrl
                           ));
            }
Пример #6
0
 /// <inheritdoc />
 public string GetIconUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)
 {
     return(CDN.GetGuildIconUrl(Id, _iconId, size, format));
 }