public async Task SettlementPost([Remainder] string SettlementCommand = "") { var region = StarforgedUtilites.GetAnySpaceRegion(SettlementCommand); if (region == SpaceRegion.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(SettlementResources.SettlementHelper) .WithDescription(SettlementResources.PickSpaceRegionMessage); if (SettlementCommand.Length > 0) { builder.WithFields(new EmbedFieldBuilder().WithName(SettlementResources.SettlementName).WithValue(SettlementCommand)); } var msg = await ReplyAsync(embed : builder.Build()); await msg.AddReactionAsync(oneEmoji); await msg.AddReactionAsync(twoEmoji); await msg.AddReactionAsync(threeEmoji); return; } string SettlementName = SettlementCommand.Replace(region.ToString(), "").Trim(); var settlement = Settlement.GenerateSettlement(Services, region, SettlementName); //embedBuilder.ThumbnailUrl = planet.Thumbnail; //TODO (maybe location hex?) var message = await ReplyAsync("", false, settlement.GetEmbedBuilder().Build()); await message.AddReactionAsync(projectEmoji); }
private async Task SettlementReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var settlementHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(SettlementResources.SettlementHelper) ?? false); if (settlementHelperEmbed != null) { var region = StarforgedUtilites.SpaceRegionFromEmote(reaction.Emote.Name); if (region == SpaceRegion.None) { return; } string command = settlementHelperEmbed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.SettlementName).Value ?? string.Empty; string location = ExtractAnySettlementLocation(ref command); var newSettlement = Settlement.GenerateSettlement(Services, region, channel.Id, command, location); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newSettlement.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await Task.Run(async() => { await message.AddReactionAsync(projectEmoji); await message.AddReactionAsync(contactEmoji); await message.AddReactionAsync(troubleEmoji); }).ConfigureAwait(false); return; } }
private async Task SettlementReactionHandler(IUserMessage message, ISocketMessageChannel channel, SocketReaction reaction, IUser user) { var settlementHelperEmbed = message.Embeds.FirstOrDefault(embed => embed?.Title?.Contains(SettlementResources.SettlementHelper) ?? false); if (settlementHelperEmbed != null) { var region = StarforgedUtilites.SpaceRegionFromEmote(reaction.Emote.Name); if (region == SpaceRegion.None) { return; } string name = settlementHelperEmbed.Fields.FirstOrDefault(fld => fld.Name == SettlementResources.SettlementName).Value ?? string.Empty; var newSettlement = Settlement.GenerateSettlement(Services, region, name); Task.WaitAll(message.RemoveAllReactionsAsync()); await message.ModifyAsync(msg => { msg.Content = string.Empty; msg.Embed = newSettlement.GetEmbedBuilder().Build(); }).ConfigureAwait(false); await message.AddReactionAsync(projectEmoji).ConfigureAwait(false); return; } var settlmentEmbed = message.Embeds.FirstOrDefault(embed => embed?.Description?.Contains(SettlementResources.Settlement) ?? false); if (settlmentEmbed == null) { return; } var settlement = new Settlement(Services).FromEmbed(settlmentEmbed); if (reaction.Emote.Name == projectEmoji.Name) { settlement.ProjectsRevealed++; } await message.ModifyAsync(msg => msg.Embed = settlement.GetEmbedBuilder().Build()).ConfigureAwait(false); await message.RemoveReactionAsync(reaction.Emote, user).ConfigureAwait(false); return; }
public async Task SettlementPost([Remainder] string SettlementCommand = "") { var region = StarforgedUtilites.GetAnySpaceRegion(SettlementCommand); if (region == SpaceRegion.None) { EmbedBuilder builder = new EmbedBuilder() .WithTitle(SettlementResources.SettlementHelper) .WithDescription(SettlementResources.PickSpaceRegionMessage); if (SettlementCommand.Length > 0) { builder.WithFields(new EmbedFieldBuilder().WithName(SettlementResources.SettlementName).WithValue(SettlementCommand)); } var msg = await ReplyAsync(embed : builder.Build()); await msg.AddReactionAsync(GenericReactions.oneEmoji); await msg.AddReactionAsync(GenericReactions.twoEmoji); await msg.AddReactionAsync(GenericReactions.threeEmoji); return; } string SettlementLocation = ExtractAnySettlementLocation(ref SettlementCommand); string SettlementName = SettlementCommand.Replace(region.ToString(), "", StringComparison.OrdinalIgnoreCase).Trim(); var settlement = Settlement.GenerateSettlement(Services, region, Context.Channel.Id, SettlementName, SettlementLocation); //embedBuilder.ThumbnailUrl = planet.Thumbnail; //TODO (maybe location hex?) var message = await ReplyAsync("", false, settlement.GetEmbedBuilder().Build()); await Task.Run(async() => { await message.AddReactionAsync(projectEmoji); await message.AddReactionAsync(contactEmoji); await message.AddReactionAsync(troubleEmoji); }).ConfigureAwait(false); }