Skip to content

Commit d042e43

Browse files
authored
#42 Fixing Telegram API changes for inline keyboards. Defaulting the timezone to America/Los_Angeles" (#44)
Co-authored-by: Matt Robold <=>
1 parent 5d4f7bb commit d042e43

23 files changed

+61
-369
lines changed

Moneo.sln

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moneo.Chat.Contracts", "src
1313
EndProject
1414
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moneo.Chat.Models", "src\Chat\Moneo.Chat.Models\Moneo.Chat.Models.csproj", "{4549432D-16DE-417D-AD39-F58AB2EEA296}"
1515
EndProject
16-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Moneo.Core", "src\Moneo.Core\Moneo.Core.csproj", "{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666}"
17-
EndProject
1816
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Hosts", "Hosts", "{C80150B3-C997-47FF-BE06-ED0709EA6DCB}"
1917
EndProject
2018
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TaskManagement", "TaskManagement", "{5760641D-8125-45C2-9AB7-A2CCF3D70D70}"
@@ -61,10 +59,6 @@ Global
6159
{4549432D-16DE-417D-AD39-F58AB2EEA296}.Debug|Any CPU.Build.0 = Debug|Any CPU
6260
{4549432D-16DE-417D-AD39-F58AB2EEA296}.Release|Any CPU.ActiveCfg = Release|Any CPU
6361
{4549432D-16DE-417D-AD39-F58AB2EEA296}.Release|Any CPU.Build.0 = Release|Any CPU
64-
{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
65-
{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666}.Debug|Any CPU.Build.0 = Debug|Any CPU
66-
{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666}.Release|Any CPU.ActiveCfg = Release|Any CPU
67-
{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666}.Release|Any CPU.Build.0 = Release|Any CPU
6862
{32177902-B5A3-4E60-8B62-1272A5239403}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6963
{32177902-B5A3-4E60-8B62-1272A5239403}.Debug|Any CPU.Build.0 = Debug|Any CPU
7064
{32177902-B5A3-4E60-8B62-1272A5239403}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -118,7 +112,6 @@ Global
118112
{432EC526-0EC0-43CD-B772-1EF876CF3A41} = {4624C493-4F8D-4D87-92F0-29E3A19CDE5C}
119113
{4A156C25-FBFB-4F31-B27F-B49774AB07C8} = {4624C493-4F8D-4D87-92F0-29E3A19CDE5C}
120114
{4549432D-16DE-417D-AD39-F58AB2EEA296} = {4624C493-4F8D-4D87-92F0-29E3A19CDE5C}
121-
{F9A41A3A-6A89-44DD-B65B-FDEE78DDD666} = {BAC297B4-CBE2-403F-AD70-110B317BBE28}
122115
{C80150B3-C997-47FF-BE06-ED0709EA6DCB} = {BAC297B4-CBE2-403F-AD70-110B317BBE28}
123116
{5760641D-8125-45C2-9AB7-A2CCF3D70D70} = {BAC297B4-CBE2-403F-AD70-110B317BBE28}
124117
{32177902-B5A3-4E60-8B62-1272A5239403} = {E9789803-25DA-48D3-9181-DF34D79DC9A1}

Tests/Moneo.Tests/FixedLengthListTests.cs

Lines changed: 0 additions & 94 deletions
This file was deleted.

Tests/Moneo.Tests/Moneo.Tests.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
<ProjectReference Include="..\..\src\Chat\Moneo.Chat\Moneo.Chat.csproj" />
3434
<ProjectReference Include="..\..\src\Hosts\Moneo.Hosts.Chat.Api\Moneo.Hosts.Chat.Api.csproj" />
3535
<ProjectReference Include="..\..\src\Hosts\Moneo.TaskManagement.Api\Moneo.TaskManagement.Api.csproj" />
36-
<ProjectReference Include="..\..\src\Moneo.Core\Moneo.Core.csproj" />
3736
</ItemGroup>
3837

3938
</Project>

src/Chat/Moneo.Chat.Console/ConsoleChatAdapter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using Microsoft.Extensions.Logging;
44
using Moneo.Chat.BotRequests;
55
using Moneo.Chat.Models;
6-
using Moneo.Core;
6+
using Moneo.Common;
77

88
namespace Moneo.Chat
99
{

src/Chat/Moneo.Chat.Console/Moneo.Chat.Console.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<ItemGroup>
1010
<ProjectReference Include="..\Moneo.Chat.Contracts\Moneo.Chat.Contracts.csproj" />
1111
<ProjectReference Include="..\Moneo.Chat\Moneo.Chat.csproj" />
12-
<ProjectReference Include="..\..\Moneo.Core\Moneo.Core.csproj" />
1312
</ItemGroup>
1413

1514
</Project>

src/Chat/Moneo.Chat.Telegram/TelegramChatAdapter.cs

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ public TelegramChatAdapter(TelegramChatAdapterOptions options, IChatManager conv
3434

3535
public bool IsActive { get; private set; } = false;
3636

37-
private async Task DeleteExistingWebhook(CancellationToken cancellationToken)
37+
private async Task DeleteExistingWebhookAsync(CancellationToken cancellationToken)
3838
{
3939
try
4040
{
41-
await _botClient.DeleteWebhookAsync(cancellationToken: cancellationToken);
41+
await _botClient.DeleteWebhook(cancellationToken: cancellationToken);
4242
_isUsingWebhook = false;
4343
}
4444
catch (ApiRequestException e)
@@ -47,7 +47,7 @@ private async Task DeleteExistingWebhook(CancellationToken cancellationToken)
4747
}
4848
}
4949

50-
private async Task HandleMessageUpdate(Message message, CancellationToken cancellationToken)
50+
private async Task HandleMessageUpdateAsync(Message message, CancellationToken cancellationToken)
5151
{
5252
try
5353
{
@@ -79,7 +79,7 @@ private async Task HandleUpdateAsync(ITelegramBotClient _, Update update, Cancel
7979

8080
var handler = update switch
8181
{
82-
{Message: { } message} => HandleMessageUpdate(message, cancellationToken),
82+
{Message: { } message} => HandleMessageUpdateAsync(message, cancellationToken),
8383
{CallbackQuery: { } callbackQuery} => HandleCallbackQueryAsync(callbackQuery, cancellationToken),
8484
_ => HandleUnknownUpdateAsync(update, cancellationToken)
8585
};
@@ -91,15 +91,13 @@ private async Task HandleErrorAsync(ITelegramBotClient _, Exception exception, C
9191
{
9292
if (exception is ApiRequestException apiRequestException)
9393
{
94-
await _botClient.SendTextMessageAsync(_options.MasterConversationId, apiRequestException.ToString(),
94+
await _botClient.SendMessage(_options.MasterConversationId, apiRequestException.ToString(),
9595
cancellationToken: cancelToken);
9696
}
9797
}
9898

99-
public async Task StartReceivingAsync(CancellationToken cancellationToken = default)
99+
public Task StartReceivingAsync(CancellationToken cancellationToken = default)
100100
{
101-
// delete any existing webhook
102-
// await DeleteExistingWebhook(cancellationToken);
103101
_isUsingWebhook = false;
104102

105103
_botClient.Timeout = TimeSpan.FromSeconds(30);
@@ -111,28 +109,30 @@ public async Task StartReceivingAsync(CancellationToken cancellationToken = defa
111109
};
112110
_botClient.StartReceiving(HandleUpdateAsync, HandleErrorAsync, options, cancellationToken);
113111
IsActive = true;
112+
113+
return Task.CompletedTask;
114114
}
115115

116116
public async Task StartReceivingAsync(string callbackUrl, CancellationToken cancellationToken = default)
117117
{
118118
_isUsingWebhook = true;
119-
await _botClient.SetWebhookAsync(url: callbackUrl, secretToken: _options.CallbackToken, cancellationToken: cancellationToken);
119+
await _botClient.SetWebhook(url: callbackUrl, secretToken: _options.CallbackToken, cancellationToken: cancellationToken);
120120
IsActive = true;
121121
}
122122

123123
public async Task StopReceivingAsync(CancellationToken cancellationToken = default)
124124
{
125125
if (_isUsingWebhook)
126126
{
127-
await DeleteExistingWebhook(cancellationToken);
127+
await DeleteExistingWebhookAsync(cancellationToken);
128128
}
129129

130130
IsActive = false;
131131
}
132132

133133
public async Task<ChatAdapterStatus> GetStatusAsync(CancellationToken cancellationToken)
134134
{
135-
var webhookInfo = await _botClient.GetWebhookInfoAsync(cancellationToken);
135+
var webhookInfo = await _botClient.GetWebhookInfo(cancellationToken);
136136
return new ChatAdapterStatus(
137137
nameof(TelegramChatAdapter),
138138
_isUsingWebhook,
@@ -192,16 +192,26 @@ public Task ReceiveMessageAsync(Update message, CancellationToken cancellationTo
192192

193193
public async Task Handle(BotTextMessageRequest request, CancellationToken cancellationToken)
194194
{
195-
await _botClient.SendTextMessageAsync(request.ConversationId, request.Text, cancellationToken: cancellationToken);
195+
await _botClient.SendMessage(request.ConversationId, request.Text, cancellationToken: cancellationToken);
196196
}
197197

198198
public async Task Handle(BotGifMessageRequest request, CancellationToken cancellationToken)
199199
{
200200
var inputFile = new InputFileUrl(request.GifUrl);
201-
await _botClient.SendAnimationAsync(request.ConversationId, inputFile, cancellationToken: cancellationToken);
201+
await _botClient.SendAnimation(request.ConversationId, inputFile, cancellationToken: cancellationToken);
202202
}
203203

204204
public async Task Handle(BotMenuMessageRequest request, CancellationToken cancellationToken)
205+
{
206+
var rows = request.MenuOptions.Chunk(2).ToArray();
207+
await _botClient.SendMessage(
208+
chatId: request.ConversationId,
209+
text: request.Text,
210+
replyMarkup: rows,
211+
cancellationToken: cancellationToken);
212+
}
213+
214+
private async Task HandleViaCallbackButton(BotMenuMessageRequest request, CancellationToken cancellationToken)
205215
{
206216
var options = request.MenuOptions.Select(InlineKeyboardButton.WithCallbackData).ToArray();
207217

@@ -230,7 +240,7 @@ IEnumerable<IEnumerable<InlineKeyboardButton>> GetRows(ICollection<InlineKeyboar
230240
}
231241

232242
var keyboard = new InlineKeyboardMarkup(GetRows(options, 2));
233-
await _botClient.SendTextMessageAsync(chatId: request.ConversationId, text: request.Text, replyMarkup: keyboard,
243+
await _botClient.SendMessage(chatId: request.ConversationId, text: request.Text, replyMarkup: keyboard,
234244
cancellationToken: cancellationToken);
235245
}
236246
}

src/Chat/Moneo.Chat/BotClientConfiguration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ public class BotClientConfiguration : IBotClientConfiguration
1111
public string TaskApiBase { get; set; } = default!;
1212
public bool IsDetailedErrorsEnabled { get; set; }
1313
public string ChatAdapter { get; set; }
14+
public string DefaultTimezone { get; set; } = default!;
1415
}

src/Chat/Moneo.Chat/BotResponses/BotResponseHelper.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ internal enum BotResponseType
88

99
internal static class BotResponseHelper
1010
{
11-
private static Random _random = new Random();
11+
private static readonly Random Random = new Random();
1212

1313
private static readonly string[] UnsureHowToProceed =
1414
[
@@ -80,8 +80,8 @@ public static string GetBotResponse(BotResponseType type)
8080
{
8181
return type switch
8282
{
83-
BotResponseType.UnsureHowToProceed => UnsureHowToProceed[_random.Next(UnsureHowToProceed.Length)],
84-
BotResponseType.RequestYesOrNo => RequestYesOrNo[_random.Next(RequestYesOrNo.Length)],
83+
BotResponseType.UnsureHowToProceed => UnsureHowToProceed[Random.Next(UnsureHowToProceed.Length)],
84+
BotResponseType.RequestYesOrNo => RequestYesOrNo[Random.Next(RequestYesOrNo.Length)],
8585
_ => throw new ArgumentOutOfRangeException(nameof(type), type, null)
8686
};
8787
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Moneo.Chat.Configuration;
2+
3+
public class ChatConfiguration
4+
{
5+
6+
}

src/Chat/Moneo.Chat/ServiceCollectionExtensions.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ public static IServiceCollection AddChatManager(this IServiceCollection services
8282
public class ChatAdapterOptions
8383
{
8484
public bool InMemoryStateManagementEnabled { get; private set; } = true;
85+
public string DefaultTimeZone { get; private set; } = "UTC";
86+
8587
public void UseInMemoryStateManagement() => InMemoryStateManagementEnabled = true;
88+
public void SetDefaultTimeZone(string timeZone) => DefaultTimeZone = timeZone;
8689

8790
public bool IsValid() => true;
8891
}

0 commit comments

Comments
 (0)