1
1
using Remora . Discord . API . Abstractions . Objects ;
2
2
using Remora . Discord . API . Abstractions . Rest ;
3
3
using Remora . Discord . API . Objects ;
4
- using Remora . Discord . Commands . Feedback . Services ;
5
4
using Remora . Discord . Extensions . Formatting ;
5
+ using Remora . Rest . Core ;
6
6
7
7
namespace DiscordMonies . Game . UnresolvedMatters . DiceRoll ;
8
8
9
- public class DiceRollMatterHandler ( GameState state , IFeedbackService service , BoardRenderer renderer ) : IUnresolvedMatterResolver < DiceRollMatter >
9
+ public class DiceRollMatterHandler ( GameState state , IDiscordRestChannelAPI restChannelApi , BoardRenderer renderer ) : IUnresolvedMatterResolver < DiceRollMatter >
10
10
{
11
11
public async Task Resolve ( DiceRollMatter matter )
12
12
{
13
13
if ( state . Dice . DoubleRoll )
14
14
{
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. ",
16
16
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 ( )
24
20
] )
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 ;
26
30
return ;
27
31
}
28
32
@@ -46,14 +50,18 @@ await service.SendAsync(state.ThreadId, $"{Mention.User(state.CurrentPlayer)}",
46
50
}
47
51
}
48
52
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. ",
50
54
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 )
56
61
] )
57
- } ) ;
62
+ ] ) ,
63
+ messageReference : state . LastRollMessage is null ? default ( Optional < IMessageReference > ) : new MessageReference ( state . LastRollMessage . Value )
64
+ ) ;
65
+ state . LastRollMessage = result . Entity . ID ;
58
66
}
59
67
}
0 commit comments