[Activity] Add description change command in thread

This commit is contained in:
2023-03-27 00:42:46 +02:00
parent 78fe2d5913
commit 54b4e6fb3f
3 changed files with 55 additions and 3 deletions

View File

@@ -96,7 +96,7 @@ public class ActivityFormatter
// Add time if specified
if (activity.DueDateTime is { } dueDateTime)
{
descriptionBuilder.AppendLine($"**:clock2: {TimestampTag.FormatFromDateTime(dueDateTime, TimestampTagStyles.ShortTime)} {(activity.IsClosed ? "Fermée" : TimestampTag.FormatFromDateTime(dueDateTime, TimestampTagStyles.Relative))}**");
descriptionBuilder.AppendLine($"**:clock2: {TimestampTag.FormatFromDateTime(dueDateTime, TimestampTagStyles.ShortTime)} {(activity.IsClosed ? "Fermée" : TimestampTag.FormatFromDateTime(dueDateTime, TimestampTagStyles.Relative))}**");
}
else
{
@@ -112,7 +112,12 @@ public class ActivityFormatter
// Add thread link
descriptionBuilder.AppendLine();
descriptionBuilder.Append($"**[Fil associé]({ChannelUtils.GetChannelLink(activity.GuildId, activity.ThreadId)})**");
descriptionBuilder.Append(
$"""
**⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯**
**[Fil associé]({ChannelUtils.GetChannelLink(activity.GuildId, activity.ThreadId)})**
**⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯**
""");
string bannerUrl = GetActivityBanner(activity.Name);

View File

@@ -174,6 +174,44 @@ public partial class ActivityModule
await RespondAsync(pingMessageBuilder.ToString());
}
[SlashCommand("description", "Changer la description de l'activité")]
public async Task ThreadChangeDescription()
{
// Get activity linked to this thread
var activity = _activitiesRepository.FindActivityByThreadId(Context.Channel.Id);
if (!await CheckCommandInThread(activity, checkCreator: true) || activity is null)
{
return;
}
// Open modal
await RespondWithModalAsync<ActivityDescriptionModal>("activity description_modal");
}
[ModalInteraction("activity description_modal", ignoreGroupNames: true)]
public async Task ActivityDescriptionSubmit(ActivityDescriptionModal descriptionModal)
{
// Get activity linked to this thread
var activity = _activitiesRepository.FindActivityByThreadId(Context.Channel.Id);
if (!await CheckCommandInThread(activity, checkCreator: true) || activity is null)
{
return;
}
// Update description
activity.Description = descriptionModal.Description;
await _activitiesRepository.SaveChanges();
await UpdateActivityEmbed(activity, ActivityUpdateReason.Update);
await RespondAsync(
ephemeral: true,
embed: EmbedUtils.InfoEmbed("**La description** a bien été changée").Build()
);
}
private async Task<bool> CheckCommandInThread(Activity? activity, bool checkCreator = false)
{
// Check if activity is not null (means we are in a valid thread)
@@ -199,4 +237,13 @@ public partial class ActivityModule
return true;
}
}
public class ActivityDescriptionModal : IModal
{
public string Title => "Nouvelle description";
[InputLabel("Description")]
[ModalTextInput("activity_description", TextInputStyle.Paragraph)]
public required string Description { get; set; }
}

View File

@@ -88,7 +88,7 @@ await using(var scope = host.Services.CreateAsyncScope())
var dbContext = scope.ServiceProvider.GetRequiredService<CocotteDbContext>();
if (hostEnvironment.IsDevelopment())
{
await dbContext.Database.EnsureDeletedAsync();
// await dbContext.Database.EnsureDeletedAsync();
await dbContext.Database.EnsureCreatedAsync();
}
else