Skip to content

Commit 2e3f174

Browse files
committed
Enhance CardCodeGatewayHandler to support guild threads and nullable channel IDs
1 parent 3530af5 commit 2e3f174

3 files changed

Lines changed: 32 additions & 14 deletions

File tree

GitcgNetCord.sln.DotSettings.user

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
22
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AApplicationCommand_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fba38522c788bae84bc932ef7a29d71d27152622c27dced65c633f40401360_003FApplicationCommand_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
33
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEmojiProperties_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F6ab3be37dec913ef7d649338adbdc7ba6ecf9e17ad69af5d293b71d60e4be5a_003FEmojiProperties_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
4+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AGuildThreadMetadata_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F72dab619544a61db6fcfa35f1ceeed540e7b87a5f79477e29f7a6c73a485a_003FGuildThreadMetadata_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
5+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AINamedChannel_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fc6b34531972538dcb2125236898e9a73bfc3bfb939b67fb2d4f6057bd3498f5_003FINamedChannel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
46
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ANetCord_002ERest_002EEmbedProperties_002Eg_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F2d74c9ef991b267cbaf535bf08019b8966eb55a_003FNetCord_002ERest_002EEmbedProperties_002Eg_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
7+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003APrivateGuildThread_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F79a2d5b719ab826f4d81b95fc1963dc92e6dd8f43065b729ed53ae1f797_003FPrivateGuildThread_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
58
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactionEmojiProperties_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ffa944ea7b9c605f0445098be8ca0ce31dd212e446a97d32b344db96e36aa95_003FReactionEmojiProperties_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
9+
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARestClient_002EChannel_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F3e62ebbf24ad7ee71524db17f814b1703f198645cce7517bc17122fb38f8f81_003FRestClient_002EChannel_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
610
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASlashCommandChoiceAttribute_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003F70977d8e8e415d5c5286c84b973d39d27dd1744ed6edc99adee5b82899ff31_003FSlashCommandChoiceAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
711
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002EManipulation_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Fe75a5575ba872c8ea754c015cb363850e6c661f39569712d5b74aaca67263c_003FString_002EManipulation_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
812
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AValidateOptionsResultBuilder_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FSourcesCache_003Ff7c3fb89ef359986fa6049c62f921cb5a184ae6b30dcddaffc3d5ab7fcd77_003FValidateOptionsResultBuilder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

src/GitcgNetCord.MainApp/Entities/Repositories/DiscordCardCodeChannelService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class DiscordCardCodeChannelService(
66
AppDbContext dbContext
77
)
88
{
9-
public async ValueTask<DiscordCardCodeChannel?> FindAsync(ulong channelId)
9+
public async ValueTask<DiscordCardCodeChannel?> FindAsync(ulong? channelId)
1010
{
1111
return await dbContext
1212
.DiscordCardCodeChannels

src/GitcgNetCord.MainApp/GatewayHandlers/CardCodeGatewayHandler.cs

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using GitcgPainter.ImageCreators.Deck;
1010
using HoyolabHttpClient.Models.Interfaces;
1111
using Microsoft.Extensions.Options;
12+
using NetCord;
1213
using NetCord.Gateway;
1314
using NetCord.Hosting.Gateway;
1415
using NetCord.Rest;
@@ -32,10 +33,20 @@ public async ValueTask HandleAsync(Message message)
3233
return;
3334

3435
var dbChannel = await FindDbChannelAsync(message.ChannelId);
36+
37+
var guildThread = message.Channel as GuildThread;
3538

36-
if (dbChannel == null)
39+
if (dbChannel == null && guildThread == null)
3740
return;
3841

42+
if (guildThread != null)
43+
{
44+
dbChannel = await FindDbChannelAsync(guildThread.ParentId);
45+
46+
if (dbChannel == null)
47+
return;
48+
}
49+
3950
var channel = message.Channel;
4051
if (channel == null)
4152
return;
@@ -80,15 +91,18 @@ await message.AddReactionAsync(
8091
.WithEmbeds([summaryEmbed])
8192
);
8293

83-
var id = Convert.ToBase64String(
84-
BitConverter.GetBytes(message.Id)
85-
);
94+
if (guildThread == null)
95+
{
96+
var id = Convert.ToBase64String(
97+
BitConverter.GetBytes(message.Id)
98+
);
8699

87-
channel = await summaryMessage.CreateGuildThreadAsync(
88-
new GuildThreadFromMessageProperties(
89-
name: $"Sharing code list #{id}"
90-
)
91-
);
100+
channel = await summaryMessage.CreateGuildThreadAsync(
101+
new GuildThreadFromMessageProperties(
102+
name: $"Sharing code list #{id}"
103+
)
104+
);
105+
}
92106
}
93107

94108
var deckImageCreator = deckImageCreatorCollection.GameBackground;
@@ -183,16 +197,16 @@ await message.AddReactionAsync(
183197
// .WithEmbeds());
184198
}
185199

186-
private async ValueTask<DiscordCardCodeChannel?>
187-
FindDbChannelAsync(ulong channelId)
200+
private async ValueTask<DiscordCardCodeChannel?>
201+
FindDbChannelAsync(ulong? channelId)
188202
{
189203
await using var scope = serviceScopeFactory.CreateAsyncScope();
190204
var cardCodeChannelService = scope.ServiceProvider
191205
.GetRequiredService<DiscordCardCodeChannelService>();
192-
206+
193207
var dbChannel = await cardCodeChannelService
194208
.FindAsync(channelId);
195-
209+
196210
return dbChannel;
197211
}
198212

0 commit comments

Comments
 (0)