Skip to content

Commit 222349c

Browse files
committed
Reply to previous roll message
1 parent ff398ef commit 222349c

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

DiscordMonies/Game/GameState.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public GamePlayer GetById(Snowflake userId)
4242
public List<IUnresolvedMatter> UnresolvedMatters { get; } = [];
4343

4444
public IList<TradeTable> TradeTables { get; } = [];
45+
46+
public Snowflake? LastRollMessage { get; set; }
4547
}
4648

4749
public enum GameAction
Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,32 @@
11
using Remora.Discord.API.Abstractions.Objects;
22
using Remora.Discord.API.Abstractions.Rest;
33
using Remora.Discord.API.Objects;
4-
using Remora.Discord.Commands.Feedback.Services;
54
using Remora.Discord.Extensions.Formatting;
5+
using Remora.Rest.Core;
66

77
namespace DiscordMonies.Game.UnresolvedMatters.DiceRoll;
88

9-
public class DiceRollMatterHandler(GameState state, IFeedbackService service, BoardRenderer renderer) : IUnresolvedMatterResolver<DiceRollMatter>
9+
public class DiceRollMatterHandler(GameState state, IDiscordRestChannelAPI restChannelApi, BoardRenderer renderer) : IUnresolvedMatterResolver<DiceRollMatter>
1010
{
1111
public async Task Resolve(DiceRollMatter matter)
1212
{
1313
if (state.Dice.DoubleRoll)
1414
{
15-
await service.SendAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}",
15+
var sendResult = await restChannelApi.CreateMessageAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}, it's your turn.",
1616
embeds: new([Embeds.TurnAdvancedDoubles(state.CurrentPlayer)]),
17-
options: new()
18-
{
19-
Attachments = new([renderer.RenderToRemoraAttachment([new(state.CurrentPlayer.CurrentSpace, state.CurrentPlayer.Color.Color)])]),
20-
MessageComponents = new([
21-
new ActionRowComponent([
22-
Buttons.Roll()
23-
])
17+
components: new([
18+
new ActionRowComponent([
19+
Buttons.Roll()
2420
])
25-
});
21+
]),
22+
attachments: new([
23+
renderer.RenderToRemoraAttachment([
24+
new(state.CurrentPlayer.CurrentSpace, state.CurrentPlayer.Color.Color)
25+
])
26+
]),
27+
messageReference: state.LastRollMessage is null ? default(Optional<IMessageReference>) : new MessageReference(state.LastRollMessage.Value)
28+
);
29+
state.LastRollMessage = sendResult.Entity.ID;
2630
return;
2731
}
2832

@@ -46,14 +50,18 @@ await service.SendAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}",
4650
}
4751
}
4852

49-
await service.SendAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}",
53+
var result = await restChannelApi.CreateMessageAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}, it's your turn.",
5054
embeds: new([Embeds.TurnAdvanced(state.CurrentPlayer)]),
51-
options: new()
52-
{
53-
Attachments = new([renderer.RenderToRemoraAttachment([new(state.CurrentPlayer.CurrentSpace, state.CurrentPlayer.Color.Color)])]),
54-
MessageComponents = new([
55-
new ActionRowComponent(buttons)
55+
components: new([
56+
new ActionRowComponent(buttons)
57+
]),
58+
attachments: new([
59+
renderer.RenderToRemoraAttachment([
60+
new(state.CurrentPlayer.CurrentSpace, state.CurrentPlayer.Color.Color)
5661
])
57-
});
62+
]),
63+
messageReference: state.LastRollMessage is null ? default(Optional<IMessageReference>) : new MessageReference(state.LastRollMessage.Value)
64+
);
65+
state.LastRollMessage = result.Entity.ID;
5866
}
5967
}

0 commit comments

Comments
 (0)