private static void ProcessMessage(object sender, MessageEventArgs e) { if (e.Shard.User.Id == e.Message.Author.Id) { return; } ITextChannel Channel = (ITextChannel)e.Shard.Cache.Channels.Get(e.Message.ChannelId); DiscordMessage message = e.Message; DiscoreCache cache = e.Shard.Cache; DiscordGuildTextChannel guildTextChannel = cache.Channels.Get(message.ChannelId) as DiscordGuildTextChannel; DiscoreGuildCache guildCache = cache.Guilds.Get(guildTextChannel.GuildId); DiscordGuildMember member = guildCache.Members.Get(e.Message.Author.Id).Value; if (Channel.Id == Snowflake.Parse(Settings.Sunbae.ChannelID)) { String[] bannedRoles = new String[] { "Encoders", "Uploaders", "Sunbae", "admins" }; foreach (DiscordRole role in guildCache.Roles.Values) { if (bannedRoles.Contains(role.Name)) { continue; } if (role.Name.ToLower() == e.Message.Content.ToLower()) { member.AddRole(role.Id); break; } } e.Message.Delete(); } }
public async Task Role_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459254693429258") ); // Assert message.Text().Should().Contain("Role mention: @Role 1"); }
public async Task Text_channel_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459040480624680") ); // Assert message.Text().Should().Contain("Text channel mention: #mention-tests"); }
public async Task Role_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459254693429258") ); // Assert message.GetProperty("content").GetString().Should().Be("Role mention: @Role 1"); }
public async Task Voice_channel_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459175462633503") ); // Assert message.GetProperty("content").GetString().Should().Be("Voice channel mention: #chaos-vc [voice]"); }
public async Task Text_channel_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459040480624680") ); // Assert message.GetProperty("content").GetString().Should().Be("Text channel mention: #mention-tests"); }
public async Task Voice_channel_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866459175462633503") ); // Assert message.Text().Should().Contain("Voice channel mention: 🔊chaos-vc"); }
public async Task Reply_to_a_normal_message_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.ReplyTestCases, Snowflake.Parse("866460738239725598") ); // Assert message.Text().Should().Contain("reply to original"); message.QuerySelector(".chatlog__reference-link")?.Text().Should().Contain("original"); }
public async Task User_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866458840245076028") ); // Assert message.Text().Should().Contain("User mention: @Tyrrrz"); message.InnerHtml.Should().Contain("Tyrrrz#5447"); }
public async Task Message_with_a_PNG_based_sticker_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.StickerTestCases, Snowflake.Parse("939670623158943754") ); // Assert var stickerUrl = message.QuerySelector("[title='rock'] img")?.GetAttribute("src"); stickerUrl.Should().Be("https://discord.com/stickers/904215665597120572.png"); }
public async Task Message_with_a_Lottie_based_sticker_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.StickerTestCases, Snowflake.Parse("939670526517997590") ); // Assert var stickerUrl = message.QuerySelector("[title='Yikes'] [data-source]")?.GetAttribute("data-source"); stickerUrl.Should().Be("https://discord.com/stickers/816087132447178774.json"); }
public async Task Reply_to_an_empty_message_with_attachment_is_rendered_correctly() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/634 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.ReplyTestCases, Snowflake.Parse("866462470335627294") ); // Assert message.Text().Should().Contain("reply to attachment"); message.QuerySelector(".chatlog__reference-link")?.Text().Should().Contain("Click to see attachment"); }
public async Task Message_containing_a_YouTube_video_link_is_rendered_with_a_video_embed() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/570 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("866472508588294165") ); // Assert var iframeUrl = message.QuerySelector("iframe")?.GetAttribute("src"); iframeUrl.Should().Be("https://www.youtube.com/embed/qOWW4OlgbvE"); }
public async Task Message_containing_a_Spotify_track_link_is_rendered_with_a_track_embed() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/657 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("867886632203976775") ); // Assert var iframeUrl = message.QuerySelector("iframe")?.GetAttribute("src"); iframeUrl.Should().Be("https://open.spotify.com/embed/track/1LHZMWefF9502NPfArRfvP"); }
public async Task Message_containing_an_image_link_and_nothing_else_is_rendered_without_text_content() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/682 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("991768701126852638") ); // Assert var content = message.QuerySelector(".chatlog__content")?.Text(); content.Should().BeNullOrEmpty(); }
public async Task Reply_to_a_deleted_message_is_rendered_correctly() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/645 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.ReplyTestCases, Snowflake.Parse("866460975388819486") ); // Assert message.Text().Should().Contain("reply to deleted"); message.QuerySelector(".chatlog__reference-link")?.Text().Should().Contain( "Original message was deleted or could not be loaded." ); }
public async Task Message_with_an_embed_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("866769910729146400") ); // Assert var embed = message.GetProperty("embeds").EnumerateArray().Single(); embed.GetProperty("title").GetString().Should().Be("Embed title"); embed.GetProperty("url").GetString().Should().Be("https://example.com"); embed.GetProperty("timestamp").GetString().Should().Be("2021-07-14T21:00:00+00:00"); embed.GetProperty("description").GetString().Should().Be("**Embed** _description_"); embed.GetProperty("color").GetString().Should().Be("#58B9FF"); var embedAuthor = embed.GetProperty("author"); embedAuthor.GetProperty("name").GetString().Should().Be("Embed author"); embedAuthor.GetProperty("url").GetString().Should().Be("https://example.com/author"); embedAuthor.GetProperty("iconUrl").GetString().Should().NotBeNullOrWhiteSpace(); var embedThumbnail = embed.GetProperty("thumbnail"); embedThumbnail.GetProperty("url").GetString().Should().NotBeNullOrWhiteSpace(); embedThumbnail.GetProperty("width").GetInt32().Should().Be(120); embedThumbnail.GetProperty("height").GetInt32().Should().Be(120); var embedFooter = embed.GetProperty("footer"); embedFooter.GetProperty("text").GetString().Should().Be("Embed footer"); embedFooter.GetProperty("iconUrl").GetString().Should().NotBeNullOrWhiteSpace(); var embedFields = embed.GetProperty("fields").EnumerateArray().ToArray(); embedFields.Should().HaveCount(3); embedFields[0].GetProperty("name").GetString().Should().Be("Field 1"); embedFields[0].GetProperty("value").GetString().Should().Be("Value 1"); embedFields[0].GetProperty("isInline").GetBoolean().Should().BeTrue(); embedFields[1].GetProperty("name").GetString().Should().Be("Field 2"); embedFields[1].GetProperty("value").GetString().Should().Be("Value 2"); embedFields[1].GetProperty("isInline").GetBoolean().Should().BeTrue(); embedFields[2].GetProperty("name").GetString().Should().Be("Field 3"); embedFields[2].GetProperty("value").GetString().Should().Be("Value 3"); embedFields[2].GetProperty("isInline").GetBoolean().Should().BeTrue(); }
public async Task <DiscordCommandResult> SetEntrantChannelIdAsync( [Description("The channel you wish to announce entrants in.\nSupply nothing to view the current value.")] ITextChannel channel = null) { var channelId = await Database.Config.FindAsync("NEW_ENTRANT_CHANNEL_ID"); if (channel is null) { channel = Context.Guild.GetChannel(Snowflake.Parse(channelId.Value)) as ITextChannel; return(Response($"New entrants to the current tournament are currently announced in {channel!.Mention}.")); } channelId.Value = channel.Id.ToString(); await Database.SaveChangesAsync(); return(Response($"New entrants to the current tournament will now be announced in {channel.Mention}.")); }
public async Task Message_containing_an_image_link_is_rendered_with_an_image_embed() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/537 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("991768701126852638") ); // Assert message .QuerySelectorAll("img") .Select(e => e.GetAttribute("src")) .Should() .Contain("https://i.redd.it/f8w05ja8s4e61.png"); }
public async Task User_mention_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.MentionTestCases, Snowflake.Parse("866458840245076028") ); // Assert message.GetProperty("content").GetString().Should().Be("User mention: @Tyrrrz"); message .GetProperty("mentions") .EnumerateArray() .Select(j => j.GetProperty("id").GetString()) .Should() .Contain("128178626683338752"); }
public async Task Message_with_an_embed_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.EmbedTestCases, Snowflake.Parse("866769910729146400") ); // Assert message.Text().Should().ContainAll( "Embed author", "Embed title", "Embed description", "Field 1", "Value 1", "Field 2", "Value 2", "Field 3", "Value 3", "Embed footer" ); }
public async Task Message_with_a_PNG_based_sticker_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.StickerTestCases, Snowflake.Parse("939670623158943754") ); // Assert var sticker = message .GetProperty("stickers") .EnumerateArray() .Single(); sticker.GetProperty("id").GetString().Should().Be("904215665597120572"); sticker.GetProperty("name").GetString().Should().Be("rock"); sticker.GetProperty("format").GetString().Should().Be("PngAnimated"); sticker.GetProperty("sourceUrl").GetString().Should().Be("https://discord.com/stickers/904215665597120572.png"); }
public async Task Message_with_an_audio_attachment_is_rendered_correctly() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/333 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885656175620808734") ); // Assert message.Text().Should().Contain("Audio attachment"); var audioUrl = message.QuerySelector("audio source")?.GetAttribute("src"); audioUrl.Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885656175348187146/file_example_MP3_1MG.mp3" ); }
public async Task Message_with_a_video_attachment_is_rendered_correctly() { // https://github.com/Tyrrrz/DiscordChatExporter/issues/333 // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885655761919836171") ); // Assert message.Text().Should().Contain("Video attachment"); var videoUrl = message.QuerySelector("video source")?.GetAttribute("src"); videoUrl.Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885655761512968233/file_example_MP4_640_3MG.mp4" ); }
public async Task Message_with_a_Lottie_based_sticker_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.StickerTestCases, Snowflake.Parse("939670526517997590") ); // Assert var sticker = message .GetProperty("stickers") .EnumerateArray() .Single(); sticker.GetProperty("id").GetString().Should().Be("816087132447178774"); sticker.GetProperty("name").GetString().Should().Be("Yikes"); sticker.GetProperty("format").GetString().Should().Be("Lottie"); sticker.GetProperty("sourceUrl").GetString().Should().Be("https://discord.com/stickers/816087132447178774.json"); }
public async Task Message_with_an_image_attachment_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsHtmlAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885654862656843786") ); // Assert message.Text().Should().Contain("Image attachment"); message .QuerySelectorAll("img") .Select(e => e.GetAttribute("src")) .Should() .Contain( "https://cdn.discordapp.com/attachments/885587741654536192/885654862430359613/bird-thumbnail.png" ); }
public async Task Message_with_a_generic_attachment_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885587844989612074") ); // Assert message.GetProperty("content").GetString().Should().Be("Generic file attachment"); var attachments = message.GetProperty("attachments").EnumerateArray().ToArray(); attachments.Should().HaveCount(1); attachments.Single().GetProperty("url").GetString().Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885587844964417596/Test.txt" ); attachments.Single().GetProperty("fileName").GetString().Should().Be("Test.txt"); attachments.Single().GetProperty("fileSizeBytes").GetInt64().Should().Be(11); }
public async Task Message_with_an_image_attachment_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885654862656843786") ); // Assert message.GetProperty("content").GetString().Should().Be("Image attachment"); var attachments = message.GetProperty("attachments").EnumerateArray().ToArray(); attachments.Should().HaveCount(1); attachments.Single().GetProperty("url").GetString().Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885654862430359613/bird-thumbnail.png" ); attachments.Single().GetProperty("fileName").GetString().Should().Be("bird-thumbnail.png"); attachments.Single().GetProperty("fileSizeBytes").GetInt64().Should().Be(466335); }
public async Task Message_with_a_video_attachment_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885655761919836171") ); // Assert message.GetProperty("content").GetString().Should().Be("Video attachment"); var attachments = message.GetProperty("attachments").EnumerateArray().ToArray(); attachments.Should().HaveCount(1); attachments.Single().GetProperty("url").GetString().Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885655761512968233/file_example_MP4_640_3MG.mp4" ); attachments.Single().GetProperty("fileName").GetString().Should().Be("file_example_MP4_640_3MG.mp4"); attachments.Single().GetProperty("fileSizeBytes").GetInt64().Should().Be(3114374); }
public async Task Message_with_an_audio_attachment_is_rendered_correctly() { // Act var message = await _exportWrapper.GetMessageAsJsonAsync( ChannelIds.AttachmentTestCases, Snowflake.Parse("885656175620808734") ); // Assert message.GetProperty("content").GetString().Should().Be("Audio attachment"); var attachments = message.GetProperty("attachments").EnumerateArray().ToArray(); attachments.Should().HaveCount(1); attachments.Single().GetProperty("url").GetString().Should().Be( "https://cdn.discordapp.com/attachments/885587741654536192/885656175348187146/file_example_MP3_1MG.mp3" ); attachments.Single().GetProperty("fileName").GetString().Should().Be("file_example_MP3_1MG.mp3"); attachments.Single().GetProperty("fileSizeBytes").GetInt64().Should().Be(1087849); }