private static async Task Main() { var client = await DiscordSettings.GetClient(); var services = DiscordSettings.ConfigureServices(client); await DiscordSettings.InstallCommands(client, services); SocialScoreWatcher.Bind(client); CoronaWatcher.Bind(client); MuteWatcher.Bind(client); VoiceChat.Bind(client); GovernanceVoteWatcher.Bind(client); EditWatcher.Bind(client); QuickReportWatcher.Bind(client); StarboardWatcher.Bind(client); QuickChatWatcher.Bind(client); SlurWatcher.Bind(client); await Task.Delay(10000); var crawler = new Crawler(client); await Task.WhenAny(Task.Delay(TimeSpan.FromDays(2)), crawler.StartAsync()); throw new Exception("Restart me!"); }
public async Task Edit() { var channel = (SocketTextChannel)Context.Channel; if (!channel.IsSuggestionChannelByName()) { throw new InvalidOperationException("Wrong channel!"); } if (channel.GetSuggestionChannelType() == SuggestionType.Vote) { throw new Exception("Finalized suggestions cannot be edited."); } var user = (IGuildUser)Context.User; var vote = await Database.UNSAFE_GetGovernanceVoteAsync(channel.Id); if (vote == null) { throw new Exception("Cannot find information about this suggestion in database!"); } if (vote.UserId != user.Id && !user.IsStaff()) { throw new Exception("Only the owner or staff can edit suggestions."); } var message = (IUserMessage)await channel.GetMessageAsync(vote.MessageId); var author = Context.Client.GetUser(vote.UserId); await Context.Message.DeleteAsync(); var suggestionMessage = await GetSuggestionFromUserAsync(channel, author); await(suggestionMessage?.DeleteAsync() ?? Task.CompletedTask); if (suggestionMessage != null) { var submissionOld = message.Embeds.OfType <Embed>().FirstOrDefault(); var submissionNew = suggestionMessage.Embeds.OfType <Embed>().FirstOrDefault(); var editEmbed = EditWatcher.GetEditEmbed(user, "edited their suggestion", submissionOld.Description, submissionNew.Description); if (editEmbed != null) { await message.ModifyAsync(props => props.Embed = submissionNew); await channel.ModifyAsync(props => props.Topic = submissionNew.Description); await channel.SendMessageAsync(string.Empty, embed : editEmbed); await GovernanceSubscriptionFeed.OnEditAsync(Context.Client, channel.Id); } } }
public async Task Rename([Summary("The short name.")] string shortName) { var channel = (SocketTextChannel)Context.Channel; var type = channel.GetSuggestionChannelType(); if (!channel.IsSuggestionChannelByName()) { throw new InvalidOperationException("Wrong channel!"); } if (type == SuggestionType.Vote) { throw new Exception("Finalized suggestions cannot be renamed."); } var user = (IGuildUser)Context.User; var vote = await Database.UNSAFE_GetGovernanceVoteAsync(channel.Id); if (vote == null) { throw new Exception("Cannot find information about this suggestion in database!"); } if (vote.UserId != user.Id && !user.IsStaff()) { throw new Exception("Only the owner can rename suggestions."); } var submissionOld = channel.GetSuggestionChannelName(); var submissionNew = shortName; var editEmbed = EditWatcher.GetEditEmbed(user, "renamed the suggestion", submissionOld, submissionNew); if (editEmbed != null) { await channel.RenameSuggestionChannel(submissionNew); await channel.SendMessageAsync(string.Empty, embed : editEmbed); } }