public async Task <Result> ExitClickedAsync() { var leaseData = await _dataService.LeaseDataAsync(_context.Message.Value.ID, this.CancellationToken); if (!leaseData.IsSuccess) { return((Result)leaseData); } await using var lease = leaseData.Entity; lease.Delete(); if (lease.Data.WasCreatedWithInteraction) { return(await _interactionAPI.DeleteOriginalInteractionResponseAsync ( _context.ApplicationID, _context.Token, this.CancellationToken )); } var message = _context.Message.Value; return(await _channelAPI.DeleteMessageAsync(message.ChannelID, message.ID, ct : this.CancellationToken)); }
private async Task TryCheckMessageAsync(IPartialMessage message, CancellationToken ct = default) { var channelId = message.ChannelID.Value; var isThreadChannel = await _threadSvc.IsThreadChannelAsync(channelId, ct); if (!isThreadChannel) { return; } if (!message.GuildID.HasValue) { return; } if (!message.Author.HasValue) { return; } var author = message.Author.Value; var authorId = author.ID; var messageId = message.ID.Value; var guildId = message.GuildID.Value; if ((author.IsBot.HasValue && author.IsBot.Value) || (author.IsSystem.HasValue && author.IsSystem.Value)) { return; } if (!message.Content.HasValue) { return; } var isContentBlocked = await IsContentBlockedAsync(message); if (!isContentBlocked) { return; } if (await _designatedChannelService.ChannelHasDesignationAsync(guildId.Value, channelId.Value, DesignatedChannelType.Unmoderated, default)) { return; } var roles = message.Member.Value.Roles.Value.Select(a => a.Value).ToList(); roles.Add(guildId.Value); await _remoraAuthService.SetCurrentAuthenticatedUserAsync(guildId, authorId); if (await _authService.HasClaimsAsync(authorId.Value, messageId.Value, roles, AuthorizationClaim.BypassMessageContentPatternCheck)) { Log.Debug("Message {MessageId} was skipped because the author {Author} has the {Claim} claim", messageId, authorId, AuthorizationClaim.BypassMessageContentPatternCheck); return; } Log.Debug("Message {MessageId} is going to be deleted", message.ID); using var transaction = await _deletedMessageRepository.BeginCreateTransactionAsync(ct); var reason = "Unauthorized Message Content"; await _channelApi.DeleteMessageAsync(channelId, messageId, reason, ct); var self = await _userApi.GetCurrentUserAsync(ct); await _deletedMessageRepository.CreateAsync( new DeletedMessageCreationData() { GuildId = guildId.Value, ChannelId = channelId.Value, MessageId = messageId.Value, AuthorId = authorId.Value, Content = message.Content.Value, Reason = reason, CreatedById = self.Entity !.ID.Value }, ct);